2017-06-01 47 views
0

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

这里是我的RxAndroidBle实现 - 不工作/订阅从未火灾:

enter image description here

你可能会想,我的UUID是错的,但在这里的是,我没有用一个非常一些替代的实现有状态的前一版本 - 相同的UUID,这个工程:

enter image description here

mLeScanCallback将被触发。

我使用RxAndroidBle版本1.2.2 &我的手机是一台Nexus 6P的Android 6.0.1版本

一些额外的信息: 如果我使用scanBleDevices(),没有参数,我可以找到我想要的rxBleScanResult检查制造数据中的某些内容,而我仍然会这样做。但我想过滤UUID以确保安全。当我找到我想要的包字节[]时,我尝试使用(不建议使用的) new UUIDUtil().extractUUIDs(rxBleScanResult.getScanRecord())来提取我的UUID,但是这返回了一个空列表。只是为了更好地指出一些事情,当我使用老式的mLeScanCallback时,上面的extractUUIDS也会产生一个空列表。

谢谢你的时间!

回答

1

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

+0

This Works!谢谢s_noopy!我想知道你对RxAndroidBle的健康状况的看法。他们修理东西的速度非常快 - 但是这可能不是生产准备?我喜欢这个图书馆。无论如何,我想我会继续。 – Ethan

+0

因此,实际上,基于ScanPackage字节数组的过滤与scanBleDevices(UUID ...)方法上的过滤相同?好吧! – Ethan

+0

该库已在多个不同项目中用于生产,如果您的外围设备不更改服务并且未使用加密特征 - 它已准备好使用 - 上述问题接近解决。我没有收到ScanPackage部分。 –