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

2020-09-30  本文已影响0人  enRegan

这两天适配大屏机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);

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

上一篇下一篇

猜你喜欢

热点阅读