在使用带有上下文和uri的setDatasource时,我无法在android上运行mediaplayer。
好吧,我有这个音乐播放器服务:Uri uri = result.get(0).getURI();
String uri2Path = uri.getPath();
mPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mPlayer.setDataSource(uri2Path);
//Prepare async playing of media, mediaplayer.start() is called in onPrepared override
mPlayer.prepareAsync();
我还试图将Datasource设置为String和
两个路径mPlayer.SetDataSource(this.getApplicationContext(), uri);
设置上下文和uri我收到ioException并且logcat显示“无法创建媒体播放器”,当我使用字符串设置数据源时我从MediaPlayer获得错误(1,-2147483648)。 设置硬编码路径“sdcard / test.mp3”效果很好。
我通过android.provider.MediaStore接收媒体文件并将它们保存在List中。 AudioItem解析了Uri:
public class AudioItem
{
long id;
String artist;
String title;
String album;
long duration;
public AudioItem(long id, String artist, String title, String album, long duration) {
this.id = id;
this.artist = artist;
this.title = title;
this.album = album;
this.duration = duration;
}
public long getId() {
return id;
}
public String getArtist() {
return artist;
}
public String getTitle() {
return title;
}
public String getAlbum() {
return album;
}
public long getDuration() {
return duration;
}
public Uri getURI() {
return ContentUris.withAppendedId(
android.provider.MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, id);
}
}
当看到uri在调试器中播放时,它似乎是一个有效的uri“content:// media / external / audio / media / 12”给我,我的错误是什么?
感谢您的帮助。
答案 0 :(得分:0)
这是一个类似的例子,尝试下载并导入它。
答案 1 :(得分:0)
你应该看看Logcat。就我而言,我必须插入两个权限:
android.permission.READ_EXTERNAL_STORAGE android.permission.MANAGE_DOCUMENTS