Perfis de energia para Android

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

Estatísticas de uso da bateria

O framework determina automaticamente as estatísticas de uso da bateria rastreando o tempo que 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 total, brilho baixo/alto etc.), o serviço controlador 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 da bateria por diferentes componentes.

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

  • Push. Os serviços cientes das mudanças de componente 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 nos pontos de transição (como iniciar ou interromper uma atividade) para fazer uma captura de tela.

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, mas não necessariamente da mesma forma.

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

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

Valores do perfil de energia

Atenção:os fabricantes de dispositivos precisam fornecer um perfil de energia do componente que defina o valor de consumo atual do componente e a descarga aproximada da bateria causada 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 de energia é especificado em miliampéres (mA) de consumo 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, e 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 de tela especifica o mA de corrente necessário para manter a tela no brilho mínimo e máximo. Para determinar o custo de energia (ou seja, a bateria drenada 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 de brilho de tela interpolado.

O framework também multiplica o tempo da CPU para cada aplicativo pelo mA necessário para executar a CPU em uma velocidade específica. Esse cálculo estabelece uma classificação comparativa de quanta bateria um aplicativo consome ao executar o código da CPU (o tempo como o app em primeiro plano e o tempo total, incluindo a atividade em segundo plano, são informados separadamente).