如何使用 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 培训。