入耳检测状态更新demo解析
📎 原始文档:https://www.kdocs.cn/l/chI9T2HsrC1B 入耳检测状态更新demo解析
源码
SDK版本:AC701N V1.0.0 patch_05.31
文件:eartch.c
https://kdocs.cn/l/cpMYRUij6zPK
流程解析
- 入耳状态更新
//入耳检测状态
enum {
EARTCH_STATE_IN,
EARTCH_STATE_OUT,
EARTCH_STATE_NONE = 0xFF,
};
在内置入耳\外置入耳检测触发入耳状态变化时,调用eartch_state_update(EARTCH_STATE_IN)或eartch_state_update(EARTCH_STATE_OUT)触发出入耳检测变化
2. 状态校验及线程推送 eartch_state_update更新入耳状态后,经由当前状态判断是否发生入耳更新,则推送app_core进行消息处理,为eartch_state_deal函数,由于app_core函数的处理存在一定的延时性,因此函数里面的出入耳状态依赖tws_eartch_info.cur_status,该变量在eartch_state_update函数中进行实时性更新
3. tws消息同步 经由bt_tws_eartch_msg_sync函数进行tws对耳消息同步,同步状态后,推送app_core进行tws_eartch_sync_deal状态处理
4. 出入耳的音频流播放\暂停处理 出耳暂停:依据目前是否存在音频流播放,是则发送暂停命令给到上位机设备,但具体效果依赖手机APP处理
入耳播放:设备未关闭音频流,则依赖AVRCP状态决定是否触发播放,即app_var.avrcp_cmd == 70
该状态取决于设备端是否有AVRCP状态更新行为
若设备已关闭音频流:发送播放指令