Android 10 introduce un'opzione di programmazione del risparmio energetico chiamata in base alla routine. Questa opzione consente a un'app scelta dall'OEM di fornire indicatori al sistema per una pianificazione più intelligente del risparmio energetico. Questa opzione richiede la configurazione ed è facoltativa.
Configurazione dispositivo
Specifica del provider
Per comunicare all'interfaccia utente Impostazioni che il dispositivo è configurato correttamente, utilizza l'overlay di configurazione per sostituire il valore config_batterySaverScheduleProvider
con il nome del pacchetto della tua app.
Ad esempio, se vuoi che il pacchetto dell'app com.google.android.apps.turbo
controlla l'impostazione in base alla routine, devi impostare questo valore di configurazione:
<string name="config_batterySaverScheduleProvider" translatable="false">
com.google.android.apps.turbo</string>
Ora lo smartphone dovrebbe mostrare l'opzione In base alla routine. Per verificare, crea l'immagine, esegui il flashing su uno smartphone e vai a Impostazioni > Batteria > Risparmio energetico > Pianificazione risparmio energetico. Dovresti visualizzare l'opzione In base alla routine.
Soglia di disattivazione predefinita
Il nuovo campo config_dynamicPowerSavingsDefaultDisableThreshold
specifica un livello della batteria al quale il sistema disattiva il risparmio energetico, se è stato attivato dal programmatore in base alla routine. Il valore predefinito di sistema è 80%, ma puoi modificarlo.
Configurazione app
Autorizzazioni
Le API necessarie per l'attivazione del risparmio batteria dall'app sono protette
dall'autorizzazione android.permission.POWER_SAVER
. Si tratta di un'autorizzazione con firma/privilegiata, quindi concedi questa autorizzazione all'app che vuoi che possa attivare il risparmio batteria nel tuo privapp-whitelist
.
Un esempio di concessione dell'autorizzazione privapp
a un'app:
<privapp-permissions package="com.google.android.apps.turbo">
<permission name="android.permission.POWER_SAVER"/>
</privapp-permissions>
Se non concedi in anticipo questa autorizzazione alla versione dell'app nell'immagine di sistema, l'app non può acquisire l'autorizzazione o chiamare correttamente le API. Il sistema non fornisce alcun feedback oltre ai consueti errori di autorizzazione, quindi verifica di poter chiamare le API e osservane gli effetti.
Installazione
Affinché l'opzione In base alla routine funzioni correttamente, devi preinstallare l'app sull'immagine di sistema con l'autorizzazione richiesta. Concedi l'autorizzazione POWER_SAVER
solo a un'app e consentile di controllare le API in base alla routine. Il comportamento della funzionalità quando più di un'app tenta di utilizzare l'autorizzazione e le API non è supportato e non è specificato.
Attivare il risparmio energetico
API
Se la configurazione è andata a buon fine finora, l'app OEM specificata nella configurazione dovrebbe essere in grado di chiamare correttamente il metodo associato in PowerManager per attivare il risparmio batteria:
public boolean setDynamicPowerSaveHint(boolean powerSaveHint, int disableThreshold)
Se l'opzione di programmazione del risparmio energetico in base alla routine è attivata e l'app chiama questo metodo con un valore true
per powerSaveHint
, il risparmio energetico viene attivato. Specifica disableThreshold
in modo che, se l'app non riesce a comunicare con il sistema, quest'ultimo sappia comunque a quale percentuale della batteria è possibile disattivare il risparmio energetico.
Questa API è soggetta alle sostituzioni dell'utente e alla sospensione del risparmio energetico come il risparmio energetico automatico basato su percentuale. Per saperne di più, consulta la documentazione dell'API.
Per verificare che le API vengano chiamate correttamente, esegui query sulle impostazioni globali per verificare che l'impostazione di supporto abbia modificato il valore in base alle chiamate API.
Ad esempio, se l'utente ha selezionato la modalità di risparmio energetico di routine e l'app chiama setDynamicPowerSaveHint(true, 10)
, le impostazioni globali dovrebbero avere questi valori:
automatic_power_save_mode: 1
dynamic_power_savings_disable_threshold: 10
dynamic_power_savings_enabled: 1
Se chiami setDynamicPowerSaveHint(false, 25)
, i valori devono essere:
automatic_power_save_mode: 1
dynamic_power_savings_disable_threshold: 25
dynamic_power_savings_enabled: 0
Puoi controllare questi valori utilizzando questo comando adb
:
adb shell settings get global <setting-name>
Verifica
Non esiste un modo automatico per verificare questa funzionalità perché non è possibile sapere quale comportamento utilizzerà un OEM per decidere quando attivare la modalità di risparmio energetico di routine. Gli OEM sono quindi responsabili del test della loro integrazione per assicurarsi che il comportamento soddisfi le aspettative. In particolare, verifica che il dispositivo possa svolgere le seguenti attività:
- L'utente seleziona in base alla percentuale nell'interfaccia utente della pianificazione del risparmio energetico e seleziona il 15%. Il risparmio energetico dovrebbe attivarsi automaticamente SOLO quando la batteria raggiunge il 15%.
- L'utente seleziona in base alla routine nell'interfaccia utente della programmazione del risparmio energetico. Quando
l'app chiama l'API con
true
, il risparmio energetico si attiva. Inoltre, il risparmio energetico si disattiva automaticamente se il dispositivo è carico fino al livello di soglia indicato e scollegato dalla corrente. - L'utente seleziona nessuno nell'interfaccia utente della pianificazione del risparmio energetico. Il risparmio energetico non deve MAI attivarsi automaticamente.
- Se l'app attiva il risparmio energetico e l'utente lo disattiva manualmente (utilizzando Impostazioni rapide, Impostazioni e così via), il risparmio energetico deve rimanere disattivato finché l'utente non lo riattiva manualmente o non collega il dispositivo alla corrente.