2015-09-14 54 views
0

我試圖從ListView播放音樂(它從文件路徑獲取數據)。但每次點擊時,都會出現如下錯誤:MediaPlayer無法播放SD存儲中的音樂

09-14 09:58:42.996 1229-1276 /? W/AudioTrack:被客戶端拒絕的AUDIO_OUTPUT_FLAG_FAST

即使我直接使用文件路徑,它仍然不起作用。 這裏是我的代碼:

private MediaPlayer mMediaPlayer; 
private File dir = new File(Environment.getExternalStorageDirectory() + "/MyOwnMusicFolder"); 
private File[] files; 

public void playSong(int position){ //position of the item in the ListView 
    if(mMediaPlayer !=null) { 
     if(mMediaPlayer.isPlaying()){ 
      mMediaPlayer.pause(); 
     } 

     try { 


      mMediaPlayer.setDataSource(dir + File.separator + files[position].getName()); 
      mMediaPlayer.prepare(); 
      mMediaPlayer.start(); 
     } 
     catch (IOException e){ 
    //something... 
     } 

    } 
} 

編輯:我使用過Android Studio + Android的工作室模擬器

編輯2:我的MP3文件是完全正常的

+0

做您已經閱讀權限? – MetaSnarf

+0

@MetaSnarf是的,我確實有它 –

+0

你得到你的代碼的一部分做錯誤?請發佈您的堆棧跟蹤 – MetaSnarf

回答

0

「最有可能的踢踏聲了AUDIO_OUTPUT_FLAG_FAST是爲了儘可能使用低延遲播放,但AudioTrack類認爲音軌設置與低延遲音頻輸出不兼容,所以標誌被刪除,並且曲目被當作標誌沒有被處理過因此我不會認爲這是需要擔心的事情。

至於國旗被拒絕的原因;我仍然認爲最可能的原因是採樣率不匹配。您鏈接到的問題中的日誌似乎已添加到AOSP的此提交中。但是如果我們看一下the master branch of the code base used on many Qualcomm-based devices,我們發現在採樣率不匹配的情況下,它仍然存在「AUDIO_OUTPUT_FLAG_FAST被客戶端拒絕」日誌。它記錄你依賴於準確的implemetation您的設備上運行(即,設備和Android版本,你正在運行)「。

了答案學分取自here。邁克爾

這最喜歡的是由引起在採樣率不匹配,如果它是一個實際的設備上運行,應該不會影響程序運行。Ref:

+0

所以...我需要做的就是在實際設備上運行它? –

相關問題