-->

RxAndroidBle:设置通知,在性能和等待通知进行写(RxAndroidBle: Setup

2019-11-05 08:18发布

我使用Polidea的RxAndroidBle库在我的Android应用程序中的设备进行通信。

我是很新的反应式编程,所以我无法弄清楚究竟是如何做到以下几点:

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

我已经看到了这个相关的答案 ,但它使用的库的第一个版本做,我无法弄清楚如何使用新的版本来做到这一点。

谢谢。

Answer 1:

我结束了我自己想出来的。 下面是一个方法,其设置在一个特性的指示或通知,然后写入一些字节另一特征,并返回一个Observable<String>发出的byte[]解析,以十六进制String中读取的通知/指示。

希望它可以帮助别人寻找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);
}


文章来源: RxAndroidBle: Setup notification, write on characteristic and wait for notification to proceed