2011-11-16 31 views
1

我的活動每秒播放一次特定音效。 以下代碼有效,但存在一個錯誤:偶爾聲音每秒鐘播放兩次。這隻會偶爾發生一次(每10-20次嘗試一次)。當它發生時,整個運行過程中會發生雙重聲音,開始結束。所以,如果我看到這個活動沒有發現錯誤,它就會保持整個活動的運行狀態。通過Handler發生兩次定時音效

下面是相關的代碼 - 它有什麼問題?謝謝!

private Handler mHandler = new Handler(); 

    @Override 
protected void onResume() { 
    super.onResume();  
    mHandler.removeCallbacks(mUpdateTimeTask); 
    mHandler.post(mUpdateTimeTask); 
} 

@Override 
protected void onPause() {   
    // Another activity is taking focus (this activity is about to be "paused"). 
    mHandler.removeCallbacks(mUpdateTimeTask); 
    super.onPause(); 
} 

private Runnable mUpdateTimeTask = new Runnable() { 
    public void run() { 
     PlayTick();      
     mHandler.removeCallbacks(this); 
     mHandler.postDelayed(this, 1000); 
    } 
}; 

    public void PlayTick() { 
    AudioManager audioManager = (AudioManager) getSystemService(AUDIO_SERVICE); 
float actualVolume = (float) audioManager.getStreamVolume(AudioManager.STREAM_MUSIC); 
float maxVolume = (float) audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC); 
float volume = actualVolume/maxVolume; 
soundPool.play(soundID, volume, volume, 1, 0, 1f); 
    } 

回答

0

找到了一個解決方案 - 看起來這是一個已知的SoundPool錯誤,它有時會起到兩次效果。我使用了.wav文件;將該文件轉換爲.ogg似乎可以解決該問題。