蓝牙 LE 'onConnectionStateChange' 在 'connectGatt' 之后不会调用



我正在做一个Java Android-Studios上的蓝牙LE项目。不幸的是,我被困在connectGatt() <->onConnectionStateChange()。每次onScanResult之后,我尝试连接到找到的设备:Logcat-Output。这将重复发生约20次,而不会调用'onConnectionStateChange'。之后,它会自动关闭所有连接,可能是Android,因为连接太多'onConnectionStateChange'(因为'disconnect')将被调用。

'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我将非常感激。

一次只能连接一个设备。所以停止扫描当你发现一个设备,然后连接。然后等待连接完成。之后,您可以开始扫描更多的设备。

相关内容

  • 没有找到相关文章

最新更新