更新搜索栏时滞后声音

时间:2017-06-16 09:18:18

标签: android seekbar

我正在制作音频播放器,但我无法在没有任何延迟的情况下更新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);
    }

1 个答案:

答案 0 :(得分:2)

将onProgressChanged函数更改为:

@Override
public void onProgressChanged(SeekBar seekBar, int i, boolean fromUser) {
    if(fromUser) {
        mplayer.seekTo(i);
    }
}

这是因为当你的updateProgress功能更新了搜索栏时,它还会触发on onProgressChanged函数,该函数再次改变搜索条和音频滞后。 因此,添加if语句以检查是否仅从用户更改了搜索栏。