安卓录音方法
核心类名 | 主要方法(录音相关) | 场景 | |
---|---|---|---|
android.media. AudioRecord | mAudioRecord = new AudioRecord.Builder().setAudioFormat(format).setAudioSource(MediaRecorder.AudioSource.VOICE_RECOGNITION).setBufferSizeInBytes(minBufferSize * 2).build(); - startRecording() | 1. 实时语音处理场景(如语音识别、语音唤醒、实时降噪) | 检查录音权限占用状态,通过尝试初始化判断资源是否可用 1. 初始化前检查 |
android.media. MediaRecorder | mRecorder = new MediaRecorder(); mRecorder.setAudioSource(MediaRecorder.AudioSource.VOICE_COMMUNICATION); - setAudioSource(int audioSource) | 1. 简单录音场景(如语音备忘录、语音留言) | 依赖系统自动资源管理,通过异常捕获判断冲突 1. 在 |
AAudio AudioStreamBuilder | - setDirection(int direction) | 1. 低延迟录音场景(如乐器演奏录音、实时音频效果器) | 明确指定共享模式,通过返回码判断冲突,支持更精细的冲突处理 1. 构建流时设置 |
AudioStream | - open() | ||
Oboe | 开发者应考虑使用开源 Oboe 库,这个库可在 GitHub 上获得。Oboe 是一个 C++ 封装容器,提供与 AAudio 非常相似的 API。该封装容器在 AAudio 可用时对其进行调用,并在 AAudio 不可用时回退到 OpenSL ES | ||
MediaCodec | MIME_TYPE = "audio/mp4a-latm"; mEncoder = MediaCodec.createEncoderByType(MIME_TYPE); mEncoder.configure(format, null, null, MediaCodec.CONFIGURE_FLAG_ENCODE); - configure(MediaFormat format, Surface surface, MediaCrypto crypto, int flags) | 1. 自定义音频编码场景(如指定特殊比特率、采样率的 AAC 编码) | 完全依赖系统处理冲突,应用层无控制能力 1. 与 |