我有一个奇怪的设置,我试图使用TRRS公 - 男音频线从外部设备录制音频 . 它应该工作的方式,我将音频线插入设备,然后插入手机,然后使用AudioRecorder录制音频 . 在我的HTC One M8上,一切都很棒,我可以从设备录制音频 . 在我的三星Galaxy S2上,它可以录制音频但是来自内置麦克风 .

我确认问题在于麦克风输入的阻抗 . 如果我在音频线上添加一个电阻以增加麦克风阻抗,那么S2将从设备正确记录 .

所以我的问题是:是否有强迫Android使用外置麦克风插孔?我调查了发送ACTION_HEADSET_PLUG意图,麦克风设置为-1表示外部,但由于权限错误而失败 . 似乎这个意图被转移到受保护的权限(https://github.com/android/platform_frameworks_base/commit/8f014059d3084fcce9e82b4b1f8b8323744ac52d

那么有没有其他方法强制手机使用麦克风插孔没有外部硬件?!

谢谢!

此外,对于实际的音频录制,设置为:44100kHz采样率16位采样单声道缓冲设置为AudioRecord.MinBufferSize()