【发布时间】:2013-04-20 13:16:43
【问题描述】:
我发现 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:准备失败。:状态=0xFFFFFFFD
其他声音文件不存在此问题。
有人也遇到这种情况吗?我是不是做错了什么?
我不是想到处走走——有很多:)
尝试过的事情:
移除 stop 和 stop&prepare&start 允许播放此流。
我听说 MediaPlayer 不会立即更新其状态,所以我在方法之间添加了 sleep - 仍然是同样的问题。
更改文件类型解决了问题。
尝试多个 MIDI 文件会产生相同的结果。
注册 OnError 也没有用 - 他没有被调用
这可能是一个错误吗? 谢谢。
【问题讨论】:
标签: android android-mediaplayer