Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用rxandroidble进行写入/通知处理_Java_Android_Rx Java2_Rxandroidble - Fatal编程技术网

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)。它起作用了