Java 使用rxandroidble进行写入/通知处理
我正在尝试实现这个写/通知处理()的示例Java 使用rxandroidble进行写入/通知处理,java,android,rx-java2,rxandroidble,Java,Android,Rx Java2,Rxandroidble,我正在尝试实现这个写/通知处理()的示例 可观察的连接 .flatMap((函数) (RxBleConnection RxBleConnection)->{ 返回rxBleConnection.setupNotification(TX\u CHAR\u UUID); }, (双功能) (RXbeConnection,apScanDataNotificationObservable)->{ 返回可观测的( rxBleConnection.writeCharacteristic(RX\u CHAR\
可观察的连接
.flatMap((函数)
(RxBleConnection RxBleConnection)->{
返回rxBleConnection.setupNotification(TX\u CHAR\u UUID);
},
(双功能)
(RXbeConnection,apScanDataNotificationObservable)->{
返回可观测的(
rxBleConnection.writeCharacteristic(RX\u CHAR\u UUID,getInputBytes()),
apScanDataNotificationObservable.first(),
新的双函数(){
@凌驾
公共字节[]应用(字节[]writtenBytes,字节[]responseBytes)引发异常{
返回响应字节;
}
}
);
}
).flatMap(新函数(){
@凌驾
公共可观测应用(可观测可观测)引发异常{
可观测收益;
}
})
.first()
.observeOn(AndroidSchedulers.mainThread())
.订阅(新消费者){
@凌驾
公共void接受(字节[]字节)引发异常{
Log.i(“Ivan1”,“通知响应…”+bytes.toString());
}
},新消费者(){
@凌驾
public void accept(Throwable Throwable)引发异常{
Log.i(“Ivan”,“通知响应…”+throwable.toString());
}
});
我尝试使用rxjava1和rxjava2编写,但在这两种情况下,我都得到了apscandaNotificationObservable.first()的编译时错误。它说“Observable中的第一个(字节[])不能应用于()”。所以我不知道我应该把什么论点传给第一种方法 出现此错误的原因是原始答案是为
RxJava1
版本的RxAndroidBle
提供的,并且您至少在上面的示例中使用了RxJava2
在RxJava1
和RxJava2
之间,方法可观察。first()
已更改签名和实现。RxJava2
的等效函数是可观察的。take(int count)
您应该更改此行:
apScanDataNotificationObservable.first(),
rxBleConnection.writeCharacteristic(RX_CHAR_UUID, getInputBytes()),
为此:
apScanDataNotificationObservable.take(1),
rxBleConnection.writeCharacteristic(RX_CHAR_UUID, getInputBytes()).toObservable(),
另外,Observable.combineTest()
接受两个Observable
参数,其中rxbeconnection.writeCharacteristic()
是一个参数。您应该更改此行:
apScanDataNotificationObservable.first(),
rxBleConnection.writeCharacteristic(RX_CHAR_UUID, getInputBytes()),
为此:
apScanDataNotificationObservable.take(1),
rxBleConnection.writeCharacteristic(RX_CHAR_UUID, getInputBytes()).toObservable(),
感谢您的回复,我已经尝试过了,然后CombineTest中的所有参数都有一条红线,带有消息“无法解析方法io.reactivex.Single,io.reactivex.Observable,匿名io.reactivex.functions.BiFunction”,在上面添加了一点答案。非常感谢,只需要更改第一个方法(1)。它起作用了