Profili di alimentazione per Android

Le informazioni sull'utilizzo della batteria vengono ricavate dalle statistiche sull'utilizzo della batteria e dai valori del profilo di alimentazione.

Statistiche sull'utilizzo della batteria

Il framework determina automaticamente le statistiche sull'utilizzo della batteria monitorando il tempo trascorso dai componenti del dispositivo in stati diversi. Quando i componenti (chipset Wi-Fi, radio cellulare, Bluetooth, GPS, display, CPU) cambiano stato (OFF/ON, inattivo/a piena potenza, luminosità bassa/alta e così via), il servizio di controllo genera report per il servizio BatteryStats del framework. BatteryStats raccoglie le informazioni nel tempo e le memorizza per l'utilizzo dopo i riavvii. Il servizio non monitora direttamente l'assorbimento di corrente della batteria, ma raccoglie informazioni sui tempi che possono essere utilizzate per approssimare il consumo della batteria da parte di diversi componenti.

Il framework raccoglie le statistiche utilizzando i seguenti metodi:

  • Push. I servizi a conoscenza delle modifiche ai componenti inviano le modifiche dello stato al servizio BatteryStats.
  • Pull. Per componenti come l'utilizzo della CPU da parte delle app, il framework estrae automaticamente i dati nei punti di transizione (ad esempio l'avvio o l'arresto di un'attività) per acquisire uno snapshot.

Il consumo di risorse è associato all'applicazione che utilizza la risorsa. Quando più applicazioni utilizzano contemporaneamente una risorsa (ad esempio i wakelock che impediscono la sospensione del sistema), il framework distribuisce il consumo tra queste applicazioni, anche se non necessariamente in modo uniforme.

Per evitare di perdere le statistiche di utilizzo per un evento di arresto, che potrebbe indicare problemi di consumo della batteria (ad es. l'arresto si verifica perché la batteria ha raggiunto la capacità rimanente pari a zero), il framework mostra le statistiche circa ogni 30 minuti.

Le statistiche sull'utilizzo della batteria vengono gestite interamente dal framework e non richiedono modifiche da parte dell'OEM.

Valori del profilo di potenza

Attenzione: i produttori di dispositivi devono fornire un profilo di potenza del componente che definisce il valore corrente del consumo del componente e il consumo approssimativo della batteria causato dal componente nel tempo. Questo profilo è definito in platform/frameworks/base/core/res/res/xml/power_profile.xml. Per indicazioni su queste impostazioni, vedi Valori di potenza.

All'interno di un profilo di alimentazione, il consumo energetico è specificato in milliampere (mA) di corrente assorbita a una tensione nominale e può essere un valore frazionario specificato in microampere (uA). Il valore deve essere il valore in milliampere consumato dalla batteria e non un valore applicabile a una linea di alimentazione che non corrisponde alla corrente consumata dalla batteria.

Ad esempio, un profilo di alimentazione del display specifica la corrente in milliampere necessaria per mantenere il display acceso con luminosità minima e massima. Per determinare il costo dell'alimentazione (ovvero la batteria assorbita dal componente del display) per mantenere il display acceso, il framework monitora il tempo trascorso a ciascun livello di luminosità, quindi moltiplica questi intervalli di tempo per un costo di luminosità del display interpolato.

Il framework moltiplica anche il tempo della CPU per ogni applicazione per gli mA richiesti per eseguire la CPU a una velocità specifica. Questo calcolo stabilisce un ranking comparativo della quantità di batteria consumata da un'applicazione mediante l'esecuzione di codice CPU (il tempo come app in primo piano e il tempo totale, inclusa l'attività in background, vengono registrati separatamente).