概要:
在分析案例之前,先说下蓝牙耳机通话声音传输过程
手机在跟蓝牙耳机建立HFP连接后,如果此时需要进行通话,通话声音的传输需要经过以下流程:
1、手机跟蓝牙耳机建立SCO(eSCO)物理链路
2、Modem通过Audio模块下行的语音送到蓝牙芯片
3、蓝牙芯片对语音进行CVSD编码
4、蓝牙芯片把编码后的数据通过SCO(eSCO)物理链路发送给蓝牙耳机
5、蓝牙耳机进行解码,并把声音播放出来
另外介绍下面是一段代码逻辑,取之于其他博主写的
1.通过mAudioManager获取管理音频设备的实例
2.如何切换至耳机
mAudioManager.setSpeakerphoneOn(false)外放话筒关闭。mAudioManager.setBluetoothScoOn(false)蓝牙关闭。
3.如何切换至蓝牙
mAudioManager.setSpeakerphoneOn(false)外放话筒关闭。> mAudioManager.startBluetoothSco()启动蓝牙Sco
mAudioManager.setBluetoothScoOn(true); 设置socOn开启
4.如何切换至外放
耳机,蓝牙,全都关闭
mAudioManager.setSpeakerphoneOn(true) 外放话筒打开
public class DeviceSpeakerUtil {
/**
* 主要功能: 设备语音切换-蓝牙-外放-听筒
*/
private static AudioManager mAudioManager;
/**
* 切换到外放
*/
public stati