根據音樂播放進度實時更新音樂播放器播放進度條

首先要知道 進度條和Toast是可以在子線程跟新和顯示的,因爲他們做了內部處理(用handle把信息傳遞到主線程,在主線程更新,感興趣的去搜一下)。

具體思路是:

首先,定義一個接口(不要定義內部接口)用來更新seekbar,代碼如下

public interface InitplayingPop {
   
void initPlayingPop(int progress);
}

然後,在服務定義一個不斷執行的子線程去得到當前音樂的播放時間,並且執行這個接口(在接口不爲null的情況下),代碼如下

 class SeekBarThread implements Runnable {

    @Override

    public void run() {

        int i = 5;

        while (i > 0) {

            try {

                int currentMent = (int) getCurrentTime();

                         if (initplayingPop != null) {

                    initplayingPop.initPlayingPop(currentMent);

                    }

                Thread.sleep(500);
}

            } catch (InterruptedException e) {

                e.printStackTrace();

            }

        }

        Log.w(TAG, "run: 子線程開始");

    }

   }
然後在主界面實現該接口,並把該接口給服務,完成接口回調,代碼如下
musicService.setInitplayingPop(new InitplayingPop() {

    @Override

    public void initPlayingPop(int progress) {

        popWinPlaying.setProgressToSeekBar(progress);

    }

});
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章