Android Mediaplayer 拖动进度条快进的问题!

项目中播放音频的功能, 播放网络音频, 播放过程中 用户拖动进度条快进, 此时我想让播放器直接在用户拖动的位置播放就行, 但是我现在的问题是:Mediaplayer还没有缓冲完成用户就开始拖动了,那进度条立马会回到起始位置,没有起到我上面说的那种效果。不知道咋搞,网上一些例子基本没用,求指点!

阅读 8.9k
2 个回答

因为你这个没有代码贴上来所以我只能提供这这种方式让你去试试
第一就是你的用户移动进度是在activity中获取的话可以通过seekbar的监听来获取用户的移动进度传递给MediaPlayer的服务,可以通过在mediaPlayer中的缓存监听中获取缓存进度和用户进度进行比对进行相关的操作判断即可,判断是否缓存到用户移动位置时,再进行UI更新

不好意思今天才看到,首先
    if(percent != 0){
        if(此处判断缓存进度是否大于用户移动进度){//为true表示已缓存到用户移动进度位置
            此处进行设置mediaPlayer的进度
        }else if(用户是否移动到末尾){
            切换歌曲
        }else{
            当前未缓存到该进度,展示加载中状态
        }
    }

不过需要注意的是mediaPlayer播放的网络歌曲格式问题,不同的手机支持播放的网络歌曲格式也有不同,有些手机使用meidaPlayer播放某些格式网络歌曲可能会出现移动进度条无法播放导致切换下一首,建议使用谷歌推出的exoplayer

嗯嗯 老哥 这个涉及到的代码有点多了 不知道咋贴出来合适···, 你的原话:“判断是否缓存到用户移动位置时,再进行UI更新” 我看QQ音乐 只要你一拖动 seekBar进度直接显示的是用户拖动的位置,而且此时缓冲的位置也是在用户拖动后的位置开始缓冲了, 就是这块我不清楚咋实现, 下面的方法就是缓冲的回调方法!
@Override

public void onBufferingUpdate(int percent) {
    if (percent != 0) {
        sbProgress.setSecondaryProgress(sbProgress.getMax() * 100 / percent);
    }
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题