Android 未调用Bluetooth GATT断开连接状态更改

Android 未调用Bluetooth GATT断开连接状态更改,android,bluetooth,bluetooth-lowenergy,gatt,Android,Bluetooth,Bluetooth Lowenergy,Gatt,我试图通过安排一个计时器和手动调用来实现我自己的蓝牙GATT服务超时。但是,如果从远程设备触发断开连接,则回调的调用与通常发生的情况不同。还有一个来自BluetoothGatt的日志,说明调用了disconnect函数 D/BluetoothGatt﹕ cancelOpen() - device: 00:07:80:04:1A:5A 这是我断开连接的代码 private void scheduleDisconnect() { isTimerRunning = true; dis

我试图通过安排一个计时器和手动调用来实现我自己的蓝牙GATT服务超时。但是,如果从远程设备触发断开连接,则回调的调用与通常发生的情况不同。还有一个来自
BluetoothGatt
的日志,说明调用了disconnect函数

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

另一个回调和操作

可以很好地断开我的设备,我使用设备的gatt链接,并使用BluetoothGatt.disconnect()和BluetoothGatt.close()方法


这是可行的,但没有调用onConnectionStateChange(),因为我关闭了流量。

您的disconnect()方法是否也关闭了连接?只有在使用完设备后才调用BluetoothGatt.close(),否则您的回调将失败。

我也面临同样的问题。它是如此随机。我同时调用disconnect()和close()方法。onConnectionStateChange需要一些时间,但并非总是如此。请看这里:我可以吻你!这是我的问题。非常感谢!我在disconnect方法中调用了close方法,因此它在调用之前“未注册”。