我必须在GUI事件上播放声音,例如单击按钮等。为此,我从 WebView 调用以下本机代码:
MediaPlayer _SoundPlayer = new MediaPlayer();
private void playSound(String sound)
{
_SoundPlayer.reset();
try
{
AssetFileDescriptor afd = getAssets().openFd("sound/" + sound + ".mp3");
_SoundPlayer.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());
_SoundPlayer.prepare();
_SoundPlayer.start();
}
catch (Exception e) { }
}
问题是事件和声音之间存在~500ms的延迟。我可以以某种方式优化播放声音,也许,为每种声音创建一个专用的 MediaPlayer 实例?
问候
使用 SoundPool
进行低延迟媒体播放,而不是MediaPlayer
。
我看到这已经有一个公认的答案,但我想补充一点,目前还没有完整的解决方案:Android 目前具有非常大的音频延迟。 开发人员仍在等待一个好的解决方案。
此问题涉及 NDK,但问题是一般性的:
http://code.google.com/p/android/issues/detail?id=3434