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.