【问题标题】:Android playing external MP3: error -- MediaPlayer start called in state 1Android 播放外部 MP3:错误 -- MediaPlayer start 在状态 1 中调用
【发布时间】:2013-05-12 19:28:25
【问题描述】:

我在 Android 上播放外部 MP3 文件时遇到问题。我正在使用以下代码:

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)

可能是什么问题?

【问题讨论】:

    标签: java android mp3 runtime-error android-mediaplayer


    【解决方案1】:

    找到答案:在调用player.start()之前,你必须运行setDataSource()prepare(),根据State Diagram of the MediaPlayer reference

    像这样:

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

    【讨论】:

    • @Ohh 如果您还有其他问题,请点击 按钮提问。您可以在此处提供新问题的链接以供参考。
    【解决方案2】:

    您需要将AndroidManifest.xml权限设置为:

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

    【讨论】:

    • 这不是答案;我在问题中说我已经这样做了。
    猜你喜欢
    • 2017-06-11
    • 1970-01-01
    • 1970-01-01
    • 2011-05-21
    • 1970-01-01
    • 2011-06-25
    • 2011-11-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多