O Android 10 introduz uma opção de programação para economia de bateria chamada baseada em rotina. Essa opção permite que um app escolhido pelo OEM dê sinais ao sistema para programar uma economia de bateria mais inteligente. Essa opção requer uma 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 sua
sobreposição de configuração para substituir o valor config_batterySaverScheduleProvider
pelo
nome do pacote do seu app.
Por exemplo, se você quiser que o pacote do app 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 verificar, crie a imagem, faça o flash em um smartphone e acesse Configurações > Bateria > Economia de bateria > Programação da economia de bateria. A opção Com base na rotina vai aparecer.
Limite padrão de desativação
O novo campo config_dynamicPowerSavingsDefaultDisableThreshold
especifica um nível de bateria em que o sistema desativa a Economia de bateria, se ela tiver sido ativada pelo programador baseado em rotina. O padrão do sistema é 80%, mas você pode mudar esse valor.
Configuração do app
Permissões
As APIs necessárias para ativar a economia de bateria no app são protegidas
pela permissão android.permission.POWER_SAVER
. Essa é uma permissão de assinatura/privilegiada. Portanto, conceda ao app que você quer que possa ativar o
modo de economia de bateria essa permissão no seu privapp-whitelist
.
Exemplo de concessão da 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 previamente 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 feedback além dos erros de permissão comuns. Portanto, verifique se você pode chamar as APIs e observar os efeitos delas.
Instalação
Para que a opção com base na rotina funcione corretamente, é necessário pré-instalar o app na
imagem do sistema com a permissão necessária. Conceda a permissão POWER_SAVER
a apenas um app e permita que ele controle as APIs baseadas em rotinas. O comportamento do
recurso quando mais de um app tenta usar a permissão e as APIs não é
compatível nem especificado.
Ativar a Economia de bateria
APIs
Supondo que a configuração tenha sido bem-sucedida até agora, o app do OEM especificado na configuração precisa conseguir 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 da economia de bateria baseada em 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 conseguir se comunicar com
o sistema, ele ainda saiba em qual porcentagem da bateria é seguro desativar
o modo de economia de bateria.
Essa API está sujeita a substituições do usuário e adiamentos da economia de bateria da mesma forma que 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 corretamente, consulte as configurações globais para verificar se o valor da configuração de suporte 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 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 serão:
automatic_power_save_mode: 1
dynamic_power_savings_disable_threshold: 25
dynamic_power_savings_enabled: 0
É possível verificar esses valores usando o comando adb
:
adb shell settings get global <setting-name>
Verificação
Não há uma maneira automatizada de verificar esse recurso porque não é possível saber qual comportamento um OEM vai usar para decidir quando acionar o modo de economia de bateria de rotina. Portanto, os OEMs são responsáveis por testar a integração para garantir que o comportamento atenda às expectativas. Em particular, verifique se o dispositivo pode executar as seguintes tarefas:
- O usuário seleciona com base na porcentagem na interface da programação de economia de bateria e escolhe 15%. A Economia de bateria só deve ser ativada automaticamente quando a bateria chegar a 15%.
- O usuário seleciona baseada em rotina na interface da programação de economia de bateria. Quando
o app chama a API com
true
, a Economia de bateria é ativada. Além disso, a Economia de bateria é desativada automaticamente se o dispositivo for carregado até o nível de limite indicado e desconectado. - O usuário seleciona nenhum na interface de programação da Economia de bateria. A Economia de bateria NUNCA deve ser ativada automaticamente.
- Se o app ativar a economia de bateria e o usuário desativar manualmente a economia de bateria novamente (usando as Configurações rápidas, as Configurações etc.), ela vai PERMANECER DESATIVADA até que o usuário a ative novamente de forma manual ou conecte o dispositivo.