就像标题一样。我不知道该怎么做。我知道我可以使用
mSeekBar.setProgress(mMediaPlayer.getCurrentDuration());
但我不知道如何实现一些监听当前持续时间变化的监听器。我使用 MediaPlayer,该类提供了很多听众,但并非如此。
就像标题一样。我不知道该怎么做。我知道我可以使用
mSeekBar.setProgress(mMediaPlayer.getCurrentDuration());
但我不知道如何实现一些监听当前持续时间变化的监听器。我使用 MediaPlayer,该类提供了很多听众,但并非如此。
有人已经在这里回答了类似的问题
主要思想是使用一个在适当时递归调用自身的处理程序。这是一篇博文,可以帮助您做到这一点。
在我的应用程序中,我在服务中控制音乐播放。为了在播放音乐时更新我的搜索栏的进度,我创建了一个工作线程,只要我的 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();
}