BLE не может подключиться к уже подключенному устройству

У меня проблема с подключением устройства BLE на Android. Первое подключение к устройству, которое включает в себя соединение, является успешным, и я могу прочитать все характеристики, и соединение остается стабильным.

Когда я убью приложение или отключусь вручную, и попробуйте снова подключиться к устройству с помощью того же кода, кроме самого соединения, я отключен от Android с кодом ошибки 22, что означает «Соединение завершено локальным хостом».

Есть ли какая-либо разница под капотом со стороны Android в этих двух сценариях, о которых я не знаю? Я использую в основном код учебника, который я могу предоставить в случае необходимости, но я пробовал в основном все: от изменения параметров gatt до автоматического подключения / нет, добавив BluetoothDevice.TRANSPORT_LE в качестве транспортного флага и все еще ничего.

Эта проблема продолжает происходить на моем Pixel, Moto G4 и всех последних устройствах Nexus.

Периферийное устройство использует микросхему Qualcomm CSR1010 uEnergy, является рекламой и должно быть сопряжено, чтобы установить соединение. Вот фрагменты соединения:

 val bondCreated = device.createBond() 

В приемнике Broadcast изменения состояния связи я вызываю методы подключения. Я попытался поэкспериментировать с этими двумя методами, опустить один и другой, изменить параметры, но ничего

 bluetoothGatt = device.connectGatt(context, false, gattCallback, BluetoothDevice.TRANSPORT_LE) bluetoothGatt?.connect() 

Если я получаю информацию об отключении, я звоню:

 bluetoothGatt?.close() bluetoothGatt?.disconnect() 

И я пытаюсь подключиться снова, используя тот же код, что и выше

Я уже пробовал задерживать всюду на каждой игре gatt, но все равно не добился успеха. Изменение автоматического подключения к true после того, как я отключен Android, не работает.

Я также пробовал некоторые сторонние приложения iOS, и все они подключаются к устройству без проблем. Их версии Android всегда отключаются так же, как и мои.

Не могли бы вы оказать любую помощь? Он будет очень признателен.

Журналы находятся здесь:

D / BleGattController: УСТРОЙСТВО УЖЕ ОБНАРУЖЕН: Устройство

D / BluetoothGatt: connect () – устройство: 40: 80: 08: AF: DC: 6B, auto: false

D / BluetoothGatt: registerApp ()

D / BluetoothGatt: onClientRegistered () – status = 0 clientIf = 8

D / BluetoothGatt: onClientConnectionState () – status = 0 clientIf = 8 device = 40: 80: 08: AF: DC: 6B

D / BleGattController $ gattC: onConnectionStateChange 0 – подключено

D / BleGattController $ gattC: STATE_CONNECTED

D / BluetoothGatt: onConnectionUpdated () – Device = 40: 80: 08: AF: DC: 6B interval = 6 latency = 0 timeout = 500 status = 0

D / BluetoothGatt: onClientConnectionState () – status = 22 clientIf = 8 device = 40: 80: 08: AF: DC: 6B

D / BleGattController $ gattC: onConnectionStateChange 22 – отключен

D / BleGattController $ gattC: STATE_DISCONNECTED