Perfis de energia para Android

As informações de uso da bateria são derivadas de estatísticas de uso da bateria e valores de perfil de energia.

Estatísticas de uso da bateria

O framework determina automaticamente as estatísticas de uso da bateria rastreando quanto tempo os componentes do dispositivo passam em diferentes estados. À medida que os componentes (chipset Wi-Fi, rádio celular, Bluetooth, GPS, tela, CPU) mudam de estado (DESLIGADO/LIGADO, inativo/potência máxima, brilho baixo/alto etc.), o serviço de controle informa ao serviço BatteryStats do framework. O BatteryStats coleta informações ao longo do tempo e as armazena para uso em reinicializações. O serviço não rastreia o consumo de corrente da bateria diretamente, mas coleta informações de tempo que podem ser usadas para aproximar o consumo de bateria por diferentes componentes.

O framework coleta estatísticas usando os seguintes métodos:

  • Push. Os serviços que reconhecem mudanças de componentes enviam mudanças de estado para o serviço BatteryStats.
  • Pull. Para componentes como o uso da CPU por apps, o framework extrai automaticamente os dados em pontos de transição (como iniciar ou interromper uma atividade) para tirar um instantâneo.

O consumo de recursos está associado ao aplicativo que usa o recurso. Quando vários aplicativos usam um recurso simultaneamente (como wakelocks que impedem a suspensão do sistema), o framework distribui o consumo entre esses aplicativos, embora não necessariamente de forma igual.

Para evitar a perda de estatísticas de uso em um evento de desligamento, que pode indicar problemas de consumo de energia da bateria (ou seja, o desligamento ocorre porque a bateria atingiu capacidade restante zero), o framework atualiza as estatísticas aproximadamente a cada 30 minutos.

As estatísticas de uso da bateria são processadas totalmente pela estrutura e não exigem modificações do OEM.

Valores do perfil de energia

Atenção:os fabricantes de dispositivos precisam fornecer um perfil de consumo de energia do componente que defina o valor de consumo atual do componente e o consumo aproximado da bateria causado pelo componente ao longo do tempo. Esse perfil é definido em platform/frameworks/base/core/res/res/xml/power_profile.xml. Para orientações sobre essas configurações, consulte Valores de energia.

Em um perfil de energia, o consumo é especificado em miliampères (mA) de corrente em uma tensão nominal e pode ser um valor fracionário especificado em microampères (uA). O valor precisa ser o mA consumido na bateria, não um valor aplicável a um trilho de energia que não corresponde à corrente consumida da bateria.

Por exemplo, um perfil de energia da tela especifica os mA de corrente necessários para manter a tela ligada com brilho mínimo e máximo. Para determinar o custo de energia (ou seja, a bateria consumida pelo componente de exibição) de manter a tela ligada, o framework rastreia o tempo gasto em cada nível de brilho e multiplica esses intervalos de tempo por um custo interpolado de brilho da tela.

A estrutura também multiplica o tempo de CPU de cada aplicativo pela mA necessária para executar a CPU em uma velocidade específica. Esse cálculo estabelece um ranking comparativo de quanta bateria um aplicativo consome ao executar o código da CPU. O tempo como app em primeiro plano e o tempo total, incluindo a atividade em segundo plano, são informados separadamente.