BLE no puede conectarse a un dispositivo ya enlazado

Tengo un problema para conectarme al dispositivo BLE vinculado en Android. La primera connection con el dispositivo, que incluye la vinculación, es exitosa y puedo leer todas las características y la connection permanece estable.

Cuando elimino la aplicación o la desconecto manualmente y trato de conectarme al dispositivo nuevamente usando el mismo código excepto la vinculación en sí, estoy desconectado del lado de Android con el código de error 22, que significa "Conexión terminada por localhost".

¿Hay alguna diferencia bajo el capó del lado de Android en estos 2 escenarios que no conozco? Utilizo básicamente el código del tutorial que puedo proporcionar si es necesario pero he intentado básicamente todo, desde cambiar los parameters de gatt a auto connect / not, agregar el BluetoothDevice.TRANSPORT_LE como indicador de transporte y todavía nada.

Este problema sigue sucediendo en mi Pixel, Moto G4 y todos los últimos dispositivos Nexus.

El periférico está utilizando el chip Qualcomm CSR1010 uEnergy, es publicidad y necesita emparejarse para establecer la connection. Aquí están los fragments de las cosas de connection:

 val bondCreated = device.createBond() 

En el receptor de difusión del cambio de estado de vinculación, llamo a los methods de connection. Intenté experimentar con estos dos methods, omitir uno y el otro, cambiar los parameters, pero nada

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

Si recibo la información de desconnection, llamo a:

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

Y trato de conectarme nuevamente usando el mismo código que el anterior

Ya he intentado poner retrasos en todas las operaciones de gatt, pero aún no he tenido éxito. Cambiar la connection automática a verdadero después de que estoy desconectado por Android no funciona.

También probé algunas aplicaciones iOS de terceros y todas se conectan al dispositivo sin ningún problema. Sus versiones de Android siempre se desconectan de la misma manera que la mía.

¿Podría proporcionar alguna ayuda? Será muy apreciado.

Los loggings están aquí:

D / BleGattController: DISPOSITIVO YA ADJUDICADO: Dispositivo

D / BluetoothGatt: connect () – dispositivo: 40: 80: 08: AF: DC: 6B, auto: falso

D / BluetoothGatt: registerApp ()

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

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

D / BleGattController $ gattC: onConnectionStateChange 0 – conectado

D / BleGattController $ gattC: STATE_CONNECTED

D / BluetoothGatt: onConnectionUpdated () – Dispositivo = 40: 80: 08: AF: DC: 6B intervalo = 6 latencia = 0 time de espera = 500 estado = 0

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

D / BleGattController $ gattC: onConnectionStateChange 22 – desconectado

D / BleGattController $ gattC: STATE_DISCONNECTED