【问题标题】:Bluetooth LE 'onConnectionStateChange' will not called after 'connectGatt'在“connectGatt”之后不会调用蓝牙 LE“onConnectionStateChange”
【发布时间】:2021-10-05 11:36:28
【问题描述】:

我正在 Java 中的 Android-Studios 上使用蓝牙 LE 开展项目。 不幸的是,我被困在 connectGatt() onConnectionStateChange() 之间的过程中。 在每次 onScanResult 之后,我都会尝试连接到找到的设备:Logcat-Output。这会重复发生约 20 次,而不会调用“onConnectionStateChange”。之后它会自动关闭所有连接,可能是由 Android 关闭,因为会调用很多连接“onConnectionStateChange”(因为“断开”)。

'connectGatt' 调用'connect',但不调用'onConnectionStateChange' - 所以我猜问题是'connectGatt'。

我的问题的简单伪代码:

btLeScanner.startScan(scanCallback);

public class BtLeScanCallback extends ScanCallback {
    @Override
        public void onScanResult(int callbackType, ScanResult result) {
            BluetoothDevice device = result.getDevice();
            BluetoothGatt bluetoothGatt = device.connectGatt(context, autoConnect, callback, BluetoothDevice.TRANSPORT_LE);
        }
   
public class BtGattCallback extends BluetoothGattCallback {
    @Override
    public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState) {
        Log.i(TAG, "ConnectionState: " + newState);

        switch (newState){
            case STATE_CONNECTED:
                Log.i(TAG, "State connected.");
                gatt.discoverServices();
                break;
            case STATE_DISCONNECTED:
                Log.i(TAG, "State disconnected.");
                gatt.close();
                break;
            }
    }

有人知道吗? :D 我将不胜感激。

【问题讨论】:

    标签: java android bluetooth bluetooth-lowenergy


    【解决方案1】:

    您一次只能连接到一台设备。因此,当您找到设备然后连接时停止扫描。然后等待连接完成。之后,您可以开始扫描更多设备。

    【讨论】:

    • 我以为我最多可以同时连接6台设备?根据我的代码,一旦找到设备就会建立连接。我在回调中收到了通知。一旦发生这种情况,就会调用“discoverServices ()”,并在连接过期后在其回调中关闭连接(断开连接并关闭)。因此,无论如何它不应该有超过 6 个同时连接。但是,是的,有序的搜索本身就可以解决问题,因为我通过相反的方式疯狂地连接。 ^^
    • 但是有一个问题:所以我可以在调用 onConnectionState 后再次开始扫描,还是等到所有可能的回调都被调用?
    • Edit 不,没有解决我的问题。我现在已经尝试过了,以便它在第一个设备之后结束搜索。但仍然没有调用回调。 o.O.
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-26
    • 2013-10-25
    • 1970-01-01
    • 1970-01-01
    • 2018-03-02
    相关资源
    最近更新 更多