192 votes

Android 4.3 Bluetooth Low Energy instable

Je développe actuellement une application qui utilisera le Bluetooth Low Energy (testé sur le Nexus 4). Après avoir commencé à utiliser les API BLE officielles dans Android 4.3, j'ai remarqué qu'après avoir connecté un appareil pour la première fois, je suis rarement capable de me connecter / communiquer avec cet appareil ou tout autre appareil.

En suivant le guide aquí Je peux me connecter avec succès à un appareil, analyser les services et les caractéristiques, et lire/écrire/recevoir des notifications sans aucun problème. Cependant, après m'être déconnecté et reconnecté, je suis souvent incapable d'analyser les services/caractéristiques ou d'effectuer une lecture/écriture. Je ne trouve rien dans les journaux qui indique pourquoi cela se produit.

Lorsque cela se produit, je dois désinstaller l'application, désactiver le Bluetooth et redémarrer le téléphone avant qu'elle ne fonctionne à nouveau.

Chaque fois qu'un périphérique est déconnecté, je m'assure d'appeler close() sur l'objet BluetoothGatt et de lui donner la valeur null. Des idées ?


EDIT :
Décharges de journaux : Pour ces journaux, j'ai enraciné mon téléphone et augmenté le niveau de traçage des éléments connexes dans /etc/bluetooth/bt_stack.conf.

Connexion réussie - Première tentative après avoir redémarré le téléphone et installé l'application. Je suis capable de me connecter, de découvrir tous les services/caractéristiques, et de lire/écrire.

Échec de la première tentative - Il s'agit de la tentative suivante après la déconnexion de la connexion réussie ci-dessus. Il semble que j'ai pu découvrir des caractéristiques, mais la première tentative de lecture a renvoyé une valeur nulle et s'est déconnectée peu après.

Échec de la deuxième tentative - Un exemple où je ne suis même pas capable de découvrir les services/caractéristiques.


EDIT 2 :
Le dispositif auquel j'essaie de me connecter est basé sur la puce CC2541 de TI. J'ai obtenu un TI SensorTag (également basé sur le CC2541) pour jouer avec et a découvert que TI a sorti une application Android pour le SensorTag hier. Cependant, cette application a le même problème. J'ai testé ceci sur deux autres Nexus 4s avec le même résultat : La connexion au SensorTag est réussie la première ou la deuxième fois, mais (selon les journaux) ne parvient pas à découvrir les services par la suite, ce qui provoque toutes sortes de plantages. Je commence à me demander si c'est un problème avec cette puce spécifique ?

0 votes

Veuillez poster les journaux complets de votre téléphone depuis le démarrage jusqu'à ce que vous rencontriez le problème.

0 votes

@AAnkit Je viens d'ajouter les vidages de journaux correspondants.

0 votes

Pouvez-vous ajouter un extrait de code ou un pseudo-code de ce que vous faites afin que nous puissions faire de notre mieux pour reproduire sur d'autres appareils fonctionnant en 4.3 ? Merci

0voto

Khulja Sim Sim Points 460

Le même problème a été résolu lorsque j'ai changé

mBluetoothGatt.close(); 

à

mBluetoothGatt.disconnect();

API BluetoothGatt -- pour référence

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X