我正在使用RxAndroidBle library连接到android设备,但找不到任何方法来连接BLE设备并发送MTU请求并通过一次服务UUID通过服务UUID获取服务的特征UUID
描述问题
我需要连接BLE设备并发送MTU请求,并通过Service UUID逐步获取服务的特征UUID
要复制
重现行为的步骤:
其他上下文 我无法结合所有方法,也无法一个接一个地调用
private Observable<RxBleConnection> connectionObservable;
private PublishSubject<Boolean> disconnectTriggerSubject = PublishSubject.create();
private void connect() {
Disposable disposable = connectionObservable
.flatMapSingle(rxConn -> rxConn.requestMtu(RxBleConnection.GATT_MTU_MAXIMUM))
.doOnComplete(() -> {
Disposable notifDisposable = connectionObservable.doOnNext(rxBleConnection -> {
Single<Integer> mtu = rxBleConnection.requestMtu(RxBleConnection.GATT_MTU_MAXIMUM);
Log.w("TAG_TAG", "notif --> Mtu: " + rxBleConnection.getMtu());
}).flatMapSingle(RxBleConnection::discoverServices)
.flatMapSingle(rxBleDeviceServices -> rxBleDeviceServices.getCharacteristic(CHARACTERISTIC_UUID))
.doOnComplete(() -> {
Disposable reedDisposable = connectionObservable.flatMapSingle(RxBleConnection::discoverServices)
.flatMapSingle(rxBleDeviceServices -> rxBleDeviceServices.getCharacteristic(CHARACTERISTIC_UUID))
.subscribe(
characteristic -> {
Log.w("TAG_TAG", "reed --> Value: " + Arrays.toString(characteristic.getValue()));
if (characteristic.getValue() != null) {
Log.w("TAG_TAG", "reed --> Value: " + characteristic.getValue().length + " , HexString: " + toHexString(characteristic.getValue()));
}
},
this::onConnectionFailure,
this::onConnectionFinished
);
})
.subscribe(
characteristic -> {
Log.w("TAG_TAG", "notif --> Value: " + Arrays.toString(characteristic.getValue()));
if (characteristic.getValue() != null) {
Log.w("TAG_TAG", "notif --> Value: " + characteristic.getValue().length + " , HexString: " + toHexString(characteristic.getValue()));
}
},
this::onConnectionFailure,
this::onConnectionFinished
);
})
.subscribe(
integer -> {
Log.w("TAG_TAG", "connect --> Integer: " + integer);
}
);
}