鍍金池/ 問答/Android  網(wǎng)絡(luò)安全/ Android Mediaplayer 拖動(dòng)進(jìn)度條快進(jìn)的問題!

Android Mediaplayer 拖動(dòng)進(jìn)度條快進(jìn)的問題!

項(xiàng)目中播放音頻的功能, 播放網(wǎng)絡(luò)音頻, 播放過程中 用戶拖動(dòng)進(jìn)度條快進(jìn), 此時(shí)我想讓播放器直接在用戶拖動(dòng)的位置播放就行, 但是我現(xiàn)在的問題是:Mediaplayer還沒有緩沖完成用戶就開始拖動(dòng)了,那進(jìn)度條立馬會(huì)回到起始位置,沒有起到我上面說的那種效果。不知道咋搞,網(wǎng)上一些例子基本沒用,求指點(diǎn)!

回答
編輯回答
半心人

嗯嗯 老哥 這個(gè)涉及到的代碼有點(diǎn)多了 不知道咋貼出來合適···, 你的原話:“判斷是否緩存到用戶移動(dòng)位置時(shí),再進(jìn)行UI更新” 我看QQ音樂 只要你一拖動(dòng) seekBar進(jìn)度直接顯示的是用戶拖動(dòng)的位置,而且此時(shí)緩沖的位置也是在用戶拖動(dòng)后的位置開始緩沖了, 就是這塊我不清楚咋實(shí)現(xiàn), 下面的方法就是緩沖的回調(diào)方法!
@Override

public void onBufferingUpdate(int percent) {
    if (percent != 0) {
        sbProgress.setSecondaryProgress(sbProgress.getMax() * 100 / percent);
    }
}
2017年2月24日 17:18
編輯回答
爛人

因?yàn)槟氵@個(gè)沒有代碼貼上來所以我只能提供這這種方式讓你去試試
第一就是你的用戶移動(dòng)進(jìn)度是在activity中獲取的話可以通過seekbar的監(jiān)聽來獲取用戶的移動(dòng)進(jìn)度傳遞給MediaPlayer的服務(wù),可以通過在mediaPlayer中的緩存監(jiān)聽中獲取緩存進(jìn)度和用戶進(jìn)度進(jìn)行比對(duì)進(jìn)行相關(guān)的操作判斷即可,判斷是否緩存到用戶移動(dòng)位置時(shí),再進(jìn)行UI更新

不好意思今天才看到,首先
    if(percent != 0){
        if(此處判斷緩存進(jìn)度是否大于用戶移動(dòng)進(jìn)度){//為true表示已緩存到用戶移動(dòng)進(jìn)度位置
            此處進(jìn)行設(shè)置mediaPlayer的進(jìn)度
        }else if(用戶是否移動(dòng)到末尾){
            切換歌曲
        }else{
            當(dāng)前未緩存到該進(jìn)度,展示加載中狀態(tài)
        }
    }

不過需要注意的是mediaPlayer播放的網(wǎng)絡(luò)歌曲格式問題,不同的手機(jī)支持播放的網(wǎng)絡(luò)歌曲格式也有不同,有些手機(jī)使用meidaPlayer播放某些格式網(wǎng)絡(luò)歌曲可能會(huì)出現(xiàn)移動(dòng)進(jìn)度條無(wú)法播放導(dǎo)致切換下一首,建議使用谷歌推出的exoplayer

2017年10月17日 12:43