La información sobre el uso de la batería se deriva de las estadísticas de uso de la batería y los valores del perfil de energía.
Estadísticas de uso de batería
El marco determina automáticamente las estadísticas de uso de la batería mediante el seguimiento de cuánto tiempo pasan los componentes del dispositivo en diferentes estados. A medida que los componentes (chipset Wi-Fi, radio celular, Bluetooth, GPS, pantalla, CPU) cambian de estado (apagado/encendido, inactivo/plena potencia, brillo bajo/alto, etc.), el servicio de control informa al servicio marco BatteryStats. BatteryStats recopila información a lo largo del tiempo y la almacena para usarla durante los reinicios. El servicio no rastrea directamente el consumo de corriente de la batería, sino que recopila información de sincronización que puede usarse para aproximar el consumo de batería de diferentes componentes.
El marco recopila estadísticas utilizando los siguientes métodos:
- Empujar . Los servicios conscientes de los cambios de componentes envían cambios de estado al servicio BatteryStats.
- Jalar . Para componentes como el uso de la CPU por parte de las aplicaciones, el marco extrae automáticamente los datos en los puntos de transición (como iniciar o detener una actividad) para tomar una instantánea.
El consumo de recursos está asociado con la aplicación que utiliza el recurso. Cuando varias aplicaciones utilizan simultáneamente un recurso (como los wakelocks que evitan que el sistema se suspenda), el marco distribuye el consumo entre esas aplicaciones, aunque no necesariamente de manera equitativa.
Para evitar perder estadísticas de uso por un evento de apagado, que puede indicar problemas de consumo de energía de la batería (es decir, el apagado se produce porque la batería alcanzó cero capacidad restante), el marco muestra estadísticas aproximadamente cada 30 minutos.
Las estadísticas de uso de la batería las maneja completamente el marco y no requieren modificaciones del OEM.
Valores del perfil de energía
Precaución: Los fabricantes de dispositivos deben proporcionar un perfil de energía del componente que defina el valor de consumo actual del componente y el consumo aproximado de batería causado por el componente a lo largo del tiempo. Este perfil se define en platform/frameworks/base/core/res/res/xml/power_profile.xml . Para obtener orientación sobre estas configuraciones, consulte Valores de potencia .
Dentro de un perfil de energía, el consumo de energía se especifica en miliamperios (mA) de consumo de corriente a un voltaje nominal y puede ser un valor fraccionario especificado en microamperios (uA). El valor debe ser los mA consumidos en la batería y no un valor aplicable a un riel eléctrico que no corresponda a la corriente consumida por la batería.
Por ejemplo, un perfil de energía de pantalla especifica los mA de corriente necesarios para mantener la pantalla encendida con el brillo mínimo y máximo. Para determinar el costo de energía (es decir, la batería agotada por el componente de la pantalla) de mantener la pantalla encendida, el marco rastrea el tiempo empleado en cada nivel de brillo y luego multiplica esos intervalos de tiempo por un costo de brillo de la pantalla interpolado.
El marco también multiplica el tiempo de CPU para cada aplicación por los mA necesarios para ejecutar la CPU a una velocidad específica. Este cálculo establece una clasificación comparativa de cuánta batería consume una aplicación al ejecutar el código de la CPU (el tiempo como aplicación en primer plano y el tiempo total, incluida la actividad en segundo plano, se informan por separado).