Android:如何获取蓝牙设备的更多信息?

时间:2020-02-08 22:03:38

标签: android kotlin bluetooth

是否可以获取有关名称和MAC地址之外的bondedDevices的更多信息?因此,例如,您可以确定确切的设备(例如Gear S3或Samsung无线耳塞等)。我似乎无法获得这些信息,但一定有可能,对吧?

1 个答案:

答案 0 :(得分:1)

不适用于“经典蓝牙设备”,而不是蓝牙低功耗(BLE)设备。

诸如型号,制造商名称等信息被视为BLE设备的标准“ G​​ATT特性”。

通常,连接到GATT服务器后,您可以在该设备上“发现”各种信息。连接过程的一部分涉及指定一个回调接口,您可以从该接口发送有关GATT服务器信息的请求:

  • 关贸总协定服务
  • GATT特征(针对每个GATT服务)

已绑定的蓝牙设备将不包含您要查找的其他信息,除了名称和MAC地址

此外,我发现与BLE设备进行真正绑定是不可靠的(如果不是不可能的话)。

要获取您想要的信息,您需要“发现” GATT服务,然后为每个服务列出其GATT特征。绘制出特征后,即可发送读取请求。一切都是异步完成的,这就是为什么您的应用必须为初始“ BluetoothDevice.connectGatt”命令提供回调接口的原因。

如果以后需要保留此信息(在设备未加电时),则由您的应用决定将发现的信息保存在某个地方(SQLite数据库等)

我所观察到的一个事实是,尽管蓝牙核心规范定义了标准GATT特性,但这并不意味着该设备的制造商将遵循该标准。

例如,许多测量“健康”数据的蓝牙(BLE)设备未使用专门为此目的定义的GATT特性。他们倾向于定义自己的自定义特征。

话虽这么说,型号,制造商名称,软件/硬件/固件版本号几乎都是标准的。