Les informations sur l'utilisation de la batterie sont dérivées 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 le temps passé par les composants de l'appareil dans différents états. Lorsque les composants (chipset Wi-Fi, radio cellulaire, Bluetooth, GPS, écran, CPU) changent d'état (OFF/ON, veille/pleine puissance, luminosité faible/élevée, etc.), le service de contrôle rend compte au service cadre BatteryStats. BatteryStats collecte des informations au fil du temps et les stocke pour les utiliser lors des redémarrages. Le service ne suit pas directement la consommation de courant de la batterie, mais collecte à la place des informations de synchronisation qui peuvent être utilisées pour approximer la consommation de la batterie par différents composants.
Le framework collecte des statistiques à l'aide des méthodes suivantes :
- Pousser . Les services conscients des modifications des composants envoient les changements d’état au service BatteryStats.
- Tirer . 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 utilisant la ressource. Lorsque plusieurs applications utilisent simultanément une ressource (comme des wakelocks qui empêchent la suspension du système), 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 lors d'un événement d'arrêt, qui peut indiquer des problèmes de consommation d'énergie de la batterie (c'est-à-dire que l'arrêt se produit parce que la batterie a atteint zéro capacité restante), 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 OEM.
Valeurs du profil de puissance
Attention : les fabricants d'appareils doivent fournir un profil de puissance des composants qui définit la valeur de consommation actuelle du composant et l'épuisement approximatif de la batterie provoqué 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, voir Valeurs de puissance .
Dans un profil de puissance, la consommation électrique est spécifiée en milliampères (mA) de consommation de courant à une tension nominale et peut être une valeur fractionnaire spécifiée en microampères (uA). La valeur doit être le mA consommé par 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 de puissance d'affichage spécifie le mA de courant requis pour maintenir l'écran allumé à une luminosité minimale et à une luminosité maximale. Pour déterminer le coût énergétique (c'est-à-dire la batterie épuisée par le composant d'affichage) pour maintenir l'écran allumé, le cadre suit le temps passé à chaque niveau de luminosité, puis multiplie ces intervalles de temps par un coût de luminosité d'affichage interpolé.
Le framework multiplie également le temps CPU de chaque application par le mA requis pour faire fonctionner le CPU à une vitesse spécifique. Ce calcul établit un classement comparatif de la quantité de batterie consommée par une application en exécutant le code CPU (le temps passé en tant qu'application de premier plan et le temps total, y compris l'activité en arrière-plan, sont signalés séparément).