我在屏幕上启动了一个计时器,例如20秒。
当剩余时间为5秒时,我正在发出哔哔声。 问题是声音被播放多次(3-4次),而我需要一次嘟嘟声。音频文件的持续时间为0.09秒。
请在下面找到代码
public void onTick(long millisUntilFinished) {
long timeLeft = millisUntilFinished / 1000;
if (timeLeft == 5) {
playAlertSound(R.raw.beep);
}
}
private MediaPlayer mPlayer;
public void playAlertSound(int sound) {
MediaPlayer mp = MediaPlayer.create(getBaseContext(), sound);
mp.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
// TODO Auto-generated method stub
mp.release();
}
});
// and add the setLooping and setVolume calls here..
mp.setLooping(false);
mp.setVolume(1.0f, 1.0f);
mp.start(); // to here..
}
请提供您的输入/建议,问题在哪里
提前致谢。
温暖的问候,
CB
答案 0 :(得分:0)
你使用什么样的计时器? (可能Handler是更好的方法)。如果你不提供细节,很难回答这个问题,但我猜测onTick方法被多次调用。对于millisUntilFinished参数的众多值,您使用的条件将评估为true。例如,您应该确保每秒仅调用一次onTick。另一个解决方案是添加一个布尔类型的标志变量,它将标记正在播放的音频一次。在播放文件之前,您将更改条件以测试此变量是否为false。