1

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

我可以用

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

查找设备服务

并使用

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

读通缉特征

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

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

4

1 回答 1

1

我看到您正在使用辅助方法readCharacteristic(UUID)。你完全可以跳过这个发现,图书馆会在后台无缝地为你做这件事。

当然,只需使用带有 zip 的 flatMap 或使用合并发布即可。有很多方法,但这是一种基本且愚蠢的方法。

 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 培训。

于 2017-05-11T10:55:28.750 回答