失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > android 播放音乐卡顿 Android MediaPlayer+SeekBar播放音频出现卡顿边长可能问题

android 播放音乐卡顿 Android MediaPlayer+SeekBar播放音频出现卡顿边长可能问题

时间:2023-08-26 13:53:30

相关推荐

android 播放音乐卡顿 Android MediaPlayer+SeekBar播放音频出现卡顿边长可能问题

开发过程中总是会碰到一些“什么鬼,原来这么简单”等等的问题,比如今天碰到

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播放音频出现卡顿边长可能问题》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。