RxAndroidBLE setupNotification пропускает первое уведомление - PullRequest
0 голосов
/ 23 мая 2019

Прошивка, к которой я подключаюсь, немедленно отправляет текущие значения при подписке на уведомления.

Например, подписка на характеристику уведомления об уровне заряда батареи вернет 50% при подписке и продолжит уведомлять при любых изменениях.

Это хорошо работает с примерами приложений, и после подписки значение принимается, обрабатывается и отображается, но не с помощью rxandroidble.

Я использую следующее для настройки уведомления.Он работает для последующих уведомлений, но, похоже, не получает первоначальное уведомление, как если бы он все еще настраивал уведомление:

Disposable notifyDisposable = connectionObservable
                    .flatMap(rxBleConnection -> rxBleConnection.setupNotification(characteristic))
                    .doOnNext(notificationObservable -> L.d(TAG, "notification setup for: " + characteristic.toString()))
                    .flatMap(notificationObservable -> notificationObservable)
                    .subscribe(
                            data -> onNotificationReceived(data, notifyEvent),
                            this::onNotificationSetupFailure
                    );

Есть ли способ подготовить setupNotification до того, как он напишет флаг для подписки,чтобы он мог сразу обрабатывать полученные данные?

1 Ответ

1 голос
/ 23 мая 2019

Да, есть API для изменения поведения настройки уведомлений: RxBleConnection.setupNotification(BluetoothGattCharacteristic/UUID, NotificationSetupMode).

В вашем случае просто используйте:

rxBleConnection.setupNotification(characteristic, NotificationSetupMode.QUICK_SETUP);
...