Actualmente estoy desarrollando una aplicación que utilizará Bluetooth Low Energy (prueba en el Nexus 4). Después de comenzar con las API BLE oficiales en Android 4.3, he notado que después de conectar un dispositivo por primera vez, rara vez puedo conectarme / comunicarme con ese dispositivo u otro dispositivo con éxito.
Siguiendo la guía aquí , puedo conectarme con éxito a un dispositivo, escanear servicios y características, y leer / escribir / recibir notificaciones sin ningún problema. Sin embargo, después de desconectar y volver a conectar, a menudo no puedo escanear servicios / características o no puedo completar una lectura / escritura. No puedo encontrar nada en los registros para indicar por qué sucede esto.
Una vez que esto sucede, tengo que desinstalar la aplicación, desactivar Bluetooth y reiniciar el teléfono antes de que vuelva a funcionar.
Cada vez que se desconecta un dispositivo, me aseguro de llamar a close () en el objeto BluetoothGatt y configurarlo como nulo. Alguna idea?
EDITAR:
volcados de registro: para estos registros rooteé mi teléfono y subí los niveles de rastreo de elementos relacionados en /etc/bluetooth/bt_stack.conf
Conexión exitosa : primer intento después de reiniciar el teléfono e instalar la aplicación. Puedo conectarme, descubrir todos los servicios / características y leer / escribir.
Intento fallido 1 : este es el siguiente intento después de desconectarse de la conexión exitosa anterior. Parece que pude descubrir características, pero el primer intento de lectura devolvió un valor nulo y se desconectó poco después.
Intento fallido 2 : un ejemplo en el que ni siquiera puedo descubrir servicios / características.
EDIT 2:
el dispositivo al que estoy intentando conectarme está basado en el chip CC2541 de TI. Obtuve una TI SensorTag (también basada en el CC2541) para jugar y descubrí que TI lanzó una aplicación de Android para SensorTag ayer. Sin embargo, esta aplicación tiene el mismo problema. Probé esto en otros dos Nexus 4 con el mismo resultado: la conexión al SensorTag es exitosa la primera o la segunda vez, pero (según los registros) no puede descubrir los servicios a partir de entonces, causando todo tipo de fallas. ¿Estoy empezando a preguntarme si es un problema con este chip específico?