【发布时间】: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