0

我看到 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 也没有奏效——他没有被叫到

难道这是一个错误?谢谢。

4

1 回答 1

0
  1. 正如您所说:更改文件类型解决了这个问题。
  2. 试试 SoundPool
于 2013-05-31T03:10:20.117 回答