【问题标题】:calling connectGatt() and createBond() together一起调用 connectGatt() 和 createBond()
【发布时间】:2020-12-24 17:00:44
【问题描述】:

我正在尝试在我的 Android 手机和我的设备之间建立联系。在他们通过我的gattCallback 调用device.connectGatt() 连接之前。但是现在我还想通过调用device.createBond() 添加绑定,我的onConnectionStateChange 显示连接和断开的交替模式,连接时状态码为0,断开时状态码为8。这是我尝试将connectGattcreateBond 一起使用的代码的sn-p。

    @Override
    public void onScanResult(int callbackType, ScanResult result) {
        System.out.println("on scan result");
        super.onScanResult(callbackType, result);
        BluetoothDevice device = result.getDevice();
        synchronized (this) {
            if (mBluetoothGatt == null) {
                if (device.createBond()) {
                    System.out.println("create bond success");
                    mBluetoothGatt = device.connectGatt(mListener.retrieveApplicationContext(), true, mGattCallback);
                }
                else System.out.println("create bond sb");
            }
        }
    }

这样调用这两个方法有什么问题吗?我在互联网上搜索了创建债券,但没有一个页面同时使用 createBond 和 connectGatt。我只是从这篇文章中得到了关于如何以这种方式调用这两种方法的提示:Android BLE onCharacteristicChanged() using notify not triggered

另外,我的BroadCastReceiver 也总是显示设备绑定,但从不显示设备绑定。

【问题讨论】:

    标签: android bluetooth-lowenergy nrf51


    【解决方案1】:

    createBond 方法将在内部首先连接到设备,如果未使用 autoConnect 设置为 false 进行连接。这意味着如果设备在此期间从未成功连接,则绑定尝试将在 30 秒后中止。但是您使用设置为 true 的autoConnect 进行连接,这意味着没有超时。因此,如果由于某种原因需要 31 秒才能连接,则不会发生绑定。

    如果我是你,我会先自己连接设备,当设备成功连接并发现服务(并检查它是否具有所需的服务)后,致电createBond,以确保一切正常粘合。

    状态码 8 表示“连接超时”。这意味着连接已启动并正在运行,但在无线电级别上意外断开,这不是软件错误,而是当您超出范围时自然发生的事情,也可能是由于硬件错误,例如固件错误或晶体时钟频率错误。

    【讨论】:

    • 所以你是说状态码 8 可能是固件方面的问题?你能给出更具体的固件问题吗?我一直在想是android端的错还是固件端的错。
    • 例如,如果固件代码崩溃并且设备重新启动。
    • 我实际上确实在找到服务后尝试调用 createBond(),但同样的事情也发生了:状态码 0 连接和状态码 8 来回断开连接。我很确定这不应该是因为固件代码崩溃或设备重新启动,因为在我删除 createBond() 方法后一切正常。固件方面是否还有其他可能的原因导致此状态码 0 和 8 来回模式?
    • 这就像询问为什么 Web 服务器在向其发送特定请求后停止响应。使用 BLE 空气嗅探器或使用调试器可能会找出发生了什么。
    猜你喜欢
    • 1970-01-01
    • 2015-01-31
    • 2012-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多