【问题标题】:MediaPlayer start->stop->start for MIDI filesMediaPlayer start->stop->start for MIDI 文件
【发布时间】: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


    【解决方案1】:
    1. 如您所说:更改文件类型解决了问题。
    2. 试试 SoundPool

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-23
      • 2013-01-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多