Android开发:使用AudioTrack播放PCM音频数据【附源码】


众所周知,Android的MediaPlayer包含了Audio和video的播放功能,在Android的界面上,Music和Video两个应用程序都是调用MediaPlayer实现的。MediaPlayer在底层是基于OpenCore(PacketVideo)的库实现的,为了构建一个MediaPlayer程序,上层还包含了进程间通讯等内容,这种进程间通讯的基础是Android基本库中的Binder机制。但是该类只能对完整的音频文件进行操作,而不能直接对纯PCM音频数据操作。假如我们通过解码得到PCM数据源,又当如何将它们播放?没错,就是用AudioTrack这个类(MediaPlayer内部也是调用该类进行真正的播放音频流操作)下面这个DEMO演示了如何使用AudioTrack来播放PCM音频数据。

废话不多说,先上效果图:

使用AudioTrack播放PCM音频数据(Android)

工程代码结构也较为简单:

简单说下思路,先把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. }  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 下一页

相关内容