MediaPlayer start-> stop->为MIDI文件启动

时间:2013-04-20 13:16:43

标签: android android-mediaplayer

我发现MediaPlayer存在问题,尝试为MIDI文件执行下一个序列start() - > stop() - > start()会给我一个错误。

通过查看MediaPlayer state diagram,序列应该与下一个代码一起使用:

void experiment() throws IllegalArgumentException, SecurityException, IllegalStateException, IOException {
    Context context = this;
    int resid = R.raw.teddybear;
    String packageName = getResources().getResourcePackageName(resid);
    Uri uri = Uri.parse("android.resource://" + packageName + "/"  + resid);
    MediaPlayer mp = new MediaPlayer();
    mp.setDataSource(context, uri);
    mp.prepare();
    mp.start();
    mp.stop();
    mp.prepare();
    mp.start();
}

以下是从第二次准备调用得到的错误:

java.io.IOException:准备失败:status = 0xFFFFFFFD

其他声音文件不存在此问题。

是否还有人遇到这种情况?我做错了吗?

我不想找到合适的地方 - 得到了很多:)

事情尝试了:

  • 删除停止并停止& prepare& start可以播放此流。

  • 我听说MediaPlayer没有立即更新其状态,所以我在方法之间添加了睡眠 - 仍然是同样的问题。

  • 更改文件类型解决了问题。

  • 尝试多个MIDI文件会产生相同的结果。

  • 注册OnError也没有用 - 他没有被称为

这可能是一个错误吗? 感谢。

1 个答案:

答案 0 :(得分:0)

  1. 正如您所说:更改文件类型解决了问题。
  2. 试用SoundPool