0

就像标题一样。我不知道该怎么做。我知道我可以使用

mSeekBar.setProgress(mMediaPlayer.getCurrentDuration());

但我不知道如何实现一些监听当前持续时间变化的监听器。我使用 MediaPlayer,该类提供了很多听众,但并非如此。

4

2 回答 2

0

有人已经在这里回答了类似的问题

主要思想是使用一个在适当时递归调用自身的处理程序。这是一篇博文,可以帮助您做到这一点

于 2013-06-30T22:55:18.437 回答
0

在我的应用程序中,我在服务中控制音乐播放。为了在播放音乐时更新我的​​搜索栏的进度,我创建了一个工作线程,只要我的 MediaPlayer 不为空并且它的当前位置小于它的总持续时间,它就会向服务询问歌曲的当前进度。然后我每秒更新我的搜索栏的进度,并使用处理程序在它旁边更新文本视图。

public void updateSeekBar() {

    // Worker thread that will update the seekbar as each song is playing
    Thread t = new Thread() {
        Handler handler = new Handler();

        @Override
        public void run() {

            // Log.d(TAG, "Updating Seekbar.....");
            int currentPosition = 0;
            int total = (int) PlayerService.getInstance().getDuration();
            seekBar.setMax(total);
            while (PlayerService.getInstance().mp != null
                    && PlayerService.getInstance().mp.getCurrentPosition() < total) {
                try {

                    Thread.sleep(1000);
                    currentPosition = PlayerService.getInstance().mp
                            .getCurrentPosition();
                } catch (InterruptedException e) {
                    return;
                } catch (Exception e) {
                    return;
                }

                seekBar.setProgress(PlayerService.getInstance().mp
                        .getCurrentPosition());

                handler.post(new Runnable() {

                    @Override
                    public void run() {
                        setTimeLeft();
                        setTime();

                    }
                });

            }

        }

    };
    t.start();

}
于 2013-06-30T23:20:06.767 回答