RxAndroidBle:设置通知,写入特性并等待通知继续

RxAndroidBle: Setup notification, write on characteristic and wait for notification to proceed

我正在使用 Polidea's RxAndroidBle library 与我的 Android 应用程序中的设备通信。

我是响应式编程的新手,所以我不知道如何执行以下操作:

  1. 在一项特性(特性 A)中设置通知。
  2. 完成通知设置后,写入另一个特征(特征 B)。这将触发来自特性 A 的通知。
  3. 写操作完成后,等待特性A中Notification的到来
  4. 在应用程序的不同部分多次重复相同的步骤(1 到 3)。

我看过this related answer,但它是使用第一个版本的库完成的,我不知道如何使用新版本。

谢谢。

我自己搞定了。这是一种在特性中设置指示或通知的方法,然后将一些字节写入另一个特性和 returns 一个 Observable<String> 发出 byte[] 解析为十六进制 String在 notification/indication.

上阅读

希望它能帮助其他人在 RxJava2 中寻找这个解决方案。

private Observable<String> writeAndReadOnNotification(UUID writeTo, UUID readOn,
                                                      String hexString,
                                                      boolean isIndication,
                                                      RxBleConnection rxBleConnection) {
    Observable<Observable<byte[]>> notifObservable =
            isIndication ?
                    rxBleConnection.setupIndication(readOn) :
                    rxBleConnection.setupNotification(readOn);
    return notifObservable.flatMap(
            (notificationObservable) -> Observable.combineLatest(
                    rxBleConnection.writeCharacteristic(writeTo, hexToBytes(hexString)).toObservable(),
                    notificationObservable.take(1),
                    (writtenBytes, responseBytes) -> bytesToHex(responseBytes)
            )
    ).take(1)
            .observeOn(AndroidSchedulers.mainThread())
            .doOnError(this::throwException);
}