我正在制作音频播放器,但我无法在没有任何延迟的情况下更新Seek栏。请试试这个代码并帮助我!
private void updateProgress() { //To update progress of seekbar
long currentPosition = mpintro.getCurrentPosition();
txtstart.setText(String.format("%02d:%02d",
TimeUnit.MILLISECONDS.toMinutes(mpintro.getCurrentPosition()),
TimeUnit.MILLISECONDS.toSeconds(mpintro.getCurrentPosition()) -
TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes((long)
mpintro.getCurrentPosition()))));
seekBar.setProgress((int) currentPosition); //To set seekbar to current position
}
public void playpause()
{
final int delay = 1000; //milliseconds
h.postDelayed(new Runnable(){
public void run() {
updateProgress();
h.postDelayed(this, 1000);
};
}, delay);
}
答案 0 :(得分:2)
将onProgressChanged函数更改为:
@Override
public void onProgressChanged(SeekBar seekBar, int i, boolean fromUser) {
if(fromUser) {
mplayer.seekTo(i);
}
}
这是因为当你的updateProgress功能更新了搜索栏时,它还会触发on onProgressChanged函数,该函数再次改变搜索条和音频滞后。 因此,添加if语句以检查是否仅从用户更改了搜索栏。