Contexte :
Idéalement, je voudrais que mon appareil Android recherche les appareils Bluetooth Low Energy en permanence, qu’il soit capable de démarrer une application chaque fois qu’un nouvel appareil avec des propriétés spécifiques apparaît.
Ainsi, le paquet de diffusion dans BLE énumérera par exemple un ensemble de services fournis par le dispositif de diffusion. Une application pourrait alors enregistrer un intérêt pour certains services et être lancée automatiquement lorsqu’un périphérique doté de ces services est disponible.
D’après ce que j’ai compris, ce n’est pas ainsi que fonctionne l’API Android BLE? Alors, comment puis-je obtenir quelque chose de similaire?
Exemple le plus simple possible :
J’ai un capteur BLE qui enregistre la température ambiante au fil du temps. Lorsque mon téléphone Android est assez proche, je souhaite connecter et télécharger toutes les données, en les envoyant à une solution de stockage en nuage. Cette application ne nécessiterait aucune interface graphique (du moins pas après la configuration). Mais comment devrait-il fonctionner en arrière-plan sans vider la batterie, mais toujours me donner une assez bonne chance de connecter l’appareil rapidement une fois qu’il est à scope?
Question :
Dois-je définir une timer et réveiller l’application de temps en temps, puis lancer manuellement la numérisation? Quel type d’intervalles dois-je alors choisir? Combien de temps puis-je laisser le scanner en marche sans affecter la batterie?
Solution possible :
C’est ce que j’ai inventé jusqu’ici.
Cela fonctionne, mais je ne suis pas sûr que ce soit la meilleure façon. Je ne sais pas non plus combien de temps je peux avoir et encore éviter de détruire la vie de la batterie. Ce que je voudrais, c’est commencer à numériser toutes les deux minutes, en balayant pendant 10 à 20 secondes. Mais j’ai bien peur que ce soit assez souvent pour réveiller l’appareil?
Cette fonctionnalité a été déplacée vers la bibliothèque Open Source Android Beacon qui:
Réveillez / lancez votre application lorsque des iBeacons correspondant à un motif souhaité sont détectés
effectuer une parsing de balise en arrière-plan même si l’utilisateur n’a pas encore lancé votre application
Réduisez automatiquement le taux de numérisation en arrière-plan à 30 secondes toutes les cinq minutes pour économiser la batterie. (Timing configurable.)
Les exemples de code sont affichés ici
Si votre appareil BLE n’est pas une balise, vous pouvez toujours utiliser cette bibliothèque pour y parvenir en demandant à votre capteur de transmettre également en tant que balise, puis une fois qu’il est détecté, connectez-vous au service principal.