Les informations sur l'utilisation de la batterie sont issues des statistiques d'utilisation de la batterie et des valeurs du profil d'alimentation.
Statistiques d'utilisation de la batterie
Le framework détermine automatiquement les statistiques d'utilisation de la batterie en suivant la durée pendant laquelle les composants de l'appareil restent dans différents états. Lorsque les composants (chipset Wi-Fi, radio cellulaire, Bluetooth, GPS, écran, processeur) changent d'état (DÉSACTIVÉ/ACTIVÉ, inactif/pleine puissance, luminosité faible/élevée, etc.), le service de contrôle en informe le service BatteryStats du framework. BatteryStats collecte des informations au fil du temps et les stocke pour les utiliser lors des redémarrages. Le service ne suit pas directement le courant de décharge de la batterie, mais collecte plutôt des informations de timing qui peuvent être utilisées pour évaluer la consommation de la batterie par différents composants.
Le framework collecte des statistiques à l'aide des méthodes suivantes :
- Push Les services qui ont connaissance des modifications apportées aux composants transmettent les changements d'état au service BatteryStats.
- Pull. Pour les composants tels que l'utilisation du processeur par les applications, le framework extrait automatiquement les données aux points de transition (comme le démarrage ou l'arrêt d'une activité) pour prendre un instantané.
La consommation de ressources est associée à l'application qui utilise la ressource. Lorsque plusieurs applications utilisent simultanément une ressource (comme des wakelocks qui empêchent le système de se mettre en veille), le framework répartit la consommation entre ces applications, mais pas nécessairement de manière égale.
Pour éviter de perdre les statistiques d'utilisation d'un événement d'arrêt, qui peuvent indiquer des problèmes de consommation de la batterie (c'est-à-dire que l'arrêt se produit parce que la batterie a atteint une capacité restante nulle), le framework affiche les statistiques environ toutes les 30 minutes.
Les statistiques d'utilisation de la batterie sont entièrement gérées par le framework et ne nécessitent aucune modification de l'OEM.
Valeurs du profil de gestion de l'alimentation
Attention : Les fabricants d'appareils doivent fournir un profil de puissance des composants qui définit la valeur de consommation de courant du composant et la décharge approximative de la batterie causée par le composant au fil du temps. Ce profil est défini dans platform/frameworks/base/core/res/res/xml/power_profile.xml. Pour obtenir des conseils sur ces paramètres, consultez Valeurs de puissance.
Dans un profil d'alimentation, la consommation d'énergie est spécifiée en milliampères (mA) de courant absorbé à une tension nominale et peut être une valeur fractionnaire spécifiée en microampères (uA). La valeur doit correspondre aux mA consommés au niveau de la batterie et non à une valeur applicable à un rail d'alimentation qui ne correspond pas au courant consommé par la batterie.
Par exemple, un profil d'alimentation de l'écran spécifie le mA de courant nécessaire pour maintenir l'écran allumé à la luminosité minimale et à la luminosité maximale. Pour déterminer le coût énergétique (c'est-à-dire la batterie déchargée par le composant d'affichage) du maintien de l'écran allumé, le framework suit le temps passé à chaque niveau de luminosité, puis multiplie ces intervalles de temps par un coût de luminosité de l'écran interpolé.
Le framework multiplie également le temps de processeur de chaque application par le mA requis pour exécuter le processeur à une vitesse spécifique. Ce calcul établit un classement comparatif de la quantité de batterie consommée par une application en exécutant du code CPU (le temps passé en tant qu'application au premier plan et le temps total, y compris l'activité en arrière-plan, sont indiqués séparément).