6

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

4

2 回答 2

2

您的 disconnect() 方法是否也关闭了连接?仅在您使用完设备后才调用 BluetoothGatt.close(),否则您的回调将被取消注册

于 2016-11-15T19:51:28.287 回答
0

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

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

于 2015-02-12T15:02:15.243 回答