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 la batería
El framework determina automáticamente las estadísticas de uso de la batería haciendo un seguimiento del tiempo que los componentes del dispositivo pasan en diferentes estados. A medida que los componentes (chipset Wi-Fi, radio celular, Bluetooth, GPS, pantalla, CPU) cambian de estado (APAGADO/ENCENDIDO, inactivo/potencia máxima, brillo bajo/alto, etc.), el servicio de control informa al framework el servicio BatteryStats. BatteryStats recopila información a lo largo del tiempo y la almacena para usarla en los reinicios. El servicio no realiza un seguimiento directo del consumo de corriente de la batería, sino que recopila información de tiempo que se puede usar para aproximar el consumo de batería de diferentes componentes.
El framework recopila estadísticas con los siguientes métodos:
- Envío. Los servicios que conocen los cambios de componentes envían los cambios de estado al servicio BatteryStats.
- Extracción. Para componentes como el uso de la CPU por parte de las apps, el framework 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 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 forma equitativa.
Para evitar perder las estadísticas de uso de un evento de apagado, que puede indicar problemas de consumo de batería (es decir, el apagado se produce porque la batería alcanzó una capacidad restante de cero), el framework actualiza las estadísticas aproximadamente cada 30 minutos.
El framework maneja por completo las estadísticas de uso de la 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 de los componentes que defina el valor de consumo de corriente del componente y el agotamiento aproximado 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 miliamperios (mA) de consumo de corriente a un voltaje nominal y puede ser un valor fraccionario especificado en microamperios (uA). El valor debe ser el mA consumido en la batería y no un valor aplicable a un riel de alimentación que no corresponda a la corriente consumida de la batería.
Por ejemplo, un perfil de energía de la pantalla especifica el mA de corriente que se requiere 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 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 por un costo de brillo de pantalla interpolado.
El framework también multiplica el tiempo de CPU de cada aplicación por el mA que se requiere 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).