Economia de bateria de rotina

O Android 10 apresenta uma opção de programação para economia de bateria chamada baseada em rotina. Essa opção permite que um app escolhido pelo OEM fornecer sinais ao sistema para programar uma economia de bateria mais inteligente. Essa opção requer configuração, e a implementação dela é opcional.

Configuração do dispositivo

Especificação do provedor

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

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

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

Agora o smartphone vai mostrar a opção com base na rotina. Para fazer a verificação, crie seu imagem, transfira-a para um telefone e navegue até Configurações > Bateria > Bateria Protetor > Programação da Economia de bateria. A opção Com base na rotina vai aparecer.

Limite desativado por padrão

O novo campo config_dynamicPowerSavingsDefaultDisableThreshold especifica um nível de bateria em que o sistema desativa o modo de economia de bateria, se ele tiver sido ativado pelo programador baseado em rotina. O padrão do sistema é 80%, mas é possível alterá-la.

Configuração do app

Permissões

As APIs necessárias para que o app ative o modo de economia de bateria são protegidas pela permissão android.permission.POWER_SAVER. Esta é uma permissão privilegiada/de assinatura. Portanto, conceda ao app que você quer poder acionar do recurso de economia de bateria no dispositivo privapp-whitelist.

Um exemplo de como conceder a permissão privapp a um app:

<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 app na imagem do sistema, o app não poderá adquirir a permissão nem 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 observe os efeitos delas.

Instalação

Para que a opção baseado na rotina funcione corretamente, é preciso pré-instalar o app na com a permissão necessária. Conceda a permissão POWER_SAVER a apenas um app e permita que ele controle as APIs com base na rotina. Comportamento de o recurso quando mais de um app tenta usar a permissão e as APIs são sem suporte e não especificado.

Acionar a economia de bateria

APIs

Supondo que a configuração tenha sido bem-sucedida até agora, o app OEM especificado na configuração poderá chamar o método associado no PowerManager para acionar o modo de economia de bateria:

public boolean setDynamicPowerSaveHint(boolean powerSaveHint, int disableThreshold)

Se a opção de programação de economia de bateria com base na rotina estiver ativada e o app chamar esse método com um valor true para powerSaveHint, a economia de bateria será ativada. Especifique disableThreshold para que, se o app não possa se comunicar com o sistema, o sistema ainda sabe em qual porcentagem da bateria é seguro ligar economia de bateria.

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

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

Por exemplo, se o usuário selecionou o modo Economia de bateria de rotina e o app está chamando setDynamicPowerSaveHint(true, 10), as configurações globais terão 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 serão:

automatic_power_save_mode: 1
dynamic_power_savings_disable_threshold: 25
dynamic_power_savings_enabled: 0

É possível verificar esses valores usando este comando adb:

adb shell settings get global <setting-name>

Verificação

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

  • O usuário seleciona com base na porcentagem na interface de programação da Economia de bateria. e seleciona 15%. A economia de bateria só precisa ser ativada automaticamente quando a bateria estiver em 15%.
  • O usuário seleciona com base na rotina na interface de programação da Economia de bateria. Quando o app chama a API com true, a economia de bateria é ativada. Além disso, a economia de bateria será desativada automaticamente se o dispositivo estiver carregado até e desconectado.
  • O usuário seleciona nenhum na interface da programação do modo de economia de bateria. Economia de bateria NUNCA devem acender automaticamente.
  • Se o app ativar o modo de economia de bateria e o usuário substituir manualmente o modo de economia de bateria para que ele seja desativado novamente (usando as Configurações rápidas, Configurações etc.), ele vai permanecer DESATIVADO até que o usuário o reative manualmente ou conecte o dispositivo.