← Tous les articles

Une app de localisation qui ne vide pas votre batterie

Bienvenue dans le chapitre ingénierie de cette série. Les articles fondations expliquaient pourquoi Fenzly est conçu ainsi ; à partir d’ici, nous ouvrons le capot sur le comment. Et il n’y a pas de meilleur point de départ que l’objection que tout le monde soulève en premier : « une app de localisation qui tourne toute la journée ? Ma batterie ne passera pas midi. »

Ce serait vrai si l’application fonctionnait comme on l’imagine, avec le GPS allumé du matin au soir. Ce n’est pas le cas. L’objectif de conception réel est presque l’inverse : garder le GPS éteint autant que possible, et être malin sur les rares moments où il vaut la peine d’être réveillé.

Le GPS est un phare, pas un battement de cœur

Le récepteur GPS est l’un des composants les plus gourmands de votre téléphone. Laissé allumé en continu, il peut engloutir une bonne partie de votre batterie en une journée. La conception naïve, demander à la puce satellite « où sommes-nous ? » toutes les quelques secondes, pour toujours, est donc morte d’avance.

Mais voici ce que l’image naïve rate : la plupart du temps, la réponse ne change pas. Vous passez des heures à la maison, au bureau, à l’école. Interroger le GPS toute la soirée pour apprendre, encore et encore, que vous êtes toujours dans votre salon est du gaspillage pur. Le GPS est comme les phares d’une voiture : indispensable quand vous allez quelque part, inutile tant que vous êtes garé.

Tout le problème se réduit donc à une question : comment savoir quand les allumer, sans utiliser le GPS pour le découvrir ?

Le téléphone sait déjà que vous bougez, gratuitement

Votre téléphone contient des capteurs qui ne coûtent presque rien. L’accéléromètre et le coprocesseur de mouvement, une petite puce dédiée, tournent de toute façon en permanence, quelles que soient vos applications : c’est ainsi que votre téléphone compte vos pas. Android comme iOS exposent ce qu’ils en déduisent : immobile, à pied, en véhicule.

Fenzly est construit exactement là-dessus. Au repos, l’application est en état stationnaire : GPS éteint, aucun échantillonnage de position, en sommeil pour l’essentiel. Ce qui reste éveillé, ce sont les couches quasi gratuites : la puce de mouvement à l’écoute d’un déplacement soutenu, et un petit fil de détente « vous avez quitté le secteur » que le système d’exploitation surveille autour de votre dernière position connue.

Quand ces couches s’accordent à dire que vous partez vraiment quelque part, l’application bascule en état mouvement : le GPS se réveille, enregistre le trajet, alimente les enveloppes scellées que vous avez choisi de partager. Quand vous arrivez et vous posez, le mouvement se tait, et le moteur retombe en sommeil. Regardez votre journée à travers ce prisme et le motif saute aux yeux : pour la plupart des gens, le GPS n’est réellement allumé que quelques courtes fenêtres par jour, les trajets, les courses, et éteint pendant les vingt heures et plus entre les deux.

En mouvement : mesurer en mètres, pas en secondes

Même GPS réveillé, il y a une seconde couche d’économie. Fenzly n’échantillonne pas sur un minuteur ; il échantillonne sur la distance. Un nouveau point est enregistré quand vous avez parcouru un nombre significatif de mètres, pas toutes les N secondes. Un feu rouge ne produit rien ; une croisière régulière produit un tracé propre et régulièrement espacé.

L’espacement s’étire aussi avec la vitesse. Au pas, les points se resserrent, parce que le détail à l’échelle de la rue compte. Sur l’autoroute, ils s’écartent : une ligne droite à 120 km/h n’a pas besoin d’un point tous les vingt mètres pour être fidèle. Vous obtenez un tracé qui épouse la forme du trajet, pour une fraction des mesures.

Et comme les téléphones sont personnels, le curseur l’est aussi : un réglage vous laisse choisir entre trois niveaux d’enregistrement, économie d’énergie, équilibré ou détaillé, qui troquent la finesse du tracé contre la consommation. Le réglage par défaut est au milieu et convient à presque tout le monde.

Les lieux n’ont pas besoin du GPS du tout

Et « préviens-moi quand il arrive à l’école » ? Cela exige sûrement une surveillance constante ?

Non, et c’est la partie qui surprend : le géofencing est délégué au système d’exploitation lui-même. Android et iOS font tourner un service au niveau de la puce qui surveille des cercles enregistrés sur la carte à partir des signaux radio ambiants, antennes, Wi-Fi, et seulement occasionnellement le GPS. Fenzly confie vos lieux stockés localement à ce service et s’endort. Quand vous franchissez une frontière, l’OS réveille l’application un instant ; elle scelle l’événement pour votre cercle et se tait à nouveau.

C’est aussi pourquoi la détection de lieux fonctionne hors ligne : elle n’a jamais dépendu de notre serveur.

Les compromis honnêtes

Cette conception achète une autonomie d’une journée entière, et elle la paie à trois endroits que vous méritez de connaître.

Le premier est le temps de réaction. Parce que le moteur dort entre les trajets, il a besoin que vous parcouriez une courte distance, de l’ordre de deux cents mètres, avant d’être sûr que vous êtes vraiment parti et de démarrer le tracé. Un trajet enregistré peut donc commencer un peu après votre porte, pas exactement à votre porte. C’est le prix de ne pas faire tourner le GPS pendant votre sommeil, et nous pensons que c’est le bon.

Le deuxième : les signaux bon marché sont des signaux bruités. En intérieur, les estimations de position fondées sur le Wi-Fi et les antennes peuvent sauter de plusieurs dizaines de mètres, assez, dans une implémentation naïve, pour faire croire au système que vous avez brièvement « quitté » la maison alors que vous étiez sur le canapé. Fenzly superpose des garde-fous : un franchissement ne compte que si la mesure est située de façon fiable à l’extérieur du lieu, avec une marge, si bien que les oscillations sont ignorées et que les vrais départs continuent de déclencher. Construire ces garde-fous a demandé, en toute franchise, des tests de terrain et plusieurs leçons d’humilité.

Le troisième nous échappe : le système d’exploitation lui-même. Tout ce qui précède suppose que l’OS laisse l’application se réveiller quand les capteurs l’appellent. Les gestionnaires de batterie agressifs de certaines marques Android cassent exactement cette hypothèse, et cette histoire, contre laquelle toutes les apps de localisation se débattent en silence, mérite son propre article.


La suite du chapitre ingénierie : quand iOS et Android décident que votre app doit dormir pour toujours, le mode Doze, les apps tuées en arrière-plan, et ce qu’il faut pour rester fiable sur des téléphones qui travaillent activement contre vous.