我正在使用RxAndroidBLE库来发现我的GATT服务器中的服务。
它在大多数情况下工作正常,但我经常收到GATT错误133(0x85),它失败了。我想在一段时间内重试几次以发现服务,比如说5秒。
bleDevice = mBleClient.getBleDevice(macAddress);
subscription = bleDevice.establishConnection(false)
.flatMap(RxBleConnection::discoverServices)
.first() // Disconnect automatically after discovery
.observeOn(AndroidSchedulers.mainThread())
.doOnUnsubscribe(this::onUnsubscribe)
.compose(this.bindToLifecycle())
.retryWhen(errors -> errors.flatMap(error -> {
if (isGattError(error) {
return Observable.just(new Object());
} else {
return Observable.error(error);
}
}
))
.timeout(5, TimeUnit.SECONDS)
.subscribe(this::getScanResult, this::onConnectionFailure);
它不起作用,看起来retryWhen没有被调用。这可能更多的是rxJava的问题,但我真的非常感谢在这方面的任何帮助。