Android开发:使用AudioTrack播放PCM音频数据【附源码】
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设置数据源,音频参数等,最后执行播放,暂停,停止等操作
贴上部分类代码片段:
- public class AudioParam {
- int mFrequency; // 采样率
- int mChannel; // 声道
- int mSampBit; // 采样精度
- }
- public interface PlayState {
- public static final int MPS_UNINIT = 0; // 未就绪
- public static final int MPS_PREPARE = 1; // 准备就绪(停止)
- public static final int MPS_PLAYING = 2; // 播放中
- public static final int MPS_PAUSE = 3; // 暂停
- }
|
评论暂时关闭