Android BluetoothDevice:获取低功耗蓝牙时配对的设备类型

Android BluetoothDevice: obtain paired device type when Bluetooth Low Energy

问题来了。用户之前有 运行 我的应用程序,发现并与低功耗蓝牙健康设备配对。该应用程序仅适用于健康设备。我会跟踪该设备,以便该应用能够在 运行ning 期间自动重新连接到该设备。

如果用户退出应用程序或重新启动 Android 并重新启动应用程序,我想设置与这些配对设备的自动重新连接。在使用 HDP 的 classic 中,这是由 Android 自动完成的。在 BTLE 中不是这样!所以我要做的是浏览配对设备列表并将它们添加到我的已知设备列表中。

但问题来了。在 BTLE 中无法知道设备是什么。当我检查 BluetoothDevice.getBluetoothClass().getDeviceClass() 或 .getMajorDeviceClass() 时,它们都给出相同的结果:0x1F00,这意味着 'UNCATEGORIZED'。所以如果有人配对了 BTLE 耳机,我会把它包括在我的列表中。

有没有一种方法可以获取 BTLE 设备 class 或类别,而无需自己将一堆东西保存到文件中?保存 BT 地址将不起作用,因为 BTLE 设备可以使用随机寻址(尽管大多数不会)。

我不想这么说,但我得出的结论是没有办法...所以我必须自己做。当我的应用程序的用户接受设备配对时,我会保留其友好名称并将其保存到共享首选项中。我考虑过保留地址,但 BTLE 地址可以是可解析的私有地址,所以我放弃了这个想法。我懒得序列化 BluetoothDevice 对象并保存它,但这可能是最可靠的。

重新连接时,只需根据我保存的列表检查每个配对设备(由 Android OS 保存),如果它们匹配,则启动与设备的挂起连接。它有效,但似乎技术含量低得令人沮丧。至少我不启动挂起连接一副耳机。

如果我使用扫描方法而不是挂起连接方法来解决重新连接问题,我只需将配对设备添加到已知设备列表中即可。

如果有人有更好的解决方案,请post!!