À propos de la localisation en arrière-plan et de l'autonomie de la batterie

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 la collecte des données de localisation en arrière-plan, ce qui incite les développeurs à optimiser leurs applications pour améliorer l'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

Dans ce document, nous partons du principe que vous connaissez les API suivantes :

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 : la 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 : la fréquence à laquelle la position est calculée. Plus la position est calculée fréquemment, plus la batterie est sollicitée.
  • Latence : la 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_PASSIVE reçoit de manière passive les positions provenant d'autres applications pour lesquelles la position a déjà été calculée.

Utilisez l'option PRIORITY_BALANCED_POWER_ACCURACY ou PRIORITY_LOW_POWER pour répondre aux besoins de localisation de la plupart des applications. Réservez l'option PRIORITY_HIGH_ACCURACY 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 setIntervalMillis() pour spécifier l'intervalle de calcul de la position de votre application.
  • Utilisez la méthode setMinUpdateIntervalMillis() pour spécifier l'intervalle de réception des positions d'autres applications.

Transmettez la plus grande valeur possible lorsque vous utilisez setIntervalMillis(). 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 les intervalles de quelques secondes aux 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 Android 7.0 (niveau d'API 24) ou version antérieure.

Latence

Vous pouvez spécifier une latence à l'aide de la méthode setMaxUpdateDelayMillis(), qui transmet généralement une valeur plusieurs fois supérieure à l'intervalle spécifié dans la méthode setIntervalMillis(). 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 notification de position, vous devez transmettre la valeur la plus élevée possible à la méthode setMaxUpdateDelayMillis(), 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.

Documentation complémentaire

Pour en savoir plus, consultez les documents suivants :

  • Recommandations : ce guide présente des actions recommandées concrètes que vous pouvez utiliser pour améliorer 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 explique comment optimiser l'impact sur l'autonomie de la batterie dans ces cas.