Получите характерный гейт из Уведомления - PullRequest
0 голосов
/ 18 октября 2018

Я использую RxAndroidBle с kotlin.До сих пор я мог установить несколько уведомлений, и я их получаю.

Как мне сопоставить уведомление с его конкретной характеристикой?

Пока:

enter code here connectionObserver
            .flatMap { rxBleConnection ->
                rxBleConnection.discoverServices().flatMap { services -> services.getService(ServiceUUID).map(BluetoothGattService::getCharacteristics) }
                        .flatMapObservable { s -> fromIterable(s) }
                        .flatMap { characteristic -> rxBleConnection.setupNotification(characteristic)
                                .flatMap{ notificationObservable -> notificationObservable}}
            }.observeOn(AndroidSchedulers.mainThread())
            .subscribe{notification->notification}

Спасибо

1 Ответ

0 голосов
/ 18 октября 2018

для тех, кто борется с kotlin и RxAndroidBluetooth, после некоторой работы заставляю его работать, поэтому оригинальный код выглядит как

enter code here  connectionObserver
            .flatMap { rxBleConnection ->
                rxBleConnection.discoverServices().flatMap { services -> services.getService(ServiceUUID).map(BluetoothGattService::getCharacteristics) }
                        .flatMapObservable { s -> fromIterable(s) }
                        .flatMap { characteristic ->
                            rxBleConnection.setupNotification(characteristic)
                                    .flatMap { notificationObservable -> notificationObservable.flatMap { result -> Observable.just(result).zipWith(fromArray(getBytesFromUUID(characteristic.uuid))) } }
                        }

            }.observeOn(AndroidSchedulers.mainThread())
            .subscribe { notification -> onNotificationReceived(notification)
            }
...