【发布时间】:2016-06-29 10:23:28
【问题描述】:
我在 Android 中使用 connectGatt() 方法连接到 BLE 设备。这很好用。
当我断开连接时,我使用以下内容:
private void disconnectDevice() {
gatt.disconnect();
}
当我收到回调时,我会关闭。
private BluetoothGattCallback gattCallback = new BluetoothGattCallback() {
@Override
public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState) {
switch (newState) {
case BluetoothProfile.STATE_CONNECTED:
Log.d("BLED-GATT", "STATE_CONNECTED");
setUIConnectionStatus("Discover services on device...", Color.YELLOW);
checkEnableAddButton(simpleTrackEditText.getText().toString());
gatt.discoverServices();
break;
case BluetoothProfile.STATE_DISCONNECTED:
Log.d("BLED-GATT", "STATE_DISCONNECTED");
setUIConnectionStatus("Not Connected!", Color.RED);
gatt.close();
break;
default:
Log.d("BLED-GATT", "STATE_OTHER");
}
}
}
这个被执行了,在调用disconnectDevice()之后我不能再控制设备了。设备本身似乎认为它仍然处于连接状态,因为我无法将其置于广播可见性模式(如果它已经有连接,则会发生这种情况)。但是,如果我终止应用程序并再次打开它,那么我可以将设备设置为广播模式。这告诉我应用程序未正确断开连接。
知道我在这里错过了什么吗?
【问题讨论】:
-
连接ble设备后是否停止扫描设备?我有一个类似的问题,即使在断开连接后手机仍然连接到 ble 芯片。问题是我在成功连接后从未调用过 mScanner.stopScan(mScanCallback)。
-
谢谢,但是我会在连接成功后调用 stopScan。
标签: android bluetooth iot bluetooth-lowenergy