Attualmente sto sviluppando un'applicazione che utilizzerà Bluetooth Low Energy (test su Nexus 4). Dopo aver iniziato con le API BLE ufficiali in Android 4.3, ho notato che dopo aver collegato un dispositivo per la prima volta raramente riesco a connettermi / comunicare con quel dispositivo o qualsiasi altro dispositivo.
Seguendo la guida qui , posso collegarmi con successo a un dispositivo, scansionare servizi e caratteristiche e leggere / scrivere / ricevere notifiche senza problemi. Tuttavia, dopo aver disconnesso e ricollegato, spesso non riesco a scansionare i servizi / le caratteristiche o non riesco a completare una lettura / scrittura. Non riesco a trovare nulla nei registri per indicare perché questo sta accadendo.
Una volta che ciò accade, devo disinstallare l'applicazione, disabilitare il Bluetooth e riavviare il telefono prima che riprenda a funzionare.
Ogni volta che un dispositivo viene disconnesso, mi assicuro di chiamare close () sull'oggetto BluetoothGatt e di impostarlo su null. Qualche intuizione?
EDIT:
dump del registro: per questi registri ho effettuato il root del mio telefono e aumentato i livelli di traccia degli elementi correlati in /etc/bluetooth/bt_stack.conf
Connessione riuscita - Primo tentativo dopo il riavvio del telefono e l'installazione dell'app. Sono in grado di connettermi, scoprire tutti i servizi / caratteristiche e leggere / scrivere.
Tentativo fallito 1 - Questo è il tentativo successivo dopo la disconnessione dalla connessione corretta sopra. Sembra che sono stato in grado di scoprire le caratteristiche, ma il primo tentativo di leggere ha restituito un valore nullo e si è disconnesso subito dopo.
Tentativo fallito 2 - Un esempio in cui non sono nemmeno in grado di scoprire servizi / caratteristiche.
EDIT 2:
Il dispositivo a cui sto provando a connettermi si basa sul chip CC2541 di TI. Ho ottenuto un SensorTag TI (anch'esso basato sul CC2541) con cui giocare e ho scoperto che TI ha rilasciato un'app Android per SensorTag ieri. Tuttavia, questa app ha lo stesso problema. Ho provato questo su altri due Nexus 4s con lo stesso risultato: la connessione al SensorTag ha esito positivo la prima o la seconda volta, ma (secondo i registri) non riesce a rilevare i servizi da quel momento in poi, causando ogni sorta di crash. Sto iniziando a chiedermi se si tratta di un problema con questo chip specifico?