Economizador de bateria de rotina

O Android 10 apresenta uma opção de programação de economia de bateria chamada com base na rotina . Essa opção permite que um aplicativo escolhido pelo OEM forneça sinais ao sistema para uma programação mais inteligente de economia de bateria. Esta opção requer configuração e é opcional para implementar.

Configuração do dispositivo

Especificação do provedor

Para notificar a IU de configurações de que o dispositivo está configurado corretamente, use sua sobreposição de configuração para substituir o valor config_batterySaverScheduleProvider pelo nome do pacote do seu aplicativo.

Por exemplo, se você quiser que o pacote de aplicativos com.google.android.apps.turbo controle a configuração baseada na rotina , defina este valor de configuração:

<string name="config_batterySaverScheduleProvider" translatable="false">
com.google.android.apps.turbo</string>

Agora o telefone deve mostrar a opção baseada na rotina . Para verificar, crie sua imagem, atualize-a para um telefone e navegue até Configurações > Bateria > Economia de bateria > Programação de economia de bateria . A opção baseada na rotina deve aparecer.

Limite padrão de desativação

O novo campo config_dynamicPowerSavingsDefaultDisableThreshold especifica um nível de bateria no qual o sistema desativa a economia de bateria, se tiver sido ativado pelo planejador baseado na rotina . O padrão do sistema é 80%, mas você pode alterá-lo.

Configuração do aplicativo

Permissões

As APIs necessárias para o aplicativo ativar a economia de bateria do aplicativo são protegidas pela permissão android.permission.POWER_SAVER . Esta é uma permissão de assinatura/privilegiada, portanto, conceda ao aplicativo que você deseja que acione a economia de bateria esta permissão em sua privapp-whitelist .

Um exemplo de concessão da permissão privapp a um aplicativo:

<privapp-permissions package="com.google.android.apps.turbo">
   <permission name="android.permission.POWER_SAVER"/>
</privapp-permissions>

Se você não conceder essa permissão à versão do aplicativo na imagem do sistema, o aplicativo não poderá adquirir a permissão ou chamar as APIs corretamente. O sistema não fornece nenhum feedback além dos erros de permissão usuais, portanto, verifique se você pode chamar as APIs e observar seus efeitos.

Instalação

Para que o baseado na rotina funcione corretamente, você deve pré-instalar o aplicativo na imagem do sistema com a permissão necessária. Dê a permissão POWER_SAVER a apenas um aplicativo e permita que ele controle as APIs baseadas em rotina . Comportamento do recurso quando mais de um aplicativo tenta usar a permissão e as APIs não são compatíveis e não são especificadas.

Acionando a economia de bateria

API

Supondo que a configuração seja bem-sucedida até agora, o aplicativo OEM especificado na configuração deve ser capaz de chamar com êxito o método associado no PowerManager para acionar a economia de bateria:

public boolean setDynamicPowerSaveHint(boolean powerSaveHint, int disableThreshold)

Se a opção de agendamento de economia de bateria com base na rotina estiver habilitada e o aplicativo chamar esse método com um valor true para powerSaveHint , a economia de bateria será ativada. Especifique disableThreshold para que, se o aplicativo não puder se comunicar com o sistema, o sistema ainda saiba em qual porcentagem de bateria é seguro desativar a economia de bateria.

Essa API está sujeita a substituições do usuário e adiamento da economia de bateria da mesma forma que a economia de bateria automática baseada em porcentagem. Consulte a documentação da API para obter mais informações.

Para verificar se as APIs são chamadas com sucesso, consulte as configurações globais para verificar se a configuração de suporte mudou de valor de acordo com as chamadas da API .

Por exemplo, se o usuário selecionou o modo de economia de bateria de rotina e o aplicativo está chamando setDynamicPowerSaveHint(true, 10) , as configurações globais devem ter estes valores:

automatic_power_save_mode: 1
dynamic_power_savings_disable_threshold: 10
dynamic_power_savings_enabled: 1

Se você chamar setDynamicPowerSaveHint(false, 25) , os valores devem ser:

automatic_power_save_mode: 1
dynamic_power_savings_disable_threshold: 25
dynamic_power_savings_enabled: 0

Você pode verificar esses valores usando este comando adb :

adb shell settings get global <setting-name>

Verificação

Não há uma maneira automatizada de verificar esse recurso porque não há como saber qual comportamento um OEM usará para decidir quando acionar o modo de economia de bateria de rotina. Os OEMs são, portanto, responsáveis ​​por testar sua integração para garantir que o comportamento atenda às expectativas. Em particular, verifique se o dispositivo pode cumprir as seguintes tarefas:

  • O usuário seleciona com base na porcentagem na interface do usuário de programação de economia de bateria e seleciona 15%. A economia de bateria deve ser ativada automaticamente APENAS ao atingir 15% da bateria.
  • O usuário seleciona com base na rotina na interface do usuário de programação de economia de bateria. Quando o aplicativo chama a API com true , a economia de bateria é ativada. Além disso, a economia de bateria desliga automaticamente se o dispositivo for carregado até o nível de limite indicado e desconectado.
  • O usuário não seleciona nenhum na interface do usuário de programação de economia de bateria. O economizador de bateria NUNCA deve ser ativado automaticamente.
  • Se o aplicativo ativar a economia de bateria e o usuário substituir manualmente a economia de bateria para desligá-la novamente (usando Configurações rápidas, Configurações etc.), ela deverá FICAR DESLIGADA até que o usuário a ligue novamente manualmente ou conecte o dispositivo.