我看到 MediaPlayer 有问题,尝试对 MIDI 文件执行下一个序列 start()->stop()->start() 给我一个错误。
通过查看MediaPlayer 状态图,该序列应该与下一个代码一起使用:
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 也没有奏效——他没有被叫到
难道这是一个错误?谢谢。