我正在处理需要加密的特征,因此Android将自动创建绑定以执行写/读操作。
债券可能会由 操作系统。通常,将读/写请求发送到 需要加密的特征。 (reference here)
但是,第一个读/写操作将失败并带有超时(库中的默认值为30秒),但是如果我在创建绑定后立即尝试该操作,则会立即重试。
我知道第一次绑定操作总是会失败,所以我想尽快执行,而不要等30秒才能失败。为此,我要做的是为整个连接建立一个10秒的超时,如下所示:
scaleDevice.establishConnection(false, new Timeout(10, TimeUnit.SECONDS))
但是,我希望能够在建立连接后更改操作超时,因此我可以执行以下操作:
在当前版本的RxAndroidBle library中可以吗?
答案 0 :(得分:0)
我检查了库的源代码,并且意识到在当前版本的库中,建立连接后无法更改超时。
我打开了一个issue suggesting to add this functionality in the future.
关于绑定和加密特征问题,我想出了一个更好的解决方法。我确保在建立连接之前先进行绑定,而不是在第一次失败的操作之后等待自动绑定。 I achieved that by calling the bondWithDevice method available in this helper class像这样:
BondingHelper.bondWithDevice(this, scaleDevice, 30, TimeUnit.SECONDS)
.andThen(scaleDevice.establishConnection(false))
.observeOn(AndroidSchedulers.mainThread())
.doFinally(this::disposeConnection)
.subscribe(this::connectionEstablished, this::throwException);