Ce document décrit les bonnes pratiques à suivre pour optimiser la consommation d'énergie dans une application de navigation mobile que vous créez à l'aide du SDK Navigation. Elle décrit également les compromis à prendre en compte lorsque vous utilisez ces pratiques. En particulier, ce document traite des points suivants:
- Sources de forte consommation d'énergie, classées de la plus élevée à la plus faible.
- Stratégies d'optimisation de la consommation d'énergie, par ordre d'importance, en commençant par la fréquence d'images.
- Stratégies pour les utilisateurs finaux : expliquez aux utilisateurs de votre application comment gérer l'utilisation de leur appareil pendant la navigation.
Pourquoi optimiser votre application de navigation ?
Selon leur situation, les utilisateurs de votre application peuvent exécuter des instructions de navigation pendant de longues périodes. Par exemple, les chauffeurs et les coursiers peuvent travailler de longues heures et effectuer des tâches dans un territoire inconnu. Dans ce cas, ils s'appuient fortement sur les instructions détaillées dans l'application. Cela entraîne certains problèmes courants:
- Épuisement de la batterie et disponibilité des chargeurs Une utilisation intensive de la navigation peut entraîner une décharge plus rapide de la batterie de l'appareil que prévu. De nombreux utilisateurs peuvent résoudre ce problème en chargeant leur appareil dans le véhicule, mais ce n'est pas le cas des conducteurs de deux-roues.
- Baisse de la fréquence d'horloge de l'appareil en raison de la chaleur Même les utilisateurs qui rechargent continuellement leur appareil peuvent rencontrer des problèmes. Une consommation d'énergie élevée sur de longues périodes peut entraîner une surchauffe de l'appareil, ce qui entraîne une limitation thermique et une perte de performances.
Les applications de navigation par itinéraires détaillés s'appuient sur des fonctionnalités gourmandes en énergie, comme l'écran, le GPS et la communication radio avec les antennes-relais. Il est donc recommandé d'optimiser la consommation d'énergie de votre application mobile. En outre, vous devez tenir compte des besoins en consommation d'énergie de votre audience cible afin de trouver le juste équilibre entre les performances et l'optimisation de la consommation d'énergie.
Quels éléments consomment le plus d'énergie ?
Cette section divise les activités dans l'application associées à une consommation d'énergie élevée en deux catégories:
- Rendu de l'écran
- Mises à jour de position
Rendu de l'écran
Le rendu de l'écran est généralement la cause de la consommation d'énergie la plus élevée dans les applications de navigation mobile. Chaque fois que l'appareil dessine une carte et d'autres éléments d'interface utilisateur à l'écran, il s'appuie sur le traitement du GPU et du CPU. De même, lorsque l'utilisateur laisse cet écran allumé pendant de longues périodes, cela consomme également plus d'énergie.
Dans une certaine mesure, vous pouvez vous attendre à une consommation d'énergie élevée de la part des conducteurs ou des passagers qui s'appuient sur une carte visible pour naviguer, en particulier s'ils utilisent l'application en continu pendant de nombreuses heures. Dans ce scénario, l'application effectue également un taux de rendu plus élevé à l'écran, car la carte est ensuite mise à jour en temps réel. Dans certains cas, l'écran peut se redessiner presque en continu, en particulier lorsque l'utilisateur se déplace d'un endroit à un autre sans s'arrêter.
Mises à jour de position
En plus du rendu de l'écran, deux autres activités de navigation consomment de l'énergie de l'appareil:
- Utilisation des tours de téléphonie mobile et du GPS
- Mises à jour et partage de la position, par exemple pour indiquer une heure d'arrivée prévue ou pour signaler la position d'un véhicule dans un parc
Le GPS et la communication radio mobile reposent tous deux sur des opérations de démarrage gourmandes en énergie : le GPS doit trouver des satellites, et les radios mobiles doivent négocier avec les tours et établir une connexion. Pour ces raisons, ils fonctionnent essentiellement en continu pendant la navigation, même si les radios cellulaires restent actives pendant 20 à 30 secondes pour tenter de réduire les coûts de démarrage. Le système d'exploitation contrôle ces paramètres, que vous ne pouvez pas facilement configurer dans votre application.
Pour les mises à jour de position, la consommation d'énergie varie en fonction de facteurs imprévisibles. Par exemple, la distance entre l'appareil et la station de base mobile détermine la consommation d'énergie, car l'appareil utilise le signal minimal nécessaire pour poursuivre la navigation afin d'éviter de changer de tour. Par conséquent, un appareil qui navigue dans une zone de mauvaise connectivité consomme plus d'énergie qu'un appareil situé à proximité d'une station de base. De plus, certaines applications peuvent partager des mises à jour de position avec un service de gestion de flotte centralisé. Pour ce faire, elles doivent donc communiquer avec un serveur.
Optimiser la consommation d'énergie de votre application
Le défi de l'optimisation de la consommation d'énergie dans les applications de navigation est que ces applications dépendent fortement de ressources gourmandes en énergie, ce qui limite vos options pour atténuer l'impact sans faire de compromis, comme limiter l'utilisation de l'écran. Cette section fournit une liste des approches que vous pouvez suivre pour optimiser votre application, de la plus efficace à la moins efficace.
Modifier la fréquence d'images
L'écran met à jour ce qu'il affiche à une fréquence appelée fréquence d'images. La fréquence d'images est généralement mesurée en images par seconde (FPS). Étant donné que le rendu à l'écran utilise beaucoup de CPU ou de GPU, vous pouvez réduire la fréquence d'images pour réduire la consommation d'énergie.
En contrepartie, lorsque vous réduisez la fréquence d'images, l'affichage à l'écran peut sembler moins fluide, en particulier si la carte est mise à jour fréquemment. Cela peut être particulièrement évident lorsque la carte est agrandie pour afficher des détails précis, lorsque l'utilisateur se déplace à grande vitesse ou lorsqu'il modifie considérablement sa vitesse ou sa direction.
Pour en savoir plus sur la modification des fréquences d'images, consultez la section Frame rate (Fréquence d'images) de la documentation destinée aux développeurs du Android Media Dev Center.
Naviguer sans carte
Vous ne pouvez pas contrôler la façon dont l'utilisateur final définit la luminosité de l'écran de son appareil ni la durée pendant laquelle il le laisse allumé, mais vous pouvez proposer une option de guidage de navigation sans carte. L'utilisateur final pourra ainsi choisir cette option pour économiser de l'énergie. Par exemple, si les conducteurs travaillent régulièrement dans le même quartier, ils n'auront peut-être pas besoin d'indications basées sur les cartes aussi souvent. Vous pouvez activer la navigation sans carte en définissant une destination et en démarrant les instructions dans le SDK Navigation, sans afficher de carte.
Pour masquer l'UI de navigation, n'ajoutez pas de NavigationView ni de SupportNavigationFragment. Si vous l'avez déjà fait, supprimez le code qui les ajoute. Le code suivant est modifié à partir de l'application de démonstration Android du SDK Navigation et montre l'utilisation de commentaires pour supprimer le code qui ajoute l'UI de navigation:
//Obtain a reference to the NavigationFragment
//setContentView(R.layout.activity_nav_fragment);
//mNavFragment = (SupportNavigationFragment) getSupportFragmentManager().findFragmentById(R.id.navigation_fragment);
Le SDK de navigation continuera de mettre à jour les emplacements de la route, l'heure d'arrivée estimée et la distance restante du trajet. Votre application peut toujours s'abonner à tous les événements générés par le SDK à mesure que le conducteur avance. Cette approche n'est pas adaptée à tous les cas d'utilisation et, bien entendu, ce n'est pas un bon conseil lorsque le conducteur doit voir la carte et suivre les instructions visuelles. Les captures d'écran suivantes illustrent une comparaison côte à côte de l'activation/de la désactivation des vues de carte pendant la navigation active.
Utiliser un style de carte sombre
Envisagez d'utiliser un thème sombre pour la carte afin de réduire la quantité d'énergie nécessaire pour l'afficher à l'écran.
Le SDK Navigation affiche ses cartes à l'aide du SDK Google Maps pour Android, qui contient des options permettant de styliser toutes les vues de carte autres que la navigation dans votre application. La vue de navigation permet également de forcer le mode sombre. Cela n'affecte pas tous les appareils de la même manière en raison des différences de type d'écran, mais permet d'économiser de l'énergie dans certains cas. Une étude récente a révélé que la quantité d'énergie économisée par le mode sombre sur certains écrans dépend de la luminosité de l'écran au départ. Par exemple, le mode sombre permet d'économiser plus d'énergie sur les écrans réglés sur la luminosité maximale que sur les écrans dont la luminosité est déjà réglée à 30 à 50% du maximum. Il est important de tenir compte de ce point lorsque vous utilisez le mode sombre pour vos applications, car les économies d'énergie seront proportionnelles à la luminosité de l'écran définie par l'utilisateur final.
Pour en savoir plus sur la modification de l'UI de navigation, consultez la section Modifier l'UI de navigation.
Pour créer un style sombre pour votre carte, utilisez un objet MapStyleOptions avec un style JSON qui représente le style de carte sombre de votre choix. Vous pouvez créer d'anciens styles JSON à l'aide de l'ancien éditeur de styles à l'adresse https://mapstyle.withgoogle.com/.
Modifier la fréquence de mise à jour de la position GPS
Lorsque vous examinez la consommation d'énergie des mises à jour de position envoyées depuis l'appareil, concentrez-vous davantage sur la fréquence des mises à jour de position plutôt que sur la quantité de données envoyées lors de la transmission.
Vous ne pouvez pas contrôler directement cela dans le SDK Navigation, mais si votre application Android demande la position indépendamment, vous devez suivre les conseils de l'article Optimiser la position pour la batterie dans la documentation destinée aux développeurs Android. Le même conseil s'applique à l'utilisation de sources de localisation autres que le GPS (mobile et Wi-Fi).
Informer vos utilisateurs
Les utilisateurs de votre application peuvent vouloir savoir comment optimiser leur consommation d'énergie. Pour les aider à réduire la consommation d'énergie de leurs applications, conseillez-leur de procéder comme suit:
- Verrouiller le téléphone
- Placer l'application de navigation en arrière-plan
- Utiliser la navigation sans carte si possible
- Réduire la luminosité de l'écran, soit en utilisant le mode sombre pour les écrans OLED et AMOLED, soit en activant la luminosité adaptative
- Maintenir l'appareil à une température basse
- Se connecter au Wi-Fi du véhicule, le cas échéant
Mesurer la consommation d'énergie
Vous pouvez utiliser des outils professionnels pour mesurer la consommation d'énergie, mais il est souvent difficile ou coûteux de les obtenir. Les outils de profilage des applications et des IDE tels que le Profileur d'alimentation dans Android Studio et le Volet "Utilisation de la batterie" dans XCode Organizer mesurent la consommation d'énergie, mais il peut être difficile d'éliminer l'effet des processus en arrière-plan ou de définir une référence de performances à comparer. Dans certains cas, les restrictions de l'appareil peuvent empêcher d'accéder aux données nécessaires.
Vous pouvez utiliser du matériel de surveillance de l'alimentation à usage spécial et modifier la configuration de la connexion de la batterie. Des produits et services commerciaux existent pour vous aider à le faire. Notez que modifier les appareils de cette manière peut annuler la garantie.