【中科蓝讯】TWS 耳机提示音问题单复盘

一、本文要解决哪些提示音问题 这篇文章记录的是我对 TWS 耳机提示音问题的整理和理解。我结合问题单、原厂 SDK 以及实际修改点,把零散的问题按现象和根因重新归类,并从业务请求、队列、播放到状态恢复,整理出一套排查思路。 具体问题的修改结论,以问题单和现有代码记录为准;没有明确依据的地方,我不额外延伸。理解提示音问题,可以先把流程分成四步: 1. 业务事件发生 ↓ 2. 提示音请求进入队列 ↓ 3. 提示音开始播放 ↓ 4. 播放结束,恢复音频状态 有些提示音只是给用户提供声音反馈,有些提示音还和业务回调绑定在一起。原厂 SDK 中,ANC 和音乐/游戏模式会在提示音播放完成后更新;接听、拒接和回拨也会在提示音相关回调中触发。 所以排查时不能只看“有没有声音”,还要看对应的业务回调是否按预期执行。遇到问题时,先分清是“声音没有正常播放”,还是“提示音对应的业务动作没有执行”:前者检查资源、音量和播放链路,后者检查业务请求和回调。 本文主要围绕以下 7 类问题展开,后文会分别说明问题现象、原因和排查思路: 业务已经发生,提示音却没响或播错 ; 提示音太大、太小,或换资源后异常 ; 连续或快速操作后,提示音消失、滞后或重复 ; 提示音响错耳朵 ; 双耳提示音不同步,或音乐恢复不同步 ; 提示音响完,音乐却出现杂音或无声 ; 来电和双连接时,响铃状态混乱 。 二、业务已经发生,提示音却没响或播错 问题现象 1 电量已经低于 10%,却没有低电提示音。 排查思路 1 先确认低电条件是否真的触发。比如电量从 11% 直接变成 9% 时,可能跳过“等于 10%”的判断,后面就不会提交低电提示音。确认条件后,再检查代码是否走到提示音调用位置。 问题现象 2 来电双击已经接听,却播放成三击提示音。 排查思路 2 这个问题说明提示音请求已经提交,但事件和提示音没有正确对应。重点检查双击事件最终传入的提示音资源编号,确认是否误用了三击提示音。 这类问题可以按“业务条件、提示音调用、资源编号”的顺序检查。前三步没有问题后,再进入队列和播放流程。 三、提示音太大、太小,或换资源后异常 问题现象 1 通过 App 的“查找耳机”功能播放正常,但在手机设置中的 Google“查找设备”页面,点击“让耳机响铃”时声音偏小。 ...

【中科蓝讯】TWS 耳机提示音是怎样播放出来的

在 TWS 耳机里,开机、蓝牙连接、低电量和降噪模式切换,通常都会伴随一段提示音。 从表面看,提示音像是准备一个音频文件,需要时调用播放函数即可。实际上,一段提示音从代码触发到左右耳真正出声,中间还要经过资源查找、播放排队、双耳同步和音频恢复。 本文以中科蓝讯 BT891x 原厂 SDK 的实现为例,重点分析提示音播放的核心流程。不同 SDK 的接口名称可能不一样,但整体思路通常可以互相参考。 一、提示音播放的完整链路 一段提示音的完整流程,可以先简化成下面五步: %%{init: {"flowchart": {"htmlLabels": true, "wrappingWidth": 1000, "rankSpacing": 30}, "themeVariables": {"lineColor": "#71829a"}}}%% flowchart TB subgraph R0["① 准备播放请求"] direction LR R0N0["业务触发"] R0N1["找到对应的提示音资源"] R0N2["把播放请求加入队列"] R0N0 --> R0N1 --> R0N2 end class R0N0,R0N1,R0N2 blue; style R0 fill:#f1f6fd,stroke:#b8cfe8,color:#23456b subgraph R1["② 同步与播放"] direction LR R1N0["确定哪只耳机播放<br/>并完成双耳同步"] R1N1["解码播放<br/>结束后恢复原来的音频状态"] R1N0 --> R1N1 end class R1N0,R1N1 green; style R1 fill:#f0f8f3,stroke:#b9d7c4,color:#24563a R0 --> R1 classDef blue fill:#e8f2ff,stroke:#7ba4d8,color:#23456b,stroke-width:1.5px; classDef green fill:#e7f4ec,stroke:#78aa8b,color:#24563a,stroke-width:1.5px; classDef amber fill:#fff3df,stroke:#d5a25b,color:#72501e,stroke-width:1.5px; 比如手机连接耳机成功以后,蓝牙业务只需要提出“播放连接成功提示音”这个请求。至于提示音文件放在哪里、左右耳什么时候开始播放、当前音乐要不要降低音量,都会继续交给提示音模块处理。 ...