记一次解决问题的过程(AudioManager.setMode())

这两天适配大屏机AMR编码格式的时候遇到个问题,和编码没关系的。
当大屏机没连蓝牙耳机时是好的,语音播放正常;
连接蓝牙耳机时执行操作:

AudioManager am = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
am.setBluetoothScoOn(true);
am.stopBluetoothSco();
am.setMode(AudioManager.MODE_IN_COMMUNICATION);
am.setMicrophoneMute(false);
am.startBluetoothSco();

然后使用耳机播放声音,这里也正常;
当再断开蓝牙耳机的时候执行操作:

AudioManager am = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
am.setBluetoothScoOn(false);
if (am.isBluetoothScoOn()) {
       am.stopBluetoothSco();
}
setSpeakerphoneOn(context, true);

这时候语音外放出来的声音非常小,这时候再在最后面设置Mode后am.setMode(AudioManager.MODE_NORMAL);声音依然小;
经过大量的资料查阅,最终在https://blog.csdn.net/hugoshine/article/details/10056875中找到了答案,setMode要放在设置BluetoothSco和SpeakerphoneOn中间设置,最后修改为

AudioManager am = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
am.setBluetoothScoOn(false);
if (am.isBluetoothScoOn()) {
       am.stopBluetoothSco();
}
am.setMode(AudioManager.MODE_NORMAL);
setSpeakerphoneOn(context, true);

语音播放声音正常,问题解决

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。