java - Android Chronometer 倒计时完成

标签 java android xml timer countdowntimer

我正在尝试在我的白噪音应用程序中实现计时器。

应用程序有 4 个按钮可设置不同的曲调,以及 4 个功能按钮:播放/暂停、停止、一小时和三小时。最后两个正在倒计时模式下运行。

private Chronometer chronometer;
private boolean running;
private long pauseOffset;

switch (v.getId()) {
        case R.id.play_button:
            if (choosenAudio.isPlaying()) {
                //logic here
                pauseChronometer();
                break;
            }
            else {
                //logic here
                startChronometer();
                break;
            }

        case R.id.stop_button:
            //logic here
            resetChronometer();
            chronometer.setCountDown(false);
            chronometer.stop();
            break;

        case R.id.one_hour:
            //logic here
            chronometer.setCountDown(true);
            chronometer.setBase(SystemClock.elapsedRealtime() + 3600000);
            pauseOffset = 0;
            chronometer.start();
            break;

        case R.id.three_hours:
            //logic here
            chronometer.setCountDown(true);
            chronometer.setBase(SystemClock.elapsedRealtime() + 10800000);
            pauseOffset = 0;
            chronometer.start();
            break;

        default:
            break;
    }

我的方法:

public void startChronometer() {
    if (!running) {chronometer.setBase(SystemClock.elapsedRealtime() - pauseOffset);
        chronometer.start();
        running = true;
    }

}

public void pauseChronometer() {
    if (running) {
        chronometer.stop();
        pauseOffset = SystemClock.elapsedRealtime() - chronometer.getBase();
        running = false;
    }

}

public void resetChronometer() {
    chronometer.setBase(SystemClock.elapsedRealtime());
    pauseOffset = 0;

}

我的问题:

当倒计时到达 00:00 时,如何检测并执行某些操作(即停止音乐)?

谢谢大家!

最佳答案

使用时必须使用setOnChronometerTickListener这样的监听器

chronometer.setOnChronometerTickListener(new Chronometer.OnChronometerTickListener() {
          @Override
          public void onChronometerTick(Chronometer chronometer) {
              long time = chronometer.getBase();
              //Use this time for finding minute and seconds
           }
     });

关于java - Android Chronometer 倒计时完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55101592/

相关文章:

java - 在部分抽象类中执行接受的泛型类型的方法 - Java

c++ - Qt XML 序列化添加额外的字符

php - 在 PHP 中动态生成的 XML 上使用 XSLT document()

java - JAXB:解码并不总是填充某些类?

java - 谷歌验证码 : How to get user response and validate in the server side?

android - 支持 Android 上文件和内容解密的加密库/算法以及服务器端 (Linux) 加密

java - spring boot + netflix zuul应用程序给出java.lang.ClassNotFoundException : com.netflix.zuul.monitoring.CounterFactory

android - 将 Activity 恢复到其原始方向的正确方法

java - 如何使用 Json 响应显示日期到 Ext Js 列

java - JTextField 无法容纳输入字符