<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>ANC on 栈外随记</title>
    <link>https://btio.cn/tags/anc/</link>
    <description>Recent content in ANC on 栈外随记</description>
    <image>
      <title>栈外随记</title>
      <url>https://btio.cn/images/logo-arong.svg</url>
      <link>https://btio.cn/images/logo-arong.svg</link>
    </image>
    <generator>Hugo</generator>
    <language>zh-CN</language><lastBuildDate>Wed, 12 Aug 2026 10:34:45 +0800</lastBuildDate>
    <atom:link href="https://btio.cn/tags/anc/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>【中科蓝讯】ANC 模式是怎样切换的</title>
      <link>https://btio.cn/posts/2026/08/12/%E4%B8%AD%E7%A7%91%E8%93%9D%E8%AE%AFanc-%E6%A8%A1%E5%BC%8F%E6%98%AF%E6%80%8E%E6%A0%B7%E5%88%87%E6%8D%A2%E7%9A%84/</link>
      <pubDate>Wed, 12 Aug 2026 10:34:45 +0800</pubDate>
      <guid>https://btio.cn/posts/2026/08/12/%E4%B8%AD%E7%A7%91%E8%93%9D%E8%AE%AFanc-%E6%A8%A1%E5%BC%8F%E6%98%AF%E6%80%8E%E6%A0%B7%E5%88%87%E6%8D%A2%E7%9A%84/</guid>
      <description>&lt;p&gt;最开始看原厂 SDK 时，我觉得它的切换很简单：确定关闭、降噪或通透，再调用模式接口即可。&lt;/p&gt;
&lt;p&gt;随着 App 控制、按键配置、单双耳记忆和出入盒切换逐渐加进来，我才发现应用层维护的并不只是一个 ANC 模式。提示音何时播放、左右耳怎样同步、状态什么时候保存和上报，也都在这条链路里。&lt;/p&gt;
&lt;h2 id=&#34;section-1&#34;&gt;一、先把 ANC 的几条链路放在一起&lt;/h2&gt;
&lt;p&gt;ANC 模式可能因为三类事件发生变化：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;App 下发一个明确的目标模式；&lt;/li&gt;
&lt;li&gt;用户通过耳机按键切换模式；&lt;/li&gt;
&lt;li&gt;耳机出入盒或 TWS 连接状态变化，需要重新选择单双耳记忆。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;把三个入口放在一起，我目前是这样理解的：&lt;/p&gt;
&lt;div class=&#34;mermaid-diagram&#34; role=&#34;group&#34; aria-label=&#34;流程图&#34;&gt;
  &lt;pre class=&#34;mermaid&#34;&gt;%%{init: {&amp;#34;flowchart&amp;#34;: {&amp;#34;htmlLabels&amp;#34;: true, &amp;#34;wrappingWidth&amp;#34;: 1000, &amp;#34;rankSpacing&amp;#34;: 30}, &amp;#34;themeVariables&amp;#34;: {&amp;#34;lineColor&amp;#34;: &amp;#34;#71829a&amp;#34;}}}%%
flowchart TB
    subgraph R0[&amp;#34;① 确定目标模式&amp;#34;]
        direction LR
        R0N0[&amp;#34;收到 ANC 相关事件&amp;lt;br/&amp;gt;App 指令、按键事件&amp;lt;br/&amp;gt;出入盒或 TWS 状态变化&amp;#34;]
        R0N1[&amp;#34;确定当前使用场景&amp;lt;br/&amp;gt;单耳、双耳&amp;lt;br/&amp;gt;或者双耳都在盒内&amp;#34;]
        R0N2[&amp;#34;得到本次目标模式&amp;lt;br/&amp;gt;关闭、通透、不同等级的降噪&amp;lt;br/&amp;gt;或自适应降噪&amp;#34;]
        R0N0 --&amp;gt; R0N1 --&amp;gt; R0N2
    end
    class R0N0,R0N1,R0N2 blue;
    style R0 fill:#f1f6fd,stroke:#b8cfe8,color:#23456b
    subgraph R1[&amp;#34;② 同步并应用&amp;#34;]
        direction LR
        R1N0[&amp;#34;更新并同步状态&amp;lt;br/&amp;gt;选择或更新单耳、双耳记忆&amp;lt;br/&amp;gt;必要时通知对耳&amp;#34;]
        R1N1[&amp;#34;处理提示音并应用模式&amp;lt;br/&amp;gt;按触发来源处理提示音&amp;lt;br/&amp;gt;再转换成 SDK 模式&amp;#34;]
        R1N2[&amp;#34;保存并更新 App&amp;lt;br/&amp;gt;写入记忆；按键或状态变化时&amp;lt;br/&amp;gt;更新 App 显示&amp;#34;]
        R1N0 --&amp;gt; R1N1 --&amp;gt; R1N2
    end
    class R1N0,R1N1,R1N2 green;
    style R1 fill:#f0f8f3,stroke:#b9d7c4,color:#24563a
    R0 --&amp;gt; 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;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;这是一条方便理解的主线。实际代码里，App、按键和状态变化的处理顺序并不完全相同，后面再分别展开。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【中科蓝讯】TWS 耳机 ANC 问题单复盘</title>
      <link>https://btio.cn/posts/2026/08/12/%E4%B8%AD%E7%A7%91%E8%93%9D%E8%AE%AFtws-%E8%80%B3%E6%9C%BA-anc-%E9%97%AE%E9%A2%98%E5%8D%95%E5%A4%8D%E7%9B%98/</link>
      <pubDate>Wed, 12 Aug 2026 00:00:00 +0800</pubDate>
      <guid>https://btio.cn/posts/2026/08/12/%E4%B8%AD%E7%A7%91%E8%93%9D%E8%AE%AFtws-%E8%80%B3%E6%9C%BA-anc-%E9%97%AE%E9%A2%98%E5%8D%95%E5%A4%8D%E7%9B%98/</guid>
      <description>&lt;h2 id=&#34;preface&#34;&gt;写在开始&lt;/h2&gt;
&lt;p&gt;这篇文章整理项目中比较有代表性的 ANC 问题单，并按问题现象归为五类。&lt;/p&gt;
&lt;p&gt;有些问题标题虽然带有 ANC，但最后确认是电量、功耗或连接问题，这里不展开。本文只保留能够放回 ANC 控制链路解释的问题，没有明确结论的地方也不补充猜测。&lt;/p&gt;
&lt;p&gt;先把 ANC 控制流程简化成四步：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;1. 收到切换请求
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       ↓
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;2. 确定并同步目标模式
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       ↓
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;3. 加载参数，更新实际效果
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       ↓
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;4. 保存状态并上报 App
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;本文围绕下面五类问题，整理对应的问题现象和排查思路：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&#34;#section-1&#34;&gt;实际模式正常，App 显示却不对&lt;/a&gt;
；&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#section-2&#34;&gt;单耳和双耳切换后，ANC 状态混乱&lt;/a&gt;
；&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#section-3&#34;&gt;按键或 App 操作后，ANC 没有切换&lt;/a&gt;
；&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#section-4&#34;&gt;模式切换成功，降噪效果却不对&lt;/a&gt;
；&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#section-5&#34;&gt;切换 ANC 时出现杂音、短暂无声或突变&lt;/a&gt;
。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;section-1&#34;&gt;一、实际模式正常，App 显示却不对&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;问题现象 1&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;从耳长按切换 ANC 后，耳机实际已经切换，App 仍显示原来的模式；&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;排查思路 1&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;先确认三个结果：从耳是否识别到长按、左右耳实际模式是否变化、主耳是否向 App 上报了新状态。&lt;/p&gt;
&lt;p&gt;如果从耳和两耳实际模式都正常，重点查主耳是否收到新的目标模式、更新本地状态并上报 App。问题单中，从耳已经完成 ANC 切换，但主耳没有更新状态并发送新模式，因此问题出在主耳的状态同步和上报链路。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;问题现象 2&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;耳机实际是高降噪，App 却显示低降噪；重新进入 App 后，等级还会发生跳变。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;排查思路 2&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;对照耳机内部等级、协议值和 App 显示值是否一致。问题单中，耳机使用 &lt;code&gt;1&lt;/code&gt; 表示低降噪、&lt;code&gt;3&lt;/code&gt; 表示高降噪，App 却映射成1是高降噪，3是低降噪，导致高低等级颠倒。这是状态映射错误，不是 ANC 参数没有生效。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
