基于无障碍服务的Android耳机通话录音缺失对方声音修复咨询
通话录音耳机场景缺失对方声音的解决方案
切换适配通话场景的录音源
VOICE_RECOGNITION主要针对语音识别优化,在耳机连接时可能仅采集本地麦克风输入,无法捕获通话远端音频。建议尝试切换为MediaRecorder.AudioSource.VOICE_COMMUNICATION,这个录音源是专门为通话场景设计的,更大概率能同时采集本地和远端的通话声音,适配耳机路由下的音频路径。配置音频路由与权限
- 确保已申请
MODIFY_AUDIO_SETTINGS权限,通过AudioManager设置通话音频模式:AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); audioManager.setMode(AudioManager.MODE_IN_COMMUNICATION); - 若用户接受,可临时开启扬声器(
audioManager.setSpeakerphoneOn(true)),让通话音频同时通过扬声器输出,确保录音源能捕获到远端声音;通话结束后再关闭扬声器恢复正常状态。
- 确保已申请
监听耳机状态动态调整策略
通过注册Intent.ACTION_HEADSET_PLUG广播监听耳机连接/断开事件,在耳机连接时自动切换到适配的录音源或音频路由配置,避免固定配置导致的音频采集缺失。改用
AudioRecord实现精细采集
相较于MediaRecorder,AudioRecord能直接访问原始音频流,可更灵活地控制音频采集参数。尝试用AudioRecord结合VOICE_COMMUNICATION录音源,配置合适的采样率和声道数,可能绕过系统对MediaRecorder的路由限制,捕获到耳机场景下的完整通话音频。验证系统权限与设备限制
确认应用已获取RECORD_AUDIO权限,且在通话过程中权限未被系统回收。部分Pixel设备在Android 12下对第三方通话录音有额外限制,可测试在系统设置中确认无障碍服务的音频采集权限是否完全开启,必要时引导用户确认系统层面的通话录音许可。
内容的提问来源于stack exchange,提问作者user2852952
相关产品推荐
相关产品推荐

