蓝牙GATT断开onConnectionStateChange未调用

时间:2015-01-07 05:35:26

标签: android bluetooth bluetooth-lowenergy gatt

我正在尝试通过计划定时器并在手动调用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? 它适用于另一个回调和操作

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

要断开设备连接,我使用设备的gatt链接,并使用BluetoothGatt.disconnect()和BluetoothGatt.close()方法。

这很有用,但没有调用onConnectionStateChange(),因为我关闭了通量。