和標題一樣。我不知道該怎麼做。我知道我可以使用如何通過音頻的當前持續時間異步更改SeekBar的進度Android?
mSeekBar.setProgress(mMediaPlayer.getCurrentDuration());
但我不知道如何實現一些偵聽器來監聽當前的持續時間更改。我使用MediaPlayer,該類提供了很多聽衆,但沒有。
和標題一樣。我不知道該怎麼做。我知道我可以使用如何通過音頻的當前持續時間異步更改SeekBar的進度Android?
mSeekBar.setProgress(mMediaPlayer.getCurrentDuration());
但我不知道如何實現一些偵聽器來監聽當前的持續時間更改。我使用MediaPlayer,該類提供了很多聽衆,但沒有。
哦,謝謝。我正在尋找這個解決方案。 – user2511941
在我的應用程序中,我控制服務內的音樂播放。爲了在音樂播放過程中更新我的搜索欄的進度,我創建了一個工作線程,只要MediaPlayer不爲null,並且它的當前位置少於總持續時間,就會向服務索取歌曲的當前進度。然後,我每隔一秒更新一次seekbar的進度,並使用Handler更新旁邊的文本。
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();
}
不幸的是,gomino的答案確實是最好的解決方案。儘管它似乎是必需的 - 在媒體播放器中沒有用於註冊進行更改的API。悲傷但真實。你應該接受@gomino解決方案 –
「悲傷但真實」 - 準確總結:d – user2511941