歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

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

眾所周知,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.   
  3.     int mFrequency;                 // 采樣率   
  4.       
  5.     int mChannel;                   // 聲道   
  6.       
  7.     int mSampBit;                   // 采樣精度   
  8.       
  9. }  

 

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