眾所周知,Android的MediaPlayer包含了Audio和video的播放功能,在Android的界面上,Music和Video兩個應用程序都是調用MediaPlayer實現的。MediaPlayer在底層是基於OpenCore(PacketVideo)的庫實現的,為了構建一個MediaPlayer程序,上層還包含了進程間通訊等內容,這種進程間通訊的基礎是Android基本庫中的Binder機制。但是該類只能對完整的音頻文件進行操作,而不能直接對純PCM音頻數據操作。假如我們通過解碼得到PCM數據源,又當如何將它們播放?沒錯,就是用AudioTrack這個類(MediaPlayer內部也是調用該類進行真正的播放音頻流操作)下面這個DEMO演示了如何使用AudioTrack來播放PCM音頻數據。
廢話不多說,先上效果圖:
工程代碼結構也較為簡單:
簡單說下思路,先把PCM音頻數據從指定的路徑文件讀到內存,然後給AudioPlayer設置數據源,音頻參數等,最後執行播放,暫停,停止等操作
貼上部分類代碼片段: