定时声音效果通过Handler发生两次

时间:2011-11-16 21:30:16

标签: android

我的活动每秒播放一次特定的声音效果。 以下代码有效,但有一个错误:偶尔声音每秒播放两次。这种情况每隔一段时间就会发生一次(每10-20次尝试一次)。当它发生时,整个活动运行都会发出双重声音,从头到尾。因此,如果我看到活动在没有错误的情况下启动,那么整个活动的运行都会保持这种状态。

以下是相关代码 - 它的问题是什么?谢谢!

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

1 个答案:

答案 0 :(得分:0)

找到一个解决方案 - 似乎这是一个已知的SoundPool错误,它有时会播放两次效果。我使用了.wav文件;将文件转换为.ogg似乎可以解决问题。