2

我在传递一个(有效的)UUID 时使用 scanBleDevices 方法时遇到问题 - 订阅永远不会触发。目前我有一个使用扫描、连接、读/写的常用 android 方法的工作原型,但我想更新我的 RxAndroidBle 语法以使事情更安全、更易于阅读。

这是我的 RxAndroidBle 实现 -不工作/订阅永远不会触发:

在此处输入图像描述

您可能会认为我的 UUID 是错误的,但这是我使用非常有状态的先前版本所做的一些替代实现 -相同的 uuid,这有效:

在此处输入图像描述

mLeScanCallback 将被触发。

我正在使用 RxAndroidBle 版本 1.2.2 并且我的手机是 Nexus 6P android 版本 6.0.1

一些附加信息:如果我使用 scanBleDevices(),没有参数,我可以通过检查制造数据中的某些内容来找到我想要的 rxBleScanResult,无论如何我都会这样做。但为了安全起见,我也想过滤 UUID。当我找到我想要的包 bytes[] 时,我尝试使用 (deprecated) 提取我的 UUID new UUIDUtil().extractUUIDs(rxBleScanResult.getScanRecord()),但这返回了一个空列表。只是为了进一步确定,当我使用老式的 mLeScanCallback 时,上面的 extractUUIDS 也会导致一个空列表。

谢谢你的时间!

4

1 回答 1

1

这实际上是RxAndroidBle库中的一个错误。UUIDUtil正如在(https://github.com/Polidea/RxAndroidBle/commit/ee59e0ab9ae3c483f5c4f35c7729e9fc2068ee21#diff-c7944d4c01c56adf4e6c67c7f7f737e8 )中看到的那样- 它负责从蓝牙 UUID 中提取服务 UUID 广告 - 它缺少 32 位 UUID 该修复程序已添加到刚刚发布的版本1.2.3中。

于 2017-06-01T12:08:03.363 回答