我正在尝试通过计划定时器并在手动调用BluetoothGatt.disconnect()
的情况下在我的蓝牙GATT服务上实现自己的超时。但是,如果从远程设备触发断开连接,则不会调用回调。来自BluetoothGatt
的日志还有一个名为
D/BluetoothGatt﹕ cancelOpen() - device: 00:07:80:04:1A:5A
这是我断开连接的代码
private void scheduleDisconnect() {
isTimerRunning = true;
disconnectTimer = new Timer();
disconnectTimer.schedule(new TimerTask() {
@Override
public void run() {
isTimerRunning = false;
disconnect();
}
}, 2000);
}
为什么不调用onConnectionStateChange
?
它适用于另一个回调和操作
答案 0 :(得分:1)
您的disconnect()方法是否也关闭了连接?只有在您完成设备后才能调用BluetoothGatt.close(),否则您的回调将为unregistered。
答案 1 :(得分:0)
要断开设备连接,我使用设备的gatt链接,并使用BluetoothGatt.disconnect()和BluetoothGatt.close()方法。
这很有用,但没有调用onConnectionStateChange(),因为我关闭了通量。