L'utilisation de la localisation en arrière-plan peut avoir un impact significatif sur l'autonomie de la batterie. Android accepte les limites de collecte de la position en arrière-plan, ce qui incite les développeurs à optimiser leurs applications pour une meilleure efficacité de la batterie. Ces optimisations sont bénéfiques pour tous les appareils, quelle que soit la version d'Android qu'ils exécutent.
Avec les Limites de localisation en arrière-plan:
- La collecte des données de localisation en arrière-plan est limitée, et la position est calculée et diffusée seulement quelques fois par heure.
- Les recherches Wi-Fi sont plus efficientes et les mises à jour de la position ne sont pas calculées lorsque l'appareil reste connecté au même point d'accès statique.
- La réactivité du géorepérage passe de quelques dizaines de secondes à environ deux minutes. Ce changement améliore les performances de la batterie, qui sont jusqu'à 10 fois meilleures sur certains appareils.
Connaissances requises
Ce document suppose que vous connaissez les API suivantes:
- Services de localisation Google Ces API offrent une plus grande précision et réduisent l'impact sur la batterie par rapport aux API de localisation du framework.
- Fused Location Provider Cette API combine les signaux des réseaux GPS, Wi-Fi et mobiles, ainsi que l'accéléromètre, le gyroscope, le magnétomètre et d'autres capteurs.
- Géorepérage : cette API repose sur l'API Fused Location Provider et est optimisée pour les performances de la batterie.
Comprendre la décharge de la batterie
La collecte des données de localisation et la décharge de la batterie sont liées comme suit:
- Précision:précision des données de localisation. En règle générale, plus la précision est élevée, plus la décharge de la batterie est importante.
- Fréquence:fréquence à laquelle la position est calculée. Plus la position est calculée fréquemment, plus la batterie est sollicitée.
- Latence:rapidité de livraison des données de localisation. Une latence inférieure nécessite généralement plus de batterie.
Précision
Vous pouvez spécifier la précision de la localisation à l'aide de la méthode setPriority()
, en transmettant l'une des valeurs suivantes en tant qu'argument:
PRIORITY_HIGH_ACCURACY
fournit la localisation la plus précise possible. Cette localisation est calculée en utilisant autant d'entrées que nécessaire (la méthode utilise le GPS, le Wi-Fi et les données mobiles, et utilise un éventail de capteurs). Elle peut entraîner une décharge importante de la batterie.PRIORITY_BALANCED_POWER_ACCURACY
fournit une localisation précise tout en optimisant l'énergie consommée. La méthode utilise très rarement le GPS. Elle utilise généralement une combinaison des données Wi-Fi et des données mobiles pour calculer la position de l'appareil.PRIORITY_LOW_POWER
s'appuie principalement sur les antennes-relais et évite les entrées GPS et Wi-Fi, offrant une précision approximative (au niveau de la ville) avec une décharge minimale de la batterie.PRIORITY_NO_POWER
reçoit de manière passive les positions provenant d'autres applications pour lesquelles la position a déjà été calculée.
Utilisez les options d'alimentation équilibrée ou d'économie d'énergie pour répondre aux besoins de localisation de la plupart des applications. Réservez la précision élevée aux applications qui s'exécutent au premier plan et qui nécessitent des mises à jour de la position en temps réel (par exemple, une application de cartographie).
Fréquence
Vous pouvez spécifier la fréquence de localisation à l'aide de deux méthodes :
- Utilisez la méthode
setinterval()
pour spécifier l'intervalle de calcul de la position de votre application. - Utilisez la méthode
setFastestInterval()
pour spécifier l'intervalle de réception des positions d'autres applications.
Transmettez la plus grande valeur possible lorsque vous utilisez setInterval()
. Cela est particulièrement vrai pour la collecte des données de localisation en arrière-plan, qui décharge souvent la batterie. Réservez des intervalles de quelques secondes pour les cas d'utilisation au premier plan.
Les limites de localisation en arrière-plan introduites dans Android 8.0 (niveau d'API 26) appliquent ces stratégies, mais votre application doit s'efforcer de les appliquer sur les appareils équipés d'Android 7.0 (niveau d'API 24) ou version antérieure.
Tardive
Vous pouvez spécifier une latence à l'aide de la méthode setMaxWaitTime()
, qui transmet généralement une valeur plusieurs fois supérieure à l'intervalle spécifié dans la méthode setInterval()
. Ce paramètre retarde la livraison de la position, et plusieurs notifications de position peuvent être livrées par lots. Ces deux modifications permettent de réduire l'utilisation de la batterie.
Si votre application n'a pas besoin immédiatement d'une mise à jour de la position, vous devez transmettre la valeur la plus élevée possible à la méthode setMaxWaitTime()
, en acceptant plus de latence au profit d'une plus grande quantité de données et d'une meilleure efficacité de la batterie.
Lorsque vous utilisez des zones de géorepérage, les applications doivent transmettre une valeur élevée à la méthode setNotificationResponsiveness()
pour préserver la batterie. Nous vous recommandons une durée de cinq minutes ou plus.
Complément d'informations
Pour en savoir plus, consultez les documents suivants:
- Recommandations: ce guide présente des actions concrètes que vous pouvez suivre pour réduire l'impact de votre application sur l'autonomie de la batterie.
- Cas d'utilisation: ce guide présente plusieurs cas d'utilisation courants dans lesquels vous pouvez utiliser les services de localisation et comment optimiser leur impact sur l'autonomie de la batterie dans ces cas.