O Android 10 apresenta uma opção de agendamento de economia de bateria chamada com base na rotina . Esta opção permite que um aplicativo escolhido pelo OEM forneça sinais ao sistema para um agendamento de economia de bateria mais inteligente. Esta opção requer configuração e é opcional de implementação.
Configuração do dispositivo
Especificação do provedor
Para notificar a IU de configurações que o dispositivo está configurado corretamente, use sua sobreposição de configuração para substituir o valor config_batterySaverScheduleProvider
com o nome do pacote do seu aplicativo.
Por exemplo, se você deseja que o pacote do aplicativo 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, faça flash em um telefone e navegue para Configurações> Bateria> Economia de bateria> Programação de economia de bateria . A opção baseada na rotina deve aparecer.
Padrão fora do limite
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 em rotina . O padrão do sistema é 80%, mas você pode alterá-lo.
Configuração de aplicativo
Permissões
As APIs necessárias para que o aplicativo ative 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 deseja ativar a economia de bateria esta permissão em sua privapp-whitelist
.
Um exemplo de concessão de 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 pré-conceder essa permissão para a 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 a rotina funcione corretamente, você deve pré-instalar o aplicativo na imagem do sistema com a permissão necessária. Dê a apenas um aplicativo a permissão POWER_SAVER
e permita que ele controle as APIs baseadas em rotina . Comportamento do recurso quando mais de um aplicativo tenta usar a permissão e APIs não são suportados e não especificados.
Acionando economia de bateria
APIs
Supondo que a configuração tenha sido bem-sucedida até o momento, o aplicativo OEM especificado na configuração deve ser capaz de chamar o método associado no PowerManager para acionar a economia de bateria:
public boolean setDynamicPowerSaveHint(boolean powerSaveHint, int disableThreshold)
Se a opção de programação baseada na economia de bateria de rotina estiver ativada 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 da bateria é seguro desligar a economia de bateria.
Esta API está sujeita a substituições do usuário e suspensão da economia de bateria, da mesma forma que a economia de bateria automática com base em porcentagem. Consulte a documentação da API para obter mais informações.
Para verificar se as APIs são chamadas com êxito, consulte as configurações globais para verificar se a configuração de apoio mudou o 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 deverão 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 IU do cronograma de economia de bateria e seleciona 15%. A economia de bateria deve ser ativada automaticamente SOMENTE ao atingir 15% da bateria.
- O usuário seleciona com base na rotina da IU do cronograma de economia de bateria. Quando o aplicativo chama a API com
true
, a economia de bateria é ativada. Além disso, a economia de bateria é desligada automaticamente se o dispositivo for carregado até o nível de limite indicado e desconectado. - O usuário não seleciona nenhum na IU do cronograma de economia de bateria. A economia de bateria NUNCA deve ser ativada 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.), ele DEVE FICAR DESLIGADO até que o usuário o ligue novamente manualmente ou conecte o dispositivo