Android: 如何获取蓝牙设备的更多信息?
Android: How to get more information of a bluetooth device?
除了名称和 MAC 地址之外,是否可以获得有关 bondedDevices 的更多信息?因此,例如,您可以确定它到底是什么设备(例如 Gear S3 或三星无线耳塞等)。我似乎无法获得这些信息,但它一定是可能的,对吧?
不适用于 "classic Bluetooth devices",与低功耗蓝牙 (BLE) 设备相反。
型号、制造商名称等信息被认为是 BLE 设备的标准 "GATT characteristics"。
通常,在连接到设备的 GATT 服务器后,您可以 "discover" 设备上的各种信息。连接过程的一部分涉及指定一个回调接口,您可以从该接口发送对 GATT 服务器信息的请求:
- GATT 服务
- GATT 特性(针对每个 GATT 服务)
已绑定的蓝牙设备将不会包含您寻找的额外信息,除了名称和 MAC 地址。
此外,我发现与 BLE 设备真正绑定是不可靠的(如果不是不可能的话)。
要获得您要查找的信息,您需要"discover" GATT 服务,然后为每项服务列出它们的 GATT 特征。绘制出特征后,您就可以发送读取请求。一切都是异步完成的,这就是为什么您的应用程序必须为初始 'BluetoothDevice.connectGatt' 命令提供回调接口的原因。
如果您以后需要保留此信息(当设备未开机时),则由您的应用程序将发现的信息保存在某个地方(SQLite 数据库等)
我的一个观察结果让我非常沮丧,尽管蓝牙核心规范定义了标准的 GATT 特性,但这并不意味着设备制造商将遵循该标准。
例如,许多测量 "health" 数据的蓝牙 (BLE) 设备不使用专门为此目的定义的 GATT 特性。他们倾向于定义自己的自定义特征。
也就是说,型号、制造商名称、SW/HW/FW 版本号都非常标准。
除了名称和 MAC 地址之外,是否可以获得有关 bondedDevices 的更多信息?因此,例如,您可以确定它到底是什么设备(例如 Gear S3 或三星无线耳塞等)。我似乎无法获得这些信息,但它一定是可能的,对吧?
不适用于 "classic Bluetooth devices",与低功耗蓝牙 (BLE) 设备相反。
型号、制造商名称等信息被认为是 BLE 设备的标准 "GATT characteristics"。
通常,在连接到设备的 GATT 服务器后,您可以 "discover" 设备上的各种信息。连接过程的一部分涉及指定一个回调接口,您可以从该接口发送对 GATT 服务器信息的请求:
- GATT 服务
- GATT 特性(针对每个 GATT 服务)
已绑定的蓝牙设备将不会包含您寻找的额外信息,除了名称和 MAC 地址。
此外,我发现与 BLE 设备真正绑定是不可靠的(如果不是不可能的话)。
要获得您要查找的信息,您需要"discover" GATT 服务,然后为每项服务列出它们的 GATT 特征。绘制出特征后,您就可以发送读取请求。一切都是异步完成的,这就是为什么您的应用程序必须为初始 'BluetoothDevice.connectGatt' 命令提供回调接口的原因。
如果您以后需要保留此信息(当设备未开机时),则由您的应用程序将发现的信息保存在某个地方(SQLite 数据库等)
我的一个观察结果让我非常沮丧,尽管蓝牙核心规范定义了标准的 GATT 特性,但这并不意味着设备制造商将遵循该标准。
例如,许多测量 "health" 数据的蓝牙 (BLE) 设备不使用专门为此目的定义的 GATT 特性。他们倾向于定义自己的自定义特征。
也就是说,型号、制造商名称、SW/HW/FW 版本号都非常标准。