从 Android 16 开始,Android 框架包含一个名为 Android 信息服务 (AIS) 的通用属性 (GATT) 服务,可让蓝牙设备将 Android API 级别读取为该服务的 GATT 特征。借助此服务,蓝牙设备制造商可以了解蓝牙外围设备是否与搭载 Android OS 的中央设备配对,并根据 API 级别管理专用逻辑。
Android 信息服务 (AIS)
AIS 是一项标准 GATT 服务,并且设备上只能有一个 AIS 实例。主要服务 UUID 为 e73e0001-ef1b-4e74-8291-2e4f3164f3b5
。Android API 级别特性 (UUID:e73e0002-ef1b-4e74-8291-2e4f3164f3b5
) 包含设备的 API 级别,以二进制形式(小端)的无符号 32 位整数表示。Android API 级别特性的值长度为 4 个字节(例如,API 级别 36 为 0x24_00_00_00
)。当设备可检测到时,无需身份验证或授权即可读取 Android API 级别特性值。当设备不可检测时,只有经过身份验证和授权才能读取 Android API 级别特性。
探索该服务
蓝牙设备处于 GATT 客户端角色,Android 设备处于服务器角色。如需发现 AIS 并读取 Android API 级别,蓝牙设备会使用 GATT 配置文件过程,例如主要服务发现、特征发现和特征值读取过程。如需详细了解这些过程,请参阅 GATT 配置文件规范。
API 级别由 ro.build.version.sdk
系统属性定义。如果无法发现主要服务,则表示系统属性未定义或值设为空,或者主机操作系统不是 Android。
验证
如需验证是否可以发现 AIS,请通过将蓝牙外围设备与 Android 设备配对,然后在发现的主要服务中查找 AIS 服务 UUID,以运行手动测试。