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 forniscono segnali al sistema per una pianificazione più intelligente del risparmio energetico. Questa opzione richiede la configurazione ed è facoltativa per l'implementazione.
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
venga
controllare 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
livello della batteria a cui il sistema disattiva il risparmio energetico, se era acceso
dallo scheduler basato sulla routine. L'impostazione predefinita di sistema è 80%, ma puoi
modificarlo.
Configurazione app
Autorizzazioni
Le API necessarie per consentire all'app di attivare il 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 nel 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é in base alla routine funzioni correttamente, devi preinstallare l'app nella
un'immagine di sistema
con l'autorizzazione richiesta. Concedi a una sola app l'POWER_SAVER
e consentirgli di controllare le API basate sulla routine. Comportamento di
la funzionalità quando più app tentano di usare l'autorizzazione e le API vengono
non supportato e non specificato.
Attivare il risparmio energetico
API
Supponendo che la configurazione abbia avuto esito positivo finora, l'app OEM specificata nella configurazione dovrebbe riuscire a chiamare correttamente il metodo associato in PowerManager per attivare risparmio energetico:
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
, poi risparmia batteria
si attiva. 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 all'override dell'utente e alla posticipazione per risparmio energetico come risparmio energetico automatico basato su percentuale. Per ulteriori informazioni, consulta la documentazione dell'API.
Per verificare che le API vengano chiamate correttamente, esegui una 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 è
chiamando 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 dovrebbero 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 sostituisce manualmente la batteria per disattivarlo nuovamente (tramite Impostazioni rapide, Impostazioni e così via), dovrebbe RIMANERE spento finché l'utente non lo riaccende manualmente o non collega il dal dispositivo.