2013-05-12 116 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

相关问题