當使用帶有上下文和uri的setDatasource時,我無法在android上運行mediaplayer。android無法創建媒體播放器
好,我有這個musicplayer服務,它的作用:
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();
我也試圖設置數據源與兩個路徑字符串和
mPlayer.SetDataSource(this.getApplicationContext(), uri);
與上下文和URI我收到設置ioException和logcat顯示「無法創建媒體播放器」,當我設置數據源與字符串我得到一個錯誤(1,-2147483648)從MediaPlayer。 設置硬編碼路徑「sdcard/test.mp3」效果很好。
我通過android.provider.MediaStore接收媒體文件,並將它們保存在列表中。 AudioItem解決了烏里:
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「內容://媒體/外部/音頻/媒體/ 12」對我來說,有什麼事情我的錯誤?
感謝您的幫助。