La información sobre el uso de la batería se obtiene 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 framework determina automáticamente las estadísticas de uso de batería haciendo un seguimiento del tiempo que los componentes del dispositivo permanecen en diferentes estados. A medida que los componentes (chipset Wi-Fi, radio celular, Bluetooth, GPS, pantalla y CPU) cambian de estado (apagado/encendido, inactivo/con energía completa, brillo bajo/alto, etcétera), el servicio de control informa al servicio BatteryStats del framework. BatteryStats recopila información con el tiempo y la almacena para usarla en los reinicios. El servicio no realiza un seguimiento directo de la corriente de la batería, sino que recopila información de tiempo que se puede usar para calcular el consumo de batería de diferentes componentes.
El framework recopila estadísticas con los siguientes métodos:
- Push. Los servicios que detectan cambios en los componentes envían cambios de estado al servicio BatteryStats.
- Extracción. En el caso de componentes como el uso de la CPU por parte de las apps, el framework recupera 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 usa el recurso. Cuando varias aplicaciones usan un recurso de forma simultánea (como los bloqueos de activación que impiden que el sistema se suspenda), el framework distribuye el consumo entre esas aplicaciones, aunque no necesariamente de manera equitativa.
Para evitar perder las estadísticas de uso de un evento de apagado, lo 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 framework muestra estadísticas de forma intermitente aproximadamente cada 30 minutos.
El framework controla por completo las estadísticas de uso de batería y no requiere 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 la descarga aproximada de la batería que causa el componente con el tiempo. Este perfil se define en platform/frameworks/base/core/res/res/xml/power_profile.xml. Para obtener orientación sobre esta configuración, consulta Valores de energía.
Dentro de un perfil de energía, el consumo de energía se especifica en miliamps (mA) de consumo de corriente a un voltaje nominal y puede ser un valor fraccionario especificado en microamps (μA). El valor debe ser el mA consumido en la batería y no un valor aplicable a un riel de energía que no corresponde a la corriente consumida de la batería.
Por ejemplo, un perfil de energía de la pantalla especifica los mA de corriente necesarios para mantener la pantalla encendida con el brillo mínimo y el máximo. Para determinar el costo de energía (es decir, la batería que agota el componente de la pantalla) de mantener la pantalla encendida, el framework realiza un seguimiento del tiempo que se pasa en cada nivel de brillo y, luego, multiplica esos intervalos de tiempo por un costo de brillo de la pantalla interpolado.
El framework también multiplica el tiempo de la CPU de 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 la cantidad de batería que consume una aplicación mediante la ejecución de código de CPU (el tiempo como app en primer plano y el tiempo total, incluida la actividad en segundo plano, se informan por separado).