我是Rx编程新手。我现在正尝试使用RxAndroidBle
来发现BLE设备'服务并从设备中读取一些特征。
我可以用
device.establishConnection(false)
.flatMap(rxBleConnection -> rxBleConnection.discoverServices());
查找设备服务
并使用
device.establishConnection(false)
.flatMap(rxBleConnection -> rxBleConnection.readCharacteristic(characteristicUUID));
阅读想要的特征
但我想知道是否可以将这两项任务结合在一起?如果可能的话,我该怎么做?
非常感谢您的提示和帮助!
答案 0 :(得分:1)
我发现你正在使用辅助方法readCharacteristic(UUID)
。你可以完全跳过这个发现,图书馆将无缝地为你做这件事。
当然,只需使用带有zip的flatMap或使用merge进行发布即可。有很多方法,但这个方法基本而愚蠢。
bleDevice
.establishConnection(false)
.flatMap(connection ->
Observable.zip(
connection.readCharacteristic(UUID.randomUUID()).doOnNext(data -> doSomethingWithData(data)),
connection.discoverServices().doOnNext(services -> doSomethingWithServices(data)),
Pair::create
)
)
.subscribe();
如果你能做一些RxJava培训,那就最好了。