这两天适配大屏机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);
语音播放声音正常,问题解决
网友评论