1. 程式人生 > >Android關於聲音播放(MediaPlayer)--如何改變播放速率

Android關於聲音播放(MediaPlayer)--如何改變播放速率

喜歡折騰,最近想開發一款可以變速的音樂播放器,先做下技術調研。
百度&谷歌了一下,如果不做底層定製,整個mp3檔案播放在java層可以實現的方法主要是MediaPlayer。
而且,在Android 6.0+(23+)MediaPlayer可以通過setSpeed來改變播放速率
在程式碼中,我們需要:

// 設定音樂播放速度 
// IT老五(簡書ThinkinLiu) http://itlao5.com
public static void changeplayerSpeed(float speed) { 
    if (mPlayer == null)  {
        return; 
    }
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { 
        // API 23 (6.0)以上 ,通過設定Speed改變音樂的播放速率
        if (mPlayer.isPlaying()) {
            // 判斷是否正在播放,未播放時,要在設定Speed後,暫停音樂播放
            mPlayer.setPlaybackParams(mPlayer.getPlaybackParams().setSpeed(speed)); 
        } else {
            mPlayer.setPlaybackParams(mPlayer.getPlaybackParams().setSpeed(speed)); 
            mPlayer.pause(); 
        } 
    } else {
        // 在Android6.0以前,需要另想辦法處理,後續查到好的方法再補充
    }
}

原文:簡書ThinkinLiu 部落格: IT老五
另外還找到 AudioTrack及 OpenGL es相關的內容,明天再看看是否有更好,相容性更高的解決方案。
如果哪位朋友有好的方法,麻煩告知,多謝。