开发过程中总是会碰到一些“什么鬼,原来这么简单”等等的问题,比如今天碰到
Android MediaPlayer+SeekBar播放音频出现卡顿可能问题?
代码段一:
seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
if (fromUser) {// 注意点
try {
if (!mPlayer.isPlaying()) {
try {
mPlayer.reset();
mPlayer.setDataSource(mediaFile.toString());
mPlayer.prepareAsync();
// mPlayer.prepare();
mPlayer.start();
} catch (IllegalStateException | IOException e) {
e.printStackTrace();
}
}
mPlayer.seekTo(seekBar.getProgress());
} catch (IllegalStateException e) {
e.printStackTrace();
}
}
}
});
因为在实现播放的过程中,进度条进行不断的刷新如:
currentPosition = mPlayer.getCurrentPosition();
seekBar.setProgress(currentPosition);然而在代码段一中,在播放的过程中,seekBar不断监听到进度变化public voidonProgressChanged(SeekBar seekBar,intprogress,booleanfromUser) {}如果没有加入if(fromUser) {}(判断是否来自用户操作)这层判断的话,不断执行如下代码:try {
mPlayer.reset();
mPlayer.setDataSource(mediaFile.toString());
mPlayer.prepareAsync();
// mPlayer.prepare();
mPlayer.start();
} catch (IllegalStateException | IOException e) {
e.printStackTrace();
}音频播放就会产生卡顿!什么鬼,原来这么简单!
如果觉得《android 播放音乐卡顿 Android MediaPlayer+SeekBar播放音频出现卡顿边长可能问题》对你有帮助,请点赞、收藏,并留下你的观点哦!