gpt4 book ai didi

java - 使用 rxandroidble 进行写入/通知处理

转载 作者:行者123 更新时间:2023-11-30 00:00:58 24 4
gpt4 key购买 nike

我正在尝试实现这个写入/通知处理示例 (Using RxAndroidBle, how do I subscribe to responses from writing to a characteristic?)。

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() 的编译时错误。它说“Observable 中的 first(byte[]) 不能应用于 ()”。所以我不知道应该将什么参数传递给第一种方法。

最佳答案

你得到这个错误的原因是因为原始答案是为 RxAndroidBleRxJava1 版本提供的,而你正在使用 RxJava2至少在上面的例子中是这样。

RxJava1RxJava2 之间,方法 Observable.first() 改变了签名和实现。 RxJava2 的等效函数是 Observable.take(int count)

你应该改变这一行:

apScanDataNotificationObservable.first(),

对此:

apScanDataNotificationObservable.take(1),

此外,Observable.combineLatest() 接受两个 Observable 参数,其中 rxBleConnection.writeCharacteristic() 是一个 Single。你应该改变这一行:

rxBleConnection.writeCharacteristic(RX_CHAR_UUID, getInputBytes()),

对此:

rxBleConnection.writeCharacteristic(RX_CHAR_UUID, getInputBytes()).toObservable(),

关于java - 使用 rxandroidble 进行写入/通知处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49921894/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com