2012-06-18 217 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