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

时间:2018-11-20 14:22:34

标签: android bluetooth-lowenergy rx-java2 rx-android rxandroidble

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

我对响应式编程非常陌生,因此我无法确切地知道如何执行以下操作:

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

我见过this related answer,但是它是使用库的第一个版本完成的,我无法弄清楚如何使用新版本。

谢谢。

1 个答案:

答案 0 :(得分:0)

我结束了自己的思考。这是一种在特征中设置指示或通知,然后将一些字节写入另一个特征,然后返回Observable<String>的方法,该byte[]发出解析为十六进制String且已读取的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); } 通知/指示。

希望它可以帮助其他人在RxJava2中寻找该解决方案。

{{1}}