如何使用RxAndroidBle组合服务发现和读取特性

时间:2017-05-11 10:48:17

标签: android rx-java rxandroidble

我是Rx编程新手。我现在正尝试使用RxAndroidBle来发现BLE设备'服务并从设备中读取一些特征。

我可以用

device.establishConnection(false)
  .flatMap(rxBleConnection -> rxBleConnection.discoverServices());

查找设备服务

并使用

device.establishConnection(false)
  .flatMap(rxBleConnection -> rxBleConnection.readCharacteristic(characteristicUUID));

阅读想要的特征

但我想知道是否可以将这两项任务结合在一起?如果可能的话,我该怎么做?

非常感谢您的提示和帮助!

1 个答案:

答案 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培训,那就最好了。