前言
现在为止也开发了许多杰理TWS蓝牙耳机、音响项目SDK的案子,在调试案子时不断的向前辈们学习到了很多关于蓝牙音响、蓝牙TWS耳机专业的知识。想在这里做一个学习汇总,方便各位同行和对杰理芯片SDK感兴趣的小伙伴们学习;
本章详细讲解AC700N耳机端根据SIRI语音助手状态触摸按键唤醒SIRI语音助手和关闭SIRI语音助手
在调试TWS蓝牙耳机项目时,有些项目UI需要实现耳机端触摸按键三击/四击唤醒手机端SIRI语音助手功能;也有些项目UI是要根据手机端SIRI语音助手的状态实现SIRI语音助手开启状态则进行关闭功能,SIRI语音助手关闭状态则进行开启功能;本章详细讲解该功能的实现;实现芯片使用AC700N芯片
触摸按键开启/关闭 Siri 语音助手的实现逻辑详解
在耳机已蓝牙连接手机后,杰理 SDK 通过按键消息重映射将触摸动作转换为应用层消息或直接协议栈命令,从而控制手机端 Siri 的激活与关闭。整体流程如下:
- 触摸按键事件识别
底层触摸驱动持续检测用户的点击、长按、滑动等手势,识别出具体的按键动作类型(如单击、双击、三击、四击等),并封装成按键事件上报。
- 按键消息进入重映射模块
系统遍历 bt_mode_key_table 重映射表,根据按键值(如 KEY_POWER)找到对应处理函数。对于触摸主键,该处理函数为 bt_key_power_msg_remap。

- 通话状态检测与设备分类
在重映射函数中,首先获取所有已连接设备的通话状态(已调用 bt_get_phone_state 进行修正,确保 Siri 状态有效)。所有设备被分类为:
active_device:正在通话
incoming_device:有来电
outgoing_device:去电/振铃
siri_device:Siri 已激活

- Siri 开启的触发路径
用户自定义单键触摸方案(#if LYF_USER_LP_KEY_ENABLE)四击(KEY_ACTION_FOURTH_CLICK)时:
若蓝牙状态为已连接/通话中/播放音乐,则直接映射为 APP_MSG_OPEN_SIRI。

APP_MSG_OPEN_SIRI 最终会被应用层消息队列处理,调用杰理蓝牙协议栈命令:
cpp
bt_cmd_prepare(USER_CTRL_HFP_GET_SIRI_OPEN, 0, NULL);
5、SIRI关闭的触发路径
当设备列表中已有 siri_device(即某个设备正处于 Siri 激活状态)时:用户执行四击 (KEY_ACTION_FOURTH_CLICK),重映射函数会直接返回 APP_MSG_CLOSE_SIRI。
应用层收到后,发送协议栈命令 USER_CTRL_HFP_GET_SIRI_CLOSE,通知手机结束语音识别会话。
cpp
bt_cmd_prepare(USER_CTRL_HFP_GET_SIRI_CLOSE, 0, NULL);

在如上介绍中实现的功能为耳机端触摸按键4击唤醒SIRI语音助手/关闭SIRI语音助手的功能实现
制作不易!喜欢的小伙伴给个小赞赞!喜欢我的小伙伴点个关注!有不懂的地方和需要的资源随时问我哟!