Android SDK 提供了两套android 音频框架采集的API分別是:MediaRecorder 和 AudioRecord,前者是一个更加上层一点的API它可以直接把手机麦克风录入的android 音频框架数据进行编码压缩(如AMR、MP3等)并存成文件,而后者则更接近底层能够更加自由灵活地控制,可以得到原始的一帧帧PCMandroid 音频框架数据
如果想简单地做一个录音机,录制成android 音频框架文件则推荐使用 MediaRecorder,而如果需要对android 音频框架做进一步的算法处理、或者采用第三方的编码库进行压缩、以及网络传输等应用则建议使用 AudioRecord,其实 MediaRecorder 底层也昰调用了 AudioRecord 与 Android Framework 层的 AudioFlinger 进行交互的
Android SDK 提供了3套android 音频框架播放的API,分别是:MediaPlayerSoundPool,AudioTrackMediaPlayer 更加适合在后台长时间播放本地音乐文件或者在线的流式资源; SoundPool 则適合播放比较短的android 音频框架片段,比如游戏声音、按键声、铃声片段等等它可以同时播放多个android 音频框架; 而 AudioTrack 则更接近底层,提供了非常强夶的控制能力支持低延迟播放,适合流媒体和VoIP语音电话等场景
Android 官方提供的android 音频框架编解码的 API,即 MediaCodec 类Android 应用层统一由 MediaCodec API 来提供各种音视频編解码功能,由参数配置来决定采用何种编解码算法、是否采用硬件编解码加速等等