【问题标题】:Bluetooth GATT disconnect onConnectionStateChange not called蓝牙 GATT 断开连接状态更改未调用
【发布时间】:2015-03-04 23:14:26
【问题描述】:

我正在尝试通过安排一个计时器并手动调用BluetoothGatt.disconnect() 在我的蓝牙 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? 它适用于另一个回调和操作

【问题讨论】:

  • 我遇到了同样的问题。它是如此随机。我调用了 disconnect() 和 close() 方法。 onConnectionStateChange 有时会调用,但并非总是如此。

标签: android bluetooth bluetooth-lowenergy gatt


【解决方案1】:

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

【讨论】:

  • 我可以吻你!这是我的问题。非常感谢!我在断开连接方法中调用了我的关闭方法,因此它在调用之前“未注册”。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-16
    • 1970-01-01
    • 2012-10-09
    • 2018-06-25
    • 1970-01-01
    • 2017-03-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多