如何使用 RxAndroidBle 结合服务发现和读取特征
How to combine service discovery and read characteristic using RxAndroidBle
我是 Rx 编程的新手。我现在正在尝试使用 RxAndroidBle
来发现 BLE 设备的服务并从设备中读取一些特征。
我可以用
device.establishConnection(false)
.flatMap(rxBleConnection -> rxBleConnection.discoverServices());
查找设备服务
并使用
device.establishConnection(false)
.flatMap(rxBleConnection -> rxBleConnection.readCharacteristic(characteristicUUID));
读取想要的特征
但我想知道是否可以将这两个任务结合在一起?如果可以,我该怎么做?
非常感谢您的提示和帮助!
我看到您正在使用辅助方法 readCharacteristic(UUID)
。您完全可以跳过发现过程,图书馆会在幕后为您无缝完成。
当然可以,只需将 flatMap 与 zip 一起使用或与合并一起使用即可。有很多方法,但这是一种基本且愚蠢的方法。
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 培训。
我是 Rx 编程的新手。我现在正在尝试使用 RxAndroidBle
来发现 BLE 设备的服务并从设备中读取一些特征。
我可以用
device.establishConnection(false)
.flatMap(rxBleConnection -> rxBleConnection.discoverServices());
查找设备服务
并使用
device.establishConnection(false)
.flatMap(rxBleConnection -> rxBleConnection.readCharacteristic(characteristicUUID));
读取想要的特征
但我想知道是否可以将这两个任务结合在一起?如果可以,我该怎么做?
非常感谢您的提示和帮助!
我看到您正在使用辅助方法 readCharacteristic(UUID)
。您完全可以跳过发现过程,图书馆会在幕后为您无缝完成。
当然可以,只需将 flatMap 与 zip 一起使用或与合并一起使用即可。有很多方法,但这是一种基本且愚蠢的方法。
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 培训。