赞
踩
这里的其他答案可能比这个更好,但这是我解决问题的方法.在使用之前一定要尝试
Emil’s的答案.
我所做的事情因为时间太慢而无法等待它,因为它总是在变化,检查rssi.如果有一段时间,让我们说3秒,其中值保持不变,它会断开与设备的连接.这绕过了15秒的超时并添加了我们自己的超时.
这将是检查信号强度所需的.这是几年前写的,所以有些事情可能需要改变.
private final BluetoothGattCallback mGattCallback = new BluetoothGattCallback() {
@Override
public void onReadRemoteRssi(BluetoothGatt gatt, int rssi, int status){
//check for signal strength changes. It will stay the same if we
//are getting no updates
if(mLastRssi == rssi){
disconnectCounter++;
if(disconnectCounter> 140) {
//disconnect logic as if we are done with connection
//maybe start listening for device again to reconnect
disconnectCounter = 0;
}
}
else{
//we are connected. reset counter
disconnectCounter = 0;
}
//store last value as global for comparison
mLastRssi= rssi;
}
}
在循环的某个地方,打电话
mBluetoothGatt.readRemoteRssi()
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。