news 2026/10/23 3:01:48

杰理SDK开发-TWS耳机「双击 + 长按」组合按键清除配对功能实现教程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
杰理SDK开发-TWS耳机「双击 + 长按」组合按键清除配对功能实现教程

前言

现在为止也开发了许多杰理TWS蓝牙耳机、音响项目 SDK的案子,在调试案子时不断的向前辈们学习到了很多关于蓝牙音响、蓝牙TWS耳机专业的知识。想在这里做一个学习汇总,方便各位同行和对杰理芯片SDK感兴趣的小伙伴们学习;

本章详细讲解杰理SDK开发TWS耳机「双击 + 长按」组合按键清除配对功能实现教程

1、功能概述

因为耳机做了TWS锁配功能,所以客户要求做一个TWS耳机「双击 + 长按」组合按键清除配对功能实现教程;该功能通过组合按键(双击 + 长按)实现 TWS 配对信息的快速清除,用于产线或售后场景下重新组对两只耳机。核心思路:

  1. 双击时置位一个"组合按键待命标志"double_long_flag,并启动一个5 秒超时定时器。
  2. 在 5 秒窗口内如果紧接着收到长按(KEY_EVENT_LONG),则判定组合按键触发。
  3. 触发后调用bt_tws_remove_pairs_and_reconnect():
    • 清除 TWS 配对记录、恢复本地 MAC 地址、清空声道/连接 AA;
    • 把状态标记回未配对BT_TWS_UNPAIRED;
    • 以"自动配对码"重新主动搜索对耳,进入组队模式,同时保持可发现可连接。

整个功能用宏TCFG_TWS_DOUBLE_CLICK_CLEAR_PAIRING包裹,方便裁剪。

2、实现功能代码

创建组合按键双击长按标志位和清除标志位函数

#if TCFG_TWS_DOUBLE_CLICK_CLEAR_PAIRING static u8 double_long_flag = 0; //李永奉在此处定义双击加长按功能检测标志位 static u16 double_long_timer_id = 0; //李永奉在此处定义定时任务ID号接收变量 //李永奉在此处定义双击加长按功能检测标志位定时时间到清除标志位功能函数 static void double_long_timeout_handler(void *priv) { double_long_flag = 0; //计算时间到时,将标志位清除 double_long_timer_id = 0; //定时器ID号接收变量清0 } #endif

触摸按键双击消息处符合蓝牙无连接并且TWS未组队条件下进行双击标志位置1,开启定时器;

else if(!get_tws_sibling_connect_state()){ #if TCFG_TWS_DOUBLE_CLICK_CLEAR_PAIRING double_long_flag = 1; //蓝牙无连接时&TWS无配对下,双击将标志位置1 if (double_long_timer_id) { //启动定时器前先删除定时器,防止旧的定时器在定时 sys_timeout_del(double_long_timer_id); double_long_timer_id = 0; } double_long_timer_id = sys_timeout_add(NULL,double_long_timeout_handler,5000); //启动定时器开始计时 break; #endif }

触摸按键长按2秒消息处符合蓝牙无连接并且TWS未组队条件下执行灯效跳转白灯快闪,TWS清除配对功能和进入TWS组队模式;

else if(double_long_flag == 1 && (!get_tws_sibling_connect_state())) { #if TCFG_TWS_DOUBLE_CLICK_CLEAR_PAIRING ui_update_status(STATUS_BT_TWS_DOUBLE_CLICK_CLEAR_PAIRING); double_long_flag = 0; //双击标志位清空 sys_timeout_del(double_long_timer_id); //删除定时任务 double_long_timer_id = 0; //定时器ID清空 bt_tws_remove_pairs_and_reconnect(); //清除TWS配对记录并重新进入TWS自动配对+可发现可连接状态 break; #endif }

实现TWS清除配对记录和进入TWS组队模式功能函数

#if TCFG_TWS_DOUBLE_CLICK_CLEAR_PAIRING /* * 双击+长按清除TWS配对信息后, 重新进入TWS自动配对和可发现可连接状态 * 与开机未配对流程保持一致: 标记未配对状态, 使用自动配对码主动搜索对耳 */ void bt_tws_remove_pairs_and_reconnect() { bt_tws_remove_pairs(); //清除TWS配对信息, 恢复本地MAC地址, 打开可发现可连接 gtws.state = BT_TWS_UNPAIRED; //标记为未配对状态 #if CONFIG_TWS_PAIR_MODE == CONFIG_TWS_PAIR_BY_AUTO #ifdef CONFIG_NEW_BREDR_ENABLE tws_api_set_quick_connect_addr(tws_set_auto_pair_code()); #else tws_auto_pair_enable = 1; tws_le_acc_generation_init(); #endif bt_tws_connect_sibling(6); //主动搜索对耳, 两个耳机自动完成TWS配对 #else bt_tws_connect_and_connectable_switch(); #endif } #endif

功能实现完毕,小伙伴可直接复杂代码去验证呦!


制作不易!喜欢的小伙伴给个小赞赞!喜欢我的小伙伴点个关注!有不懂的地方和需要的资源随时问我哟!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/23 3:01:47

线上客群分层运营,云端系统的前沿实践探析

数字化营销持续深化背景下,云端获客系统已经从可选营销工具,转变为B2B制造、外贸、跨境电商企业获取精准线索、沉淀品牌流量资产的基础设施。传统营销投放模式普遍存在流量分散、线索质量不可控、投放成本难以量化、数据孤岛等问题,不少企业在…

作者头像 李华
网站建设 2026/10/23 3:00:33

本科毕业设计:免费智能大纲管骨架、真实文献管证据,分工怎么定

本科毕业设计通常只有八到十二周,还要兼顾课程、实习与求职。真正卡住人的往往不是不会写,而是两件事同时压来:章节撑不起来,句子又拿不出处。结构问题交给免费智能大纲,证据问题交给真实文献,顺序颠倒会成…

作者头像 李华
网站建设 2026/10/23 2:58:58

揭秘AI行业真实薪资:别再被高薪神话割韭菜!

文章揭示了AI行业薪资的真相,指出培训机构虚假宣传的“速成高薪”现象,并引用智联招聘数据表明AI行业平均月薪虽高于全行业,但远不及网络传言。文章详细分析了不同岗位(算法、产品、运营、落地服务、基础标注)的薪资区…

作者头像 李华
网站建设 2026/10/23 2:58:43

波纹管激光焊接设备效果怎么样 五个可核实口径

波纹管激光焊接设备效果怎么样 五个可核实口径这篇文章讲的是波纹管激光焊接设备效果的核实口径:不引用任何厂商或客户的宣传性评价,只回答从哪些记录与材料可以客观核实焊接效果,覆盖焊缝成形、密封性、参数复现、运行稳定与材料清单五个口径…

作者头像 李华
网站建设 2026/10/23 2:58:21

从制度查询困境看企业知识库建设:小白程序员必学大模型治理秘籍

文章指出企业知识库建设常见误区,强调应从改善业务动作出发而非单纯接入数据。核心建议包括:以业务事件和用户任务定义场景、建立分层治理目标、配置业务owner、明确试点边界和放量门槛,并设计四层指标评估价值。文章强调知识库建设需关注“知…

作者头像 李华