如何在 Android 中选择物理麦克风和录音路径

问题描述

我正在开发一个应用,用于记录来自设备麦克风的音频输入。我们希望录制未经处理的/原始音频(即没有应用噪声抑制或自动增益控制等效果),并且还让用户可以选择指定使用哪个麦克风(例如顶部、前置、后置等)进行录音。

根据Android documentation,获得保证未处理的输入音频流的唯一方法是在VOICE_RECOGNITION

上选择setAudioSource()

也就是说,选择要使用的物理麦克风的正确方法是什么?

在最近的 API 级别中,以下方法似乎允许选择特定麦克风:

有人知道如何实现我的目标,即在指定要使用的物理麦克风的同时获得未处理的音频输入吗?

解决方法

麦克风选择通过 MediaRecorder.AudioSource.MIC(正面)/MediaRecorder.AudioSource.CAMCORDER(背面)/MediaRecorder.AudioSource.DEFAULT(默认)完成。

VOICE_RECOGNITION 用于启用/禁用 AGC,但只能用于前置麦克风 (MediaRecorder.AudioSource.MIC)。