我使用了很多设备成功使用了polidea库(1.4.2),但是,华为P9根本无法连接。 我可以分享的代码如下:
public Flowable<Integer> connectToRobot(String address) {
initBleDevice(address);
initInternalLibrary(); -> cannot share code for this.
return RxJavaInterop.toV2Flowable(rxBleDevice.establishConnection(false))
.observeOn(AndroidSchedulers.mainThread())
.delay(5, TimeUnit.SECONDS)
.doOnNext(conn -> connection = conn)
.flatMap(new Function<RxBleConnection, Publisher<Observable<byte[]>>>() {
@Override
public Publisher<Observable<byte[]>> apply(@NonNull RxBleConnection conn) throws Exception {
return RxJavaInterop.toV2Flowable(connection.setupNotification(UUID.fromString(notifyCharacteristic)))
.observeOn(AndroidSchedulers.mainThread())
.doOnNext(observable -> internalMethod()// cannot share)
.doOnNext(observable -> observable.subscribe(new Action1<byte[]>() {
@Override
public void call(byte[] bytes) {
//internal code
}
}, new Action1<Throwable>() {
@Override
public void call(Throwable throwable) {
Log.e(TAG, "Throwable in receiving byte data." + throwable);
}
}))
.onErrorResumeNext(throwable -> {
return Flowable.error(new RobBleCoreException(throwable));
});
}
})
private void initBleDevice(String address) {
this.rxBleDevice = rxBleClient.getBleDevice(address);
}
我认为延迟会解决问题,但似乎不是。 任何人都可以告诉我为什么这段代码可以使用很多设备:
但无法使用华为P9(型号EVAL-L19)Android 7以及P8,Android 6或7.0(不确定,我正在等待详细的错误报告)。 在调试期间,我注意到收到了断开连接异常。
exception:cc.robart.bluetooth.sdk.exceptions.RobBleCoreException: BleDisconnectedException{bluetoothDeviceAddress='34:15:13:E2:18:CA'}