【问题标题】:Android BluetoothDevice: obtain paired device type when Bluetooth Low EnergyAndroid BluetoothDevice:低功耗蓝牙时获取配对设备类型
【发布时间】:2018-04-13 09:27:34
【问题描述】:

这就是问题所在。用户之前运行过我的应用程序,发现并与蓝牙低功耗健康设备配对。这就是该应用程序与健康设备一起使用的所有内容。我会跟踪该设备,因此只要该应用正在运行,该应用就能够自动重新连接到该设备。

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

但这就是问题所在。 BTLE 无法知道设备是什么。当我检查 BluetoothDevice.getBluetoothClass().getDeviceClass() 或 .getMajorDeviceClass() 时,它们都给出相同的结果:0x1F00 表示“UNCATEGORIZED”。因此,如果有人与 BTLE 耳机配对,我会将其包含在我的列表中。

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

【问题讨论】:

    标签: android-ble


    【解决方案1】:

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

    在重新连接时,只需对照我保存的列表检查每个已配对的设备(由 Android 操作系统保存),如果它们匹配,则启动与该设备的挂起连接。它有效,但似乎令人沮丧的低技术。至少我没有开始挂起连接一副耳机。

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

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

    【讨论】:

      猜你喜欢
      • 2015-06-25
      • 2013-08-14
      • 1970-01-01
      • 1970-01-01
      • 2016-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多