FreeBuds 7 适配与验证
FreeBuds 7 使用独立的 HUAWEI_FREEBUDS7 路由,不与 FreeBuds 7i 混用。本适配基于官方智慧音频操作的协议采集,以及 HuaweiPods 在同一手机和耳机上的写入、状态回读与界面验证。
已接入能力
| 能力 | 模块支持 | 实机验证 |
|---|---|---|
| 身份、图片、电量 | 协议型号识别、手动型号选择、官方配色图片、左右耳与充电盒电量 | 模块、融合设备中心与系统详情页显示;出入盒充电标记变化 |
| 噪声控制 | 通透 / 降噪 / 关闭;智慧动态 / 轻度 / 均衡三档降噪 | 模块和融合卡片逐项切换并回读;系统详情页原生三节点滑条点击、拖动与高亮一致 |
| 空间音频 | 关闭 / 固定 / 头部跟踪 | 模块及融合卡片逐项写入并回读 |
| 智慧设置 | 自适应音量、头动控制、掉落提醒、单耳降噪、音频连接自动切换 | 各开关往返写入并回读 |
| 音频与佩戴设置 | 高清音质、低时延、佩戴检测、充电盒提示音 | 各开关往返写入并回读;高清音质切换可能短暂重连 |
| 双击与滑动 | 双击播放/暂停、滑动音量的启用/禁用,左右耳联动 | 各设置往返写入并回读 |
| 捏合 | 单捏播放/暂停、双捏下一曲、三捏上一曲的启用/禁用 | 各设置往返写入并回读 |
| 左右三击 | 分别选择下一曲、上一曲或无动作 | 左右耳分别切换上一曲、下一曲并回读;无动作有官方捕获依据 |
| 音效 | 均衡、人声、低音、古典、电影、播客、游戏、运动 | 八种均有官方 TX/RX;模块实测古典与均衡切换,其余未逐项复测 |
| 自定义均衡器 | 10 段、±6 dB;使用已有 HuaweiPods 自定义槽 0x64 | 第一频段 +1 dB 保存、回读并在智慧音频确认;测试预设已删除 |
上述验证指配置写入、设备状态回读和相应界面显示,不等同于主观音质、实际降噪强度、真实手势触发、通话或长期稳定性验收。
关键协议差异
| 项目 | FreeBuds 7 协议约定 |
|---|---|
| 产品身份 | 000174,实测配色 00,产品代号 ZAB1 |
| ANC | 2B04 写入,2B2A 回读;智慧动态 3、轻度 1、均衡 0,无深度档 |
| 普通通透 | 耳机回读子模式 2;系统设置模板显示码转换为 0200 |
| 空间音频 | 2BB4 feature 18;关闭 0、固定 2、头部跟踪 1 |
| 智慧功能 | 2BB4 feature 02 / 0B / 07 / 05 |
| 连接自动切换 | 2B2E / 2B2F,不代表双设备列表管理 |
| 高清音质 | 2BA2 / 2BA3,可能与空间音频互斥;模块切换后刷新关联状态 |
| 低时延 / 佩戴 / 盒提示音 | 2B6C / 2B10,11 / 2BB1,均解析已验证的状态回复 |
| 双击 / 滑动 / 三击 | 011F,20 / 2B1E,1F / 0125,26 |
| 媒体捏合 | 2B92,93,slot 0/1/2,context 02 |
| EQ | 2B49,4A;自定义保存 operation 01,每协议单位 0.2 dB;古典使用捕获到的专用曲线 |
HuaweiFreeBuds7Controller 将写入和状态查询放在同一 RFCOMM 会话中,等待匹配功能的状态;初始握手、ACK 和其他功能通知不能充当成功。未收到匹配状态时再查询一次。设置解析器校验帧长度、CRC、完整 TLV、功能编号及手势上下文。未获取到的状态保持未知。
系统集成
融合设备中心
卡片展示官方图片、三路电量、噪声模式、三档降噪、空间音频、原生音量及更多设置。空间命令携带设备地址与型号,经蓝牙进程会话校验后执行,仅将已确认的设备状态发送回对应卡片。
空间音频的 pending 仅用于 5 秒内重复写入去重,不过滤设备回读。设置失败后,即使回读值与请求值不同,也立即清除 pending、恢复设备实际状态并刷新卡片,允许用户马上重试;切换设备或重置会话时清空状态。
MiLink 的空间音频显示编号为关闭 0、固定 1、跟踪 2;运行时跟踪编号为 11。两者与华为协议分开转换,不复用 FreeClip 2 的旧显示顺序。legacy 宿主异步回调覆盖降噪高亮时,根据已确认状态重新同步原生按钮,并在 UI 同步作用域内拦截重复写入。宿主已有独立音量百分比时,不再在标题中重复附加。
legacy ANC 刷新检查按钮实际的 isSelected,已选中时跳过监听器重放,避免每 2.5 秒轮询引发一次点击震动。异步宿主回调导致实际高亮不符时仍执行纠正,不以模块上次渲染缓存代替当前视图状态。
系统蓝牙详情页
从“更多设置”进入的页面复用原生 MiuiHeadsetAncAdjustView,通过 setPointCount(3) 和状态映射提供自适应、轻度、均衡三个节点。保留原生绘制、监听器和触感反馈,移除第四档及额外自定义按钮,重新对齐标签。通透和关闭模式收起档位区域,不展示不支持的人声增强子选项。
升级模块后,应使用模块的“重启作用域”操作或重启手机。MiLink 含 :ui 等子进程,仅重启主进程可能继续显示旧卡片。
验证环境与复测
2026-10-06 实测环境:
- 小米 23116PN5BC / shennong,Android 16,HyperOS OS3.0,LSPosed 2.2.1。
- FreeBuds 7,HarmonyOS 6.1.0.202(F003H003C00)。
- 华为智慧音频 2.0.7.321;MiLink 17.2.6.0.2609011721。
- 真机使用本地 debug 签名构建;未发布正式签名 Release。
自动化覆盖包括独立身份路由、三档 ANC、空间编码、设置读写 fixture、CRC/截断/噪声/ACK 拒绝、握手后状态、EQ 曲线和左右三击回读,以及原生显示映射。2026-10-07 补充失败回读与 pending 生命周期回归后,500 个单元测试通过,0 失败/错误/跳过;Lint、Debug 和 Release 构建通过。
2026-10-07 PR 修复复测(同一手机及耳机,debug 构建 b1791342622260-debug):
- 真实设备:空间音频固定、头部跟踪、关闭,以及 ANC 降噪、通透、关闭均完成点击、设备回读与高亮核对;结束后恢复本轮初始 ANC 关闭、空间音频关闭。
- 震动:修复前系统震动历史记录到 MiLink 约每 2.5 秒触发一次;修复后卡片静置 49 秒,无新增 MiLink 震动记录,后续 ANC 切换高亮正常。
- 受控回读:短暂暂停蓝牙进程处理,11:14:17.628 点击固定,11:14:18.032 MiLink 接受注入的原状态(头部跟踪),11:14:18.341 前再次点击固定。恢复进程后记录到两次实际固定模式写入,证明原状态清除了 pending,5 秒内允许重试。截图保持原状态高亮。这是手机上的受控广播测试,不代表耳机真实拒绝写入的端到端失败场景;后者尚未稳定复现。
提交前使用与上游 CI 相同的检查命令:
./gradlew :app:testDebugUnitTest :app:lintDebug :app:assembleRelease复测入口:
- 启用模块作用域并连接耳机,检查名称、图片和三路电量。
- 在模块详情页检查设置状态、写入后回读及关联状态刷新。
- 在融合卡片逐项切换 ANC 和空间模式,检查设备回读与高亮。
- 失败回读回归:设置未生效且耳机在 5 秒内回报原模式时,卡片应立即显示原模式,同一目标模式可立即重试。已覆盖状态单元测试与上述手机受控回读测试。
- 从更多设置进入系统详情,点击并拖动三个 ANC 节点;切换通透/关闭后确认档位区域收起。
- 结束后恢复原设置,只删除本次测试创建的 EQ 预设。
原始抓包、逐步截图和设备日志仅保留在本地忽略目录,不随源码提交。可复现的脱敏协议帧保留在单元测试中。
尚未覆盖
长按/按住动作与降噪循环组合、通话手势、语音/AI/录音控制、开盒提示音 feature 10、双设备列表管理和多自定义 EQ 预设管理未接入,仍由官方应用设置。
超级岛、开盒弹窗、深色模式、其他手机/固件/系统组件版本,以及长期重连未完成独立验收。未执行固件升级、重置、取消配对或查找响铃。
MiLink 接入位置参考 OppoPods(提交 c201e251e68b59d46b6bc2758146b2c7f13ca2a1);FreeBuds 7 控制与读回基于本机协议采集,在 HuaweiPods 现有结构内实现。
