Ich entwickle derzeit eine Anwendung, die Bluetooth Low Energy verwendet (Test auf dem Nexus 4). Nachdem ich mit den offiziellen BLE-APIs in Android 4.3 begonnen habe, habe ich festgestellt, dass ich nach dem ersten Anschließen eines Geräts selten wieder erfolgreich eine Verbindung zu diesem Gerät oder einem anderen Gerät herstellen / mit ihm kommunizieren kann.
Wenn ich der Anleitung hier folge , kann ich ohne Probleme erfolgreich eine Verbindung zu einem Gerät herstellen, Dienste und Eigenschaften scannen und Benachrichtigungen lesen / schreiben / empfangen. Nach dem Trennen und erneuten Verbinden kann ich jedoch häufig weder Dienste / Merkmale scannen noch Lese- / Schreibvorgänge ausführen. Ich kann in den Protokollen nichts finden, was darauf hinweist, warum dies geschieht.
In diesem Fall muss ich die Anwendung deinstallieren, Bluetooth deaktivieren und das Telefon neu starten, bevor es wieder funktioniert.
Immer wenn ein Gerät getrennt wird, rufe ich close () für das BluetoothGatt-Objekt auf und setze es auf null. Irgendwelche Einsichten?
BEARBEITEN:
Protokollspeicherauszüge: Für diese Protokolle habe ich mein Telefon gerootet und die Ablaufverfolgungsstufen verwandter Elemente in /etc/bluetooth/bt_stack.conf erhöht
Erfolgreiche Verbindung - Erster Versuch nach dem Neustart des Telefons und der Installation der App. Ich kann eine Verbindung herstellen, alle Dienste / Merkmale entdecken und lesen / schreiben.
Fehlgeschlagener Versuch 1 - Dies ist der nächste Versuch nach dem Trennen von der oben genannten erfolgreichen Verbindung. Es scheint, dass ich Merkmale entdecken konnte, aber der erste Leseversuch ergab einen Nullwert und wurde bald darauf getrennt.
Fehlgeschlagener Versuch 2 - Ein Beispiel, bei dem ich nicht einmal Dienste / Merkmale erkennen kann.
EDIT 2:
Das Gerät, mit dem ich eine Verbindung herstellen möchte, basiert auf dem CC2541-Chip von TI. Ich habe einen TI SensorTag (ebenfalls basierend auf dem CC2541) zum Herumspielen erhalten und festgestellt, dass TI gestern eine Android-App für den SensorTag veröffentlicht hat. Diese App hat jedoch das gleiche Problem. Ich habe dies auf zwei anderen Nexus 4 mit dem gleichen Ergebnis getestet: Die Verbindung zum SensorTag ist beim ersten oder zweiten Mal erfolgreich, aber (laut Protokoll) kann ich danach keine Dienste mehr erkennen, was zu allen möglichen Abstürzen führt. Ich frage mich, ob es ein Problem mit diesem speziellen Chip ist.