一、蓝牙通话实现原理
通过监听蓝牙通话广播时通话的各个状态,开启线程边录边播(即:一边录制mic和BT的声音,一边把录制到mic的声音往BT声卡里播放,把录制到BT声卡的声音往speaker播放)。蓝牙通话要求实时性比较高,走的是PCM通路,建议直接在HAL层实现蓝牙通话功能。
二、在HAL中实现蓝牙通话主要还是对PCM进行操作。
PCM的主要几个接口:
1、PCM_OPEN 打开声卡
2、PCM_CLOSE 关闭声卡
3、PCM_WRITE 播放传入的数据
4、PCM_READ 把数据读入声卡
三、蓝牙通话数据流向
1、蓝牙连接设备后触发蓝牙通话状态机
2、有来去电后,改变音频通道触发audio_change回调,最终调用到HeadsetClientStateMachine,
然后再通过audioManager.setParameters传递参数,tinyalsa HAL层接收开启线程,打开蓝牙/MIC声道,录制和播放声音
四、HAL层实现步骤
1、He