2012-06-18 76 views
4

后,我必须在GUI事件播放声音,如单击按钮等。为此,我呼吁来自的WebView以下本地代码:Android的播放声音延迟

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) { } 
} 

的问题是有延迟〜事件和声音之间为500毫秒。我能否以某种方式优化播放声音,也许是为每种声音创建专用的MediaPlayer实例?

问候,

回答

6

使用SoundPool低延迟媒体播放,而不是MediaPlayer

+0

是的,但你仍然可以在启动延迟为100ms看看音频硬件已经废弃足够长的时间来关闭(臭名昭着的音频抛掷延迟信息) –

4

我看到这已经有一个可以接受的答案,但我会补充说,目前还没有完整的解决方案:Android目前有非常大的音频延迟。 Devs仍在等待一个好的解决方案。

这个问题指的是NDK,但问题是一般:

http://code.google.com/p/android/issues/detail?id=3434

+0

坦率地说,SoundPool的性能看起来也不尽如人意。但它有点更好,答案被接受为开发人员在应用程序中处理多种声音的一般方向。 – noober