设备信息

提供方可以通过 消息流向搜索方通知设备信息。

消息组名称
设备信息事件 0x03
设备信息代码名称
模型 ID 0x01
BLE 地址已更新 0x02
电池已更新 0x03
剩余电池时间 0x04
活跃组件请求 0x05
活跃组件响应 0x06
(已废弃)功能 0x07
平台类型 0x08
固件版本 0x09
当前 FHN 临时标识符 0x0B

模型 ID

当消息流连接时,应将模型 ID 信息(用于 追溯写入 AccountKey) 发送给搜索方。例如,0x03010003AABBCC 将是:

  • 0x03:设备信息事件
  • 0x01:模型 ID 值
  • 0x0003:其他数据,长度为 3
  • 0xAABBCC:其他数据,模型 ID

BLE 地址

如果提供方可以获取 BLE 地址信息(用于追溯写入 AccountKey),则还应在消息流连接时以及每次地址轮换时将该信息发送给搜索方。例如,0x03020006AABBCCDDEEFF 将是:

  • 0x03:设备信息事件
  • 0x02:BLE 地址值
  • 0x0006:其他数据,长度为 6
  • 0xAABBCCDDEEFF:其他数据,BLE 地址

电池已更新

对于支持电池通知的提供方, 还可以通过消息流发送电池信息。当消息流连接或电池值发生变化时,应发送更新。通过 BLE 广播电池数据时,数据包的其他 数据部分应包含与字节 s + 2s + 3s + 4相同的数据。例如,0x0303000357417F 将是:

  • 0x03:设备信息事件
  • 0x03:电池值
  • 0x0003:其他数据,长度为 3
  • 0x57417F:其他数据,电池值
    • 0x57:左耳机值,未充电,电池电量为 87%
    • 0x41:右耳机值,未充电,电池电量为 65%
    • 0x7F:耳机盒值,未充电,电池电量未知

提供方还可以更新剩余电池时间(如果已知),例如,0x03040001F0 将是:

  • 0x03:设备信息事件
  • 0x04:剩余电池时间
  • 0x0001:其他数据,长度为 1(如果需要,对于 uint16,长度可以为 2)
  • 0xF0:其他数据,剩余电池时间(以分钟为单位),240 分钟

活跃组件

搜索方有时可能希望了解当前哪些组件处于活跃状态, 这意味着可以对这些组件执行操作(请参阅设备操作)。 当提供方收到包含活跃组件请求代码 (0x05) 的请求时,应在 1 秒内返回响应,指明提供方的当前状态。 响应将使用活跃组件响应代码 (0x06),并包含其他数据,指明哪些组件可用。

对于只有一个组件的提供方,如果该组件不可用,则应将其他数据设置为 0x00。例如,在低功耗模式下,系统不会播放媒体。否则,应将其他数据设置为 0x01。

对于具有多个组件的耳机(例如,左耳机和右耳机),其他数据中的每个位都表示该组件是否处于活跃状态。例如,处于充电盒中且未使用的耳机可能处于非活跃状态。具体来说,对于左耳机和右耳机:

  • 0x00 (0b00000000):两个耳机均处于非活跃状态
  • 0x01 (0b00000001):右耳机处于活跃状态,左耳机处于非活跃状态
  • 0x02 (0b00000010):左耳机处于活跃状态,右耳机处于非活跃状态
  • 0x03 (0b00000011):两个耳机均处于活跃状态

平台类型

提供方可能希望根据所连接的平台执行不同的操作。目前,快速配对仅通过 Android 执行,但未来可能会扩大支持范围。

该消息将在其他数据中包含一个字节,用于标识平台类型:

平台名称
Android 0x01

第二个字节将根据平台进行自定义。在 Android 中,它将引用 SDK 版本。例如,Android Pie 的值为 28 (0x1C)。

固件版本

提供方的固件版本,采用 utf-8 编码的字符串。 它与固件修订版本特征中的信息相同。

当前 FHN 临时标识符

广播 FHN 帧的提供方应报告当前的 FHN 临时标识符 (EID) 及其当前时钟值,以便在时钟漂移(例如,由于电池耗尽)时与搜索方同步。

例如:

  • 0x03:设备信息事件
  • 0x0B:当前 FHN 临时标识符消息
  • 0x0018:其他数据,长度为 24 或 36 字节
  • 0x13F9EA80:其他数据(时钟值;4 字节)
  • 0x1122334455667788990011223344556677889900:其他数据(当前 EID;20 或 32 字节)