问题在Timer上播放声音

时间:2011-03-14 09:09:35

标签: android

我在屏幕上启动了一个计时器,例如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

1 个答案:

答案 0 :(得分:0)

你使用什么样的计时器? (可能Handler是更好的方法)。如果你不提供细节,很难回答这个问题,但我猜测onTick方法被多次调用。对于millisUntilFinished参数的众多值,您使用的条件将评估为true。例如,您应该确保每秒仅调用一次onTick。另一个解决方案是添加一个布尔类型的标志变量,它将标记正在播放的音频一次。在播放文件之前,您将更改条件以测试此变量是否为false。