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 indicatori al sistema per una pianificazione più intelligente del Risparmio Energetico. Questa opzione richiede la configurazione ed è facoltativa.

Configurazione dispositivo

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

Specifica del fornitore

Per comunicare all'interfaccia utente Impostazioni che il dispositivo è configurato correttamente, utilizza l'overlay di configurazione per eseguire l'override del 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 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 l'immagine, caricala 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 di batteria al quale il sistema disattiva il risparmio energetico se lo scheduler In base alla routine lo ha attivato. 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 consentire a un'app di attivare il risparmio energetico di routine sono protette dall'autorizzazione android.permission.POWER_SAVER. Si tratta di una firma o di un'autorizzazione privilegiata. 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 del 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é 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 lascia che controlli le API Basato su routine. Il comportamento della funzionalità non è supportato e non è specificato se più di un'app tenta di utilizzare l'autorizzazione e le API.

Attivare la routine Risparmio energetico

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

API

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

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 viene attivato. Specifica disableThreshold in modo che, se l'app non riesce a comunicare con il sistema, quest'ultimo conosca comunque la percentuale di batteria a cui è sicuro disattivare il risparmio energetico.

Questa API è soggetta agli override degli utenti e al rinvio del risparmio energetico nello stesso modo del risparmio energetico automatico basato sulla percentuale. Per saperne di più, consulta la documentazione dell'API.

Per verificare che le API vengano chiamate correttamente, esegui una query sulle impostazioni globali per confermare che il valore dell'impostazione di supporto sia cambiato in base alle chiamate API. Ad esempio, se selezioni la modalità 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 il comando adb:

adb shell settings get global <setting-name>

Verifica

Non esiste un modo automatizzato per verificare questa funzionalità perché l'OEM determina il comportamento che attiva la modalità Risparmio energetico In base alla routine. Gli OEM devono testare la propria integrazione per verificare che il comportamento soddisfi le aspettative. In particolare, verifica che il dispositivo possa eseguire le seguenti operazioni:

  • In base alla percentuale:se selezioni In base alla percentuale nell'interfaccia utente Pianificazione 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 Programmazione 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 ricarica fino al livello di soglia indicato e viene scollegato.
  • Nessuna:se selezioni Nessuna nell'interfaccia utente Pianificazione risparmio energetico, il risparmio energetico non si attiva mai automaticamente.
  • Override manuale:se l'app attiva il risparmio energetico e lo disattivi manualmente (utilizzando le Impostazioni rapide, le Impostazioni o altri metodi), rimane disattivato finché non lo riattivi manualmente o finché non colleghi il dispositivo.