天天看點

Android 實作倒計時停止播放音樂功能

任務描述:

做音樂播放器的時候,需要實作一個定時停止播放的功能

是以需要實作倒計時,事件到了後通知service暫停音樂播放

解決方案:

使用了CountDownTimer,其構造函數如下:

CountDownTimer(long millisInFuture, long countDownInterval)

  • millisInFuture是倒計時的總時間,機關是ms
  • countDownInterval是回調public void onTick(long millisUntilFinished)方法的事件間隔,此方法的參數millisUntilFinished是設定的倒計時剩餘時間
  • 此外還有一個回調方法public void onFinish()是倒計時結束的時候調用的
  • 啟動定時器:countDownTimer.start();
  • 不再使用時記得撤銷定時器:countDownTimer.cancel();

Code:

//倒計時任務
CountDownTimer countDownTimer = new CountDownTimer(input_time * 60 * 1000, 1000) {
    @Override
    public void onTick(long millisUntilFinished) {
        rest_of_time = (double) millisUntilFinished / 1000.0 / 60.0;
    }

    @Override
    public void onFinish() {
        sendBroadcastOnCommand(MusicService.COMMAND_PAUSE);
    }
};
countDownTimer.start();
           

擴充:

實作倒計時還可以使用其他方法

  1. 使用Timer

    schedule(TimerTask task, Date firstTime, long period)

    三個參數分别是:

    要執行的任務

    第一次執行時延遲的時間

    以後每次執行的周期

    三個參數可以少寫,Timer類内部有重載

Timer timer = new Timer();
timer.schedule(new TimerTask() {
    @Override
    public void run() {
        //doSomething
    }
}, 1000);
           
  1. 使用handler,它可以延遲一段時間後發送message