我正在使用CountDownTimer。我想在特定时间播放声音,仅供引用。好了,这是我的代码:

@Override
        public void onTick(long l) {


            if((TimeUnit.MILLISECONDS.toSeconds(l) -
                    TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(l))) == 10){
                 reproducirAviso();
            }

            tiempo.setText(String.format("%02d:%02d", TimeUnit.MILLISECONDS.toMinutes(l),
                    TimeUnit.MILLISECONDS.toSeconds(l) -
                            TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(l))));

        }

怎么了?多次调用方法“reproducirAviso()”,声音断断续续地播放...
我该怎么做才能解决这个问题?
提前谢谢了!!!

最佳答案

如果您不想多次调用reproducirAviso(),请添加一个标志以检查是否已在运行reproducirAviso()。

例如,在某处设置静态 bool(boolean) 值,例如

public static boolean reproducing = false;

public void reproducirAviso()
{
    //
    // lots of your code
    //
    reproducing = false;
}

所以你的代码变成
@Override
public void onTick(long l)
{
    if(!reproducing && (TimeUnit.MILLISECONDS.toSeconds(l) -
            TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(l))) == 10){
         reproducirAviso();
    }

    tiempo.setText(String.format("%02d:%02d", TimeUnit.MILLISECONDS.toMinutes(l),
            TimeUnit.MILLISECONDS.toSeconds(l) -
                    TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(l))));

}

07-27 14:01