RxAndroidBle连接超时
我正在连接到发现的设备并定期读取RSSI。我需要知道确切的连接什么时候断开。是否有任何方法指定连接超时,在此之后我将收到RxAndroidBle连接超时,android,bluetooth-lowenergy,rxandroidble,Android,Bluetooth Lowenergy,Rxandroidble,我正在连接到发现的设备并定期读取RSSI。我需要知道确切的连接什么时候断开。是否有任何方法指定连接超时,在此之后我将收到rxbeconnectionstate.DISCONNECTED?现在我仍然从rxbeconnection.readRssi()接收rssi,即使连接的设备已关机 我是否应该使用邻近蓝牙配置文件中的链路丢失服务而不是连接超时 我的代码: device1ConnectionSubscription = device.establishConnection(false)
rxbeconnectionstate.DISCONNECTED
?现在我仍然从rxbeconnection.readRssi()
接收rssi,即使连接的设备已关机
我是否应该使用邻近蓝牙配置文件中的链路丢失服务而不是连接超时
我的代码:
device1ConnectionSubscription = device.establishConnection(false)
.doOnUnsubscribe(this::clearDevice1Subscription)
.observeOn(AndroidSchedulers.mainThread())
.flatMap(rxBleConnection ->
Observable.interval(500, TimeUnit.MILLISECONDS)
.flatMap(sequence -> rxBleConnection.readRssi())
.observeOn(AndroidSchedulers.mainThread())
)
.subscribe(this::updateDevice1Rssi, this::onConnectionFailure);
device1ConnectionStateChangesSubscription = device.observeConnectionStateChanges()
.doOnUnsubscribe(() -> device1ConnectionStateChangesSubscription = null)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
connectionState -> {
switch(connectionState)
{
case DISCONNECTING:
case DISCONNECTED:
if(device1ConnectionSubscription != null) {
device1ConnectionSubscription.unsubscribe();
}
device1ConnectionStateChangesSubscription.unsubscribe();
break;
}
},
throwable -> { }
);
您要查找的参数是
连接监控超时时间
。这个参数是由设备控制的,我想不能在手机上设置。那么,有没有办法在合理的时间内检测到连接丢失(主机断电)?我可以检测到由于距离增加而导致的信号丢失,但我需要知道连接的设备是否仍在工作。通过降低连接监控超时,您可以减少时间,但这取决于设备供应商,而不是客户端。在classycode
博客上有一篇文章讲述了一个关于。TL;DR-on安卓系统硬编码为20秒。我和我们公司正在对此进行研究,我们也注意到Dariusz Seweryn在之前的评论中所说的。似乎没有解决办法。