O Android 10 apresenta uma opção de programação para economia de bateria chamado baseado em rotina. Essa opção permite que um app escolhido pelo OEM forneça 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 seu
sobreposição de configuração para substituir o valor config_batterySaverScheduleProvider
por
o nome do pacote do seu app.
Por exemplo, se você quiser que o pacote de apps com.google.android.apps.turbo
controlar 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 no qual o sistema desativa a economia de bateria, caso tenha sido ativada
pelo programador com base na rotina. O padrão do sistema é 80%, mas você pode
mudar isso.
Configuração do app
Permissões
As APIs necessárias para que o app ative a economia de bateria estã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 previamente à versão do app no sistema imagem, o app não poderá adquirir a permissão ou chamar as APIs adequadamente. O sistema não fornece nenhum feedback além dos comuns erros de permissão, por isso verifique se é possível chamar as APIs e observar os efeitos delas.
Instalação
Para que a opção Baseado na rotina funcione corretamente, é preciso pré-instalar o app na
imagem do sistema com a permissão necessária. POWER_SAVER
a apenas um app
e permitir que ela controle as APIs baseadas em 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 baseada em rotina estiver ativada e o app
chama esse método com um valor true
para powerSaveHint
e, em seguida, "Economia de bateria"
será ativado. 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 de economia de bateria de rotina e o app estiver
chame setDynamicPowerSaveHint(true, 10)
, as configurações globais terão
esses 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 Dessa forma, os OEMs são responsáveis por testar a integração para garantir que o comportamento atende às expectativas. Mais especificamente, verifique se o dispositivo pode realizar as seguintes tarefas:
- O usuário seleciona com base na porcentagem na interface da programação do modo de economia de bateria e seleciona 15%. A Economia de bateria será ativada automaticamente SOMENTE quando 15% de bateria.
- O usuário seleciona com base na rotina na interface de programação da Economia de bateria. Quando
o app chamar a API com
true
, a economia de bateria será 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. Economia de bateria NUNCA devem acender automaticamente.
- Se o app ativar a economia de bateria e o usuário substituir a bateria manualmente o modo de economia seja desativado novamente (usando as Configurações rápidas, Configurações etc.), ele deve MANTER DESLIGADO até que o usuário o reative manualmente ou conecte o dispositivo.