我发现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也没有用 - 他没有被称为
这可能是一个错误吗? 感谢。
答案 0 :(得分:0)