Я пытаюсь реализовать этот пример обработки записи / уведомления (Используя RxAndroidBle, как мне подписаться на ответы при написании характеристики?).
connectionObservable
.flatMap((Function<RxBleConnection, Observable<Observable<byte[]>>>)
(RxBleConnection rxBleConnection) -> {
return rxBleConnection.setupNotification(TX_CHAR_UUID);
},
(BiFunction<RxBleConnection, Observable<byte[]>, Observable<byte[]>>)
(rxBleConnection, apScanDataNotificationObservable) -> {
return Observable.combineLatest(
rxBleConnection.writeCharacteristic(RX_CHAR_UUID, getInputBytes()),
apScanDataNotificationObservable.first(),
new BiFunction<byte[], byte[], byte[]>() {
@Override
public byte[] apply(byte[] writtenBytes, byte[] responseBytes) throws Exception {
return responseBytes;
}
}
);
}
).flatMap(new Function<Observable<byte[]>, Observable<byte[]>>() {
@Override
public Observable<byte[]> apply(Observable<byte[]> observable) throws Exception {
return observable;
}
})
.first()
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<byte[]>() {
@Override
public void accept(byte[] bytes) throws Exception {
Log.i("Ivan1", "notification response...." + bytes.toString());
}
}, new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {
Log.i("Ivan", "notification response...." + throwable.toString());
}
});
Я пытался писать с помощью rxjava1 и rxjava2, но в обоих случаях я получил ошибку времени компиляции для apScanDataNotificationObservable.first (). Он говорит: «first (byte []) в Observable не может быть применен к ()». Поэтому я не знаю, какой аргумент передать первому методу.