2013-12-14 172 views
2

當使用帶有上下文和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」對我來說,有什麼事情我的錯誤?

感謝您的幫助。

回答

0

你應該採取的logcat看看。就我而言,我必須插入兩個權限:

android.permission.READ_EXTERNAL_STORAGE android.permission.MANAGE_DOCUMENTS