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".
- Kotlin + MVP: anulación accidental
- Cómo usar TypeToken + generics con Gson en Kotlin
- Cómo emular el mismo comportamiento en kotlin
- ¿Por qué ReversedLinesFileReader es tan lento?
- No se puede usar la validation de spring con MongoDB
¿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
- Establecer LayoutManager en un fragment
- SpringMVC RequestMapping: Añadiendo .xml a la ruta del controller para la respuesta xml
- En TornadoFX, ¿cómo puedo hacer que una propiedad cambie cuando cambian otras properties?
- Android Studio 1.5 con Kotlin Plugin recibió una exception, cuando está en modo debugging. ¿Como arreglarlo?
- Progtwigción funcional: cómo continuar el context para una cadena de reglas de validation
- usando Room con kotlin, obtén una exception cuando construyas la database
- function kotlin devuelve nulo
- ¿Cuál es la diferencia básica entre fold y networkinguce en Kotlin? ¿Cuándo usar qué?