项目中播放音频的功能, 播放网络音频, 播放过程中 用户拖动进度条快进, 此时我想让播放器直接在用户拖动的位置播放就行, 但是我现在的问题是:Mediaplayer还没有缓冲完成用户就开始拖动了,那进度条立马会回到起始位置,没有起到我上面说的那种效果。不知道咋搞,网上一些例子基本没用,求指点!
项目中播放音频的功能, 播放网络音频, 播放过程中 用户拖动进度条快进, 此时我想让播放器直接在用户拖动的位置播放就行, 但是我现在的问题是:Mediaplayer还没有缓冲完成用户就开始拖动了,那进度条立马会回到起始位置,没有起到我上面说的那种效果。不知道咋搞,网上一些例子基本没用,求指点!
嗯嗯 老哥 这个涉及到的代码有点多了 不知道咋贴出来合适···, 你的原话:“判断是否缓存到用户移动位置时,再进行UI更新” 我看QQ音乐 只要你一拖动 seekBar进度直接显示的是用户拖动的位置,而且此时缓冲的位置也是在用户拖动后的位置开始缓冲了, 就是这块我不清楚咋实现, 下面的方法就是缓冲的回调方法!
@Override
public void onBufferingUpdate(int percent) {
if (percent != 0) {
sbProgress.setSecondaryProgress(sbProgress.getMax() * 100 / percent);
}
}
2 回答1.3k 阅读✓ 已解决
2 回答2.7k 阅读
2 回答1.7k 阅读
1 回答2.1k 阅读
1 回答1.2k 阅读
1 回答1.2k 阅读
1 回答573 阅读✓ 已解决
因为你这个没有代码贴上来所以我只能提供这这种方式让你去试试
第一就是你的用户移动进度是在activity中获取的话可以通过seekbar的监听来获取用户的移动进度传递给MediaPlayer的服务,可以通过在mediaPlayer中的缓存监听中获取缓存进度和用户进度进行比对进行相关的操作判断即可,判断是否缓存到用户移动位置时,再进行UI更新
不过需要注意的是mediaPlayer播放的网络歌曲格式问题,不同的手机支持播放的网络歌曲格式也有不同,有些手机使用meidaPlayer播放某些格式网络歌曲可能会出现移动进度条无法播放导致切换下一首,建议使用谷歌推出的exoplayer