歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android開發:使用AudioTrack播放PCM音頻數據【附源碼】

Android開發:使用AudioTrack播放PCM音頻數據【附源碼】

日期:2017/3/1 10:19:20   编辑:Linux編程

眾所周知,Android的MediaPlayer包含了Audio和video的播放功能,在Android的界面上,Music和Video兩個應用程序都是調用MediaPlayer實現的。MediaPlayer在底層是基於OpenCore(PacketVideo)的庫實現的,為了構建一個MediaPlayer程序,上層還包含了進程間通訊等內容,這種進程間通訊的基礎是Android基本庫中的Binder機制。但是該類只能對完整的音頻文件進行操作,而不能直接對純PCM音頻數據操作。假如我們通過解碼得到PCM數據源,又當如何將它們播放?沒錯,就是用AudioTrack這個類(MediaPlayer內部也是調用該類進行真正的播放音頻流操作)下面這個DEMO演示了如何使用AudioTrack來播放PCM音頻數據。

廢話不多說,先上效果圖:

工程代碼結構也較為簡單:

簡單說下思路,先把PCM音頻數據從指定的路徑文件讀到內存,然後給AudioPlayer設置數據源,音頻參數等,最後執行播放,暫停,停止等操作

貼上部分類代碼片段:

  1. public class AudioParam {
  2. int mFrequency; // 采樣率
  3. int mChannel; // 聲道
  4. int mSampBit; // 采樣精度
  5. }

  1. public interface PlayState {
  2. public static final int MPS_UNINIT = 0; // 未就緒
  3. public static final int MPS_PREPARE = 1; // 准備就緒(停止)
  4. public static final int MPS_PLAYING = 2; // 播放中
  5. public static final int MPS_PAUSE = 3; // 暫停
  6. }
Copyright © Linux教程網 All Rights Reserved