安卓媒体播放器延迟

3
我正在为Android制作一款游戏,需要在用户触摸特定对象时播放短促的蜂鸣声。
为此,我有一个简单的代码来创建媒体播放器。beep是一个约1.5秒长的小.ogg文件。
MediaPlayer mp = MediaPlayer.create(getContext(), R.raw.beep);
mp.setVolume(0.5f, 0.5f);

并像这样使用它

mp.start();

我遇到的问题是我的游戏使用了Android画布(canvas),并且绘制到画布的线程也调用了mp.start()。我发现播放声音需要相当长的时间,而且所需时间也不稳定,有时为1毫秒,有时为15毫秒。这似乎导致我的游戏有点卡顿,因为Android画布本来就比较慢。

我查看了日志,没有发现垃圾回收引起的延迟。我想知道是否有人可以给我一些建议来减少这种延迟。

编辑 - 我刚刚发现MediaPlayer适用于较长的声音文件,而SoundPool适用于较短的音频文件。然而,我只在mediaPlayer中加载文件一次,所以我不知道它应该有什么区别。不过我会测试一下。

1个回答

1

抱歉我的英语不好

使用SoundPool代替MediaPlayer,因为每次调用后需要释放内存,或者在每次播放器调用后调用方法mp.release()

这里有SoundPool教程


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接