我的活动每秒播放一次特定的声音效果。 以下代码有效,但有一个错误:偶尔声音每秒播放两次。这种情况每隔一段时间就会发生一次(每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);
}
答案 0 :(得分:0)
找到一个解决方案 - 似乎这是一个已知的SoundPool错误,它有时会播放两次效果。我使用了.wav文件;将文件转换为.ogg似乎可以解决问题。