Risparmio energetico di routine

Android 10 introduce un'opzione di pianificazione del risparmio energetico chiamata In base alla routine. Questa opzione consente a un'app scelta dall'OEM di fornire segnali al sistema per una pianificazione più intelligente del risparmio energetico. Questa opzione richiede la configurazione ed è facoltativa da implementare.

Configurazione dispositivo

Questa sezione descrive come configurare il dispositivo per l'opzione In base alla routine.

Specifica del fornitore

Per notificare all'interfaccia utente Impostazioni che il dispositivo è configurato correttamente, utilizza la sovrapposizione di configurazione per sostituire il valore config_batterySaverScheduleProvider con il nome del pacchetto applicativo. Ad esempio, se vuoi che il pacchetto applicativo com.google.android.apps.turbo controlli l'impostazione In base alla routine, imposta questo valore di configurazione:

<string name="config_batterySaverScheduleProvider" translatable="false">
com.google.android.apps.turbo</string>

Per verificare, crea la build, eseguine il flashing su un dispositivo e vai a Impostazioni

Batteria > Risparmio energetico > Pianificazione del risparmio energetico. Viene visualizzata l'opzione In base alla routine.

Soglia di disattivazione predefinita

Il campo config_dynamicPowerSavingsDefaultDisableThreshold specifica un livello batteria in cui il sistema disattiva il risparmio energetico se è stato attivato dalla pianificazione In base alla routine. Il valore predefinito del sistema è 80%, ma puoi modificarlo.

Configurazione app

Questa sezione descrive come configurare l'app per utilizzare l'opzione In base alla routine.

Autorizzazioni

Le API necessarie per un'app per attivare il risparmio energetico in base alla routine sono protette dall'autorizzazione android.permission.POWER_SAVER. Si tratta di un'autorizzazione con firma o con privilegi. Ciò significa che l'app deve trovarsi in una directory priv-app nell'immagine di sistema e devi concedere esplicitamente questa autorizzazione.

Per le app con privilegi, devi concedere le autorizzazioni in un file XML di configurazione di sistema nella directory /etc/permissions/ sulla stessa partizione dell'app. Ad esempio, per concedere l'autorizzazione android.permission.POWER_SAVER a un'app con il nome del pacchetto 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 non concedi in anticipo questa autorizzazione all'app nell'immagine di sistema, l'app non può acquisire l'autorizzazione o chiamare le API correttamente. Il sistema non fornisce feedback oltre agli errori di autorizzazione standard, quindi è fondamentale verificare che l'app possa chiamare le API e osservarne gli effetti.

Installazione

Affinché l'opzione In base alla routine funzioni correttamente, devi preinstallare l'app nell'immagine di sistema con l'autorizzazione richiesta. Concedi l'autorizzazione android.permission.POWER_SAVER a una sola app e consenti a quest'ultima di controllare le API In base alla routine. Il comportamento della funzionalità non è supportato e non è specificato se più di un'app tenta di utilizzare l'autorizzazione e le API.

Attivare il risparmio energetico in base alla routine

Questa sezione descrive come l'app può attivare il risparmio energetico In base alla routine utilizzando le API fornite.

API

Se la configurazione è andata a buon fine, l'app OEM specificata nella configurazione può chiamare correttamente il metodo associato in PowerManager per attivare il risparmio energetico:

public boolean setDynamicPowerSaveHint(boolean powerSaveHint, int disableThreshold)

Se l'opzione di pianificazione del risparmio energetico In base alla routine è attivata e l'app chiama questo metodo con un valore true per powerSaveHint, il risparmio energetico si attiva. Specifica disableThreshold in modo che, se l'app non riesce a comunicare con il sistema, il sistema conosca comunque la percentuale della batteria in cui è sicuro disattivare il risparmio energetico.

Questa API è soggetta alle sostituzioni dell'utente e al rinvio del risparmio energetico nello stesso modo del risparmio energetico automatico basato sulla 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 il valore dell'impostazione di backup sia cambiato in base alle chiamate API. Ad esempio, se selezioni la modalità di risparmio energetico In base alla routine e l'app chiama setDynamicPowerSaveHint(true, 10), le impostazioni globali hanno questi valori:

automatic_power_save_mode: 1
dynamic_power_savings_disable_threshold: 10
dynamic_power_savings_enabled: 1

Se poi chiami setDynamicPowerSaveHint(false, 25), i valori sono:

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é l'OEM determina il comportamento che attiva la modalità di risparmio energetico In base alla routine. Gli OEM devono testare la loro integrazione per verificare che il comportamento soddisfi le aspettative. In particolare, verifica che il dispositivo possa eseguire le seguenti attività:

  • In base alla percentuale: se selezioni In base alla percentuale nell'interfaccia utente Pianificazione del risparmio energetico e selezioni 15%, il risparmio energetico si attiva automaticamente solo quando la batteria raggiunge il 15%.
  • In base alla routine: se selezioni In base alla routine nell'interfaccia utente Pianificazione del risparmio energetico, il risparmio energetico si attiva quando l'app chiama l'API con true. Inoltre, il risparmio energetico si disattiva automaticamente se il dispositivo si carica fino al livello di soglia indicato e viene scollegato.
  • Nessuna: se selezioni Nessuna nell'interfaccia utente Pianificazione del risparmio energetico , il risparmio energetico non si attiva mai automaticamente.
  • Sostituzione manuale: se l'app attiva il risparmio energetico e lo sostituisci manualmente per disattivarlo (utilizzando Impostazioni rapide, Impostazioni o altri metodi), rimane disattivato finché non lo riattivi manualmente o non colleghi il dispositivo.