Я подключаюсь к устройству BLE с помощью метода connectGatt()
в Android. Это отлично работает.Полностью отключить устройство с низким энергопотреблением Bluetooth
Когда я отключаю я использую следующее:
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()
. Сам аппарат, похоже, считает, что он все еще подключен, так как я не могу его включить в режиме видимости видимости (что происходит, если оно уже имеет соединение). Однако, если я убью приложение и откройте его снова, я могу настроить устройство в режиме широковещания. Это говорит мне, что приложение не было должным образом отключено.
Любая идея, что я пропустил здесь?
Вы перестали сканировать устройства после подключения к устройству? У меня была аналогичная проблема, с которой телефон оставался подключенным к микросхеме даже после вызова разъединения. Проблема заключалась в том, что я никогда не вызывал mScanner.stopScan (mScanCallback) после успешного соединения. – SoroushA
Спасибо, но да, я вызываю stopScan при успешном соединении. – nilsi