我在传递一个(有效的)UUID时使用scanBleDevices方法时遇到问题 - 订阅永远不会触发。目前我有一个使用通常的扫描,连接,读/写方法的工作原型,但我想更新我的RxAndroidBle语法,使事情更安全,更容易阅读。
这是我的RxAndroidBle实现 - 不工作/订阅永远不会触发:
你可能认为我的UUID是错误的,但是这里有一些替代实现,我使用一个非常有状态的先前版本 - 相同的uuid,这有用:
将触发mLeScanCallback。
我正在使用RxAndroidBle版本1.2.2&我的手机是Nexus 6P安卓版6.0.1
其他一些信息:
如果我使用scanBleDevices(),没有参数,我可以通过检查制造数据中的某些内容找到我想要的rxBleScanResult,无论如何我都会这样做。但我想过滤UUID也是安全的。当我找到我想要的包字节[]时,我尝试使用(不推荐使用)提取我的UUID
new UUIDUtil().extractUUIDs(rxBleScanResult.getScanRecord())
,但这返回了一个空列表。只是为了更好地解决问题,当我使用旧式的mLeScanCallback时,上面的extractUUIDS也会产生一个空列表。
谢谢你的时间!
答案 0 :(得分:1)
这实际上是RxAndroidBle
库中的一个错误。
正如人们可以在UUIDUtil
(https://github.com/Polidea/RxAndroidBle/commit/ee59e0ab9ae3c483f5c4f35c7729e9fc2068ee21#diff-c7944d4c01c56adf4e6c67c7f7f737e8)中看到的那样 - 它负责从蓝牙广告中提取服务UUID - 它缺少32位UUID。该修补程序已添加到刚发布的版本1.2.3
中。