O Android 10 introduz uma opção de programação da 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 configuração e é opcional para implementação.
Configuração do dispositivo
Nesta seção, descrevemos como configurar seu dispositivo para a opção Com base na rotina.
Especificação do provedor
Para notificar a interface 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 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>
Para verificar, crie a imagem, grave em um dispositivo e acesse Configurações
Bateria > Economia de bateria > Programação da Economia de bateria. A opção Com base na rotina aparece.
Limite padrão de desativação
O campo config_dynamicPowerSavingsDefaultDisableThreshold especifica um nível de bateria em que o sistema desativa a Economia de bateria se o programador Baseado em rotina a tiver ativado. O padrão do sistema é 80%, mas você pode mudar esse valor.
Configuração do app
Esta seção descreve como configurar seu app para usar a opção Com base na rotina.
Permissões
As APIs necessárias para que um app ative a Economia de bateria de rotina são protegidas pela
permissão android.permission.POWER_SAVER. Essa é uma permissão de assinatura ou
privilegiada. Isso significa que o app precisa estar em um diretório priv-app
na imagem do sistema, e você precisa conceder essa permissão explicitamente.
Para apps privilegiados, conceda permissões em um arquivo XML de configuração do sistema
no diretório /etc/permissions/ na mesma partição do app. Por
exemplo, para conceder a permissão android.permission.POWER_SAVER a um app com
o nome do pacote com.google.android.apps.turbo:
<!-- File located at /etc/permissions/privapp-permissions-DEVICE_NAME.xml -->
<permissions>
<privapp-permissions package="com.google.android.apps.turbo">
<permission name="android.permission.POWER_SAVER"/>
</privapp-permissions>
</permissions>
Se você não conceder essa permissão ao app na imagem do sistema, ele 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 padrão. Por isso, é fundamental verificar se o app 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 android.permission.POWER_SAVER a apenas um app e deixe que ele controle as APIs Baseado em rotina. O comportamento do recurso não é compatível nem especificado se mais de um app tentar usar a permissão e as APIs.
Ativar a Economia de bateria de rotina
Nesta seção, descrevemos como o app pode acionar o Modo de economia de bateria com base na rotina usando as APIs fornecidas.
APIs
Se a configuração for bem-sucedida, o app do OEM especificado na configuração poderá chamar o método associado em PowerManager para ativar a 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 a porcentagem de bateria em que é 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 mais informações.
Para verificar se as APIs foram chamadas corretamente, consulte as configurações globais e confirme se o valor da configuração de suporte mudou de acordo com as chamadas de API.
Por exemplo, se você selecionar o modo Economia de bateria Com base na rotina e o app
chamar 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 o comando adb:
adb shell settings get global <setting-name>
Verificação
Não há uma maneira automatizada de verificar esse recurso porque o OEM determina o comportamento que aciona o modo Economia de bateria Com base na rotina. Os OEMs precisam testar a integração para verificar se o comportamento atende às expectativas. Especificamente, verifique se o dispositivo pode realizar as seguintes tarefas:
- Com base na porcentagem:se você selecionar Com base na porcentagem na interface da Programação da Economia de bateria e escolher 15%, a Economia de bateria será ativada automaticamente apenas quando a bateria atingir 15%.
- Baseada em rotina:se você selecionar Baseada em rotina na interface da Programação da Economia de bateria, a Economia de bateria será ativada quando o app chamar a API com
true. Além disso, a Economia de bateria é desativada automaticamente se o dispositivo for carregado até o nível de limite indicado e desconectado. - Nenhuma:se você selecionar Nenhuma na interface Programação da Economia de bateria, a Economia de bateria nunca será ativada automaticamente.
- Substituição manual:se o app ativar a Economia de bateria e você substituir manualmente a Economia de bateria para desativá-la (usando as Configurações rápidas, as Configurações ou outros métodos), ela vai permanecer desativada até que você a ative novamente de forma manual ou conecte o dispositivo.