80 · Auracast 广播 QR 篇 · 总览与链路地图

篇目定位:LE Audio 广播音频(Auracast)“扫码加入/分享广播源”链路中的 QR 码协议段。 源码基线:dev 分支(2026-09-06 核实;红队对抗记录见 _对抗核验记录-80篇.md)。 前置:21-settingslib架构与事件流§4

0. 一句话

车机把一个 Auracast 广播源编成一串 QR 码文本(或反向把扫码结果还原成可连接的广播源),全部协议事实锚在三个类上:BluetoothBroadcastUtils(常量/前缀)→ BluetoothLeBroadcastMetadataExt(编解码)→ LocalBluetoothLeBroadcastMetadata(上层出入口)。

1. flavor 能力矩阵(先看这个)

dcddif (dcd/骁龙8295)xcddif (A14)f3dif (A17)
BluetoothBroadcastUtils.java✗ 不存在
BluetoothLeBroadcastMetadataExt.kt
QR 前缀 SCHEME_BT_BROADCAST_METADATA"BT:" (:46)"BLUETOOTH:UUID:184F;" (:46)
EventManager 广播源 handler(BROADCAST_SOURCE_INFO/BROADCAST_STATE 等)✓(见 51 §1)✗(分发已删,见 51 §1)
onBroadcastStateChanged/onBroadcastKeyGenerated 回调✗(接口里也删了)

三点结论:

  1. dcd 车型没有 LE Audio 广播类:dcddif .../settingslib/bluetooth/ 目录 26 个文件中无任何名字含 Broadcast/LeAudio 的类、无任何 .kt 文件(2026-09-06 逐项核实)。
  2. xcddif 与 f3dif 的 QR 码互不兼容:前缀不同——A14 平台是 Android 14 AOSP 私有格式("BT:"),A17 平台是蓝牙 SIG Auracast 标准格式("BLUETOOTH:UUID:184F;",0x184F = Broadcast Audio Announcement 服务 UUID)。跨平台扫码互不识别是预期行为,不是 bug
  3. f3dif 仍保留 Utils/Ext 两个类(Ext 仍被 LocalBluetoothLeBroadcastMetadata.kt 引用,SIG 格式编解码能力在),但 EventManager 侧的 Auracast 广播分发与 BluetoothCallback 对应回调已整体移除——A17 上这些事件走别的机制(待后续篇目补)。

2. 链路地图

flowchart LR
    BBU["BluetoothBroadcastUtils<br/>SCHEME 前缀(唯一被用的常量)"]
    EXT["BluetoothLeBroadcastMetadataExt.kt<br/>toQrCodeString() 生成<br/>convertToBroadcastMetadata() 解析"]
    LBM["LocalBluetoothLeBroadcastMetadata.kt<br/>import :19 / 调用 :29"]
    UI["广播设置 UI / 扫码结果"]
    UI --> LBM --> EXT --> BBU

引用关系(全仓核实,2026-09-06,排除 build):

  • BluetoothBroadcastUtils 全仓仅被两 flavor 的 BluetoothLeBroadcastMetadataExt.kt 引用(各自 :29 static import),且只用 SCHEME 一个常量;其余 4 常量(TAG_FRAGMENT_QR_CODE_SCANNER :24 / ACTION_BLUETOOTH_LE_AUDIO_QR_CODE_SCANNER :29-30 / EXTRA_BLUETOOTH_DEVICE_SINK :35 / EXTRA_BLUETOOTH_SINK_IS_GROUP :41)在 java/kt/xml 全仓零引用——手机端 Settings 的遗物,为与 AOSP 上游同形而保留。
  • BluetoothLeBroadcastMetadataExt.kt 仅存在于 xcddif/f3dif,全仓引用它的只有同 flavor 的 LocalBluetoothLeBroadcastMetadata.kt:19 import、:29 调用 convertToBroadcastMetadata)。

3. 与既有篇目分工

问题
广播注册/Callback 三 flavor 总表51 §1/§4
回调契约与接入方法23
QR 字段协议/编解码规则/flavor 差异81(本系列)
CachedBluetoothDevice / active 设备闭环60 / 70 系列
LocalBluetoothLeBroadcast 源管理(开广播/加源/广播助手)未覆盖,留待 82+

4. 关键锚点速查(红队核对版)

事实锚点
xcddif SCHEME = “BT:“xcddif/.../bluetooth/BluetoothBroadcastUtils.java:46
f3dif SCHEME = “BLUETOOTH:UUID:184F;“f3dif/.../bluetooth/BluetoothBroadcastUtils.java:46
两 flavor 该文件唯一差异 = 第 46 行diff 输出仅 46c46
Ext 引用 SCHEMEBluetoothLeBroadcastMetadataExt.kt:29(两 flavor)
LocalBluetoothLeBroadcastMetadata 调用 ExtLocalBluetoothLeBroadcastMetadata.kt:19/:29(两 flavor)
dcddif 无 Broadcast/LeAudio 类dcddif .../bluetooth/ 目录 26 文件清单(2026-09-06)

5. 时效声明

  • 本系列锚点 2026-09-06 于 dev 分支逐个核对。f3dif 源集已合入 dev(262 文件被跟踪,随 targetSdk 37 适配 b57402a19 等提交),dev 的 f3dif CachedBluetoothDevice.java 与 dev_a17_0610 分支为同一 blob——60 系列 f3dif 行号(2719 行基线)在 dev 可直接复用。
  • 行号漂移是常态,引用前先 grep -n 复核;一切蓝牙行号必须标注 flavor。