Завершение обратного отсчета хронометра Android

Я пытаюсь внедрить таймер в свое приложение белого шума.

Приложение имеет 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?

Спасибо вам всем!

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
0
632
1

Ответы 1

использовать должен использовать setOnChronometerTickListener слушатель, как это

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

как это помогает?

ghita 27.02.2020 17:31

Другие вопросы по теме