2013-05-12 117 views
3

我在播放Android上的外部MP3文件時遇到問題。我使用下面的代碼:Android播放外部MP3:錯誤 - MediaPlayer開始呼叫狀態1

MediaPlayer player = new MediaPlayer(); 
try { 
    BufferedInputStream bis = new BufferedInputStream(new java.net.URL(url).openStream()); 
    FileOutputStream fos = new FileOutputStream(Environment.getExternalStorageDirectory().getPath() + "/forvo_temp.mp3"); 
    BufferedOutputStream bos = new BufferedOutputStream(fos,1024); 
    byte [] data = new byte[1024]; 

    int x=0; 
    while((x=bis.read(data,0,1024))>=0){ 
     bos.write(data,0,x);    
    } 
    player.reset(); 
    player.start(); 

} catch (Exception e) { 
    e.printStackTrace(); 
} 

url就是外部文件是字符串。我確實有SD卡的寫入權限(WRITE_EXTERNAL_STORAGE)。

在調試,我看到:

E MediaPlayer start called in state 1 
E MediaPlayer error (-38, 0) 
E MediaPlayer Error (-38,0) 

什麼可能的問題是什麼?

回答

7

找到答案:在致電player.start()之前,您必須根據State Diagram of the MediaPlayer reference運行setDataSource()prepare()

像這樣:

// Use same path as before 
player.setDataSource(Environment.getExternalStorageDirectory().getPath() + "/forvo_temp.mp3"); 
player.prepare(); 
+0

但仍然沒有我的情況下工作。 – 2013-09-17 05:35:40

+0

@Ohh如果您有其他問題,請點擊[Ask Question](問問題)(http://stackoverflow.com/questions/ask)按鈕。您可以在此處提供新問題的鏈接以供參考。 – Keelan 2013-09-17 07:19:36

-4

您需要設置權限AndroidManifest.xml爲:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> 
+1

這不是一個答案;我在問題中說過我已經這樣做了。 – Keelan 2016-06-29 14:48:12

+0

你能解釋一下嗎? – 2016-08-19 03:47:24

相關問題