我正在使用MediaPlayer在Android中播放音频。 MediaPlayer
正常工作,但是当我使用随音频持续时间更新的SeekBar时,音频播放不流畅,并在播放时中断。以下是我的代码段供参考。
mSongSeekBar.setMax(mMediaPlayer.getDuration());
mSongSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
mMediaPlayer.seekTo(progress);
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
});
new Timer().scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
mSongSeekBar.setProgress(mMediaPlayer.getCurrentPosition());
}
}, 0, 500);
此行为的原因是什么?如何摆脱这个?我应该使用Timer的替代方法吗?
您也可以考虑覆盖onStartTrackingTouch
和onStopTrackingTouch
方法。因为当您拖动搜索栏时,经常会调用onProgressChanged
,并且每次尝试将媒体播放器设置为从特定位置播放时,都会出现音频破裂或破裂的情况。
我建议在拖动搜索栏时暂时暂停媒体播放器,并在完成拖动后恢复音频。上面提到的方法可能会帮助您实现这些行为。