Risparmio energetico delle 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 forniscono segnali al sistema per una pianificazione più intelligente del risparmio energetico. Questa opzione richiede la configurazione ed è facoltativa per l'implementazione.

Configurazione dispositivo

Specifiche del provider

Per comunicare all'UI Impostazioni che il dispositivo è configurato correttamente, utilizza di configurazione dell'overlay per sostituire il valore config_batterySaverScheduleProvider con il nome del pacchetto dell'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 sullo smartphone dovrebbe essere visualizzata l'opzione In base alla routine. Per eseguire la verifica, crea un eseguire il flashing dell'immagine su un telefono e selezionare Impostazioni > Batteria > Batteria risparmio > Programmazione del 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 all'app per attivare il risparmio energetico dall'app sono protette con l'autorizzazione android.permission.POWER_SAVER. Si tratta di un'autorizzazione con firma/privilegiata, quindi concedi all'app che vuoi che possa attivare il risparmio batteria questa autorizzazione nel tuo privapp-whitelist.

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 alle sostituzioni dell'utente e alla sospensione del risparmio energetico come accade per il risparmio energetico automatico basato su percentuale. Consulta le Documentazione dell'API per ulteriori informazioni.

Per verificare che le API siano state chiamate correttamente, esegui la query su Impostazioni globali il valore dell'impostazione di supporto è stato modificato 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 metodo automatico per verificare questa funzionalità perché non è possibile saperlo quale comportamento userà un OEM per decidere quando attivare il 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 possono eseguire le seguenti attività:

  • L'utente seleziona in base alla percentuale nell'interfaccia utente di pianificazione del risparmio energetico e seleziona 15%. Il risparmio energetico dovrebbe attivarsi automaticamente SOLO quando raggiungendo il 15% di batteria.
  • L'utente seleziona in base alla routine nell'interfaccia utente della programmazione del risparmio energetico. Quando l'app chiama l'API con true e si attiva il risparmio energetico. Inoltre, il risparmio energetico si disattiva automaticamente se il dispositivo è carico di soglia indicato e scollegato.
  • L'utente seleziona nessuno nell'interfaccia utente della pianificazione del risparmio energetico. Risparmio energetico non si accende MAI 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 dispositivo.