Gerätehersteller müssen ein Komponentenenergieprofil in /frameworks/base/core/res/res/xml/power_profile.xml
angeben.
Verwenden Sie zum Ermitteln von Werten für Energieprofile Hardware, die den vom Gerät verbrauchten Strom misst, und führen Sie die verschiedenen Vorgänge aus, für die Informationen erforderlich sind. Messen Sie den Stromverbrauch während dieser Vorgänge und berechnen Sie die Werte. Berücksichtigen Sie dabei gegebenenfalls Unterschiede zu anderen Baseline-Stromverbrauchswerten.
Da das Ziel eines Energieprofils darin besteht, den Akkuverbrauch angemessen zu schätzen, werden die Werte des Energieprofils in Ampere angegeben. Das Android-Framework multipliziert den Strom mit der Zeit, in der das Subsystem aktiv war, und berechnet den mAh-Wert. Dieser Wert wird dann verwendet, um die Akkuentladung durch die App oder das Subsystem zu schätzen.
Geräte mit Bluetooth-, Modem- und WLAN-Controllern mit Android 7.0 und höher können zusätzliche Leistungswerte aus Chipsatzdaten liefern.
Geräte mit heterogenen CPUs
Das Energieprofil für Geräte mit CPU-Kernen mit heterogener Architektur muss die folgenden zusätzlichen Felder enthalten:
- Gesamtzahl der CPUs für jeden Cluster (ausgedrückt in cpu.clusters.cores).
- Von jedem Cluster unterstützte CPU-Geschwindigkeiten.
- Aktiver CPU-Stromverbrauch für jeden Cluster.
Hängen Sie die Clusternummer an den Namen des Arrays an, um zwischen der aktiven CPU-Nutzung und der unterstützten CPU-Geschwindigkeit für Cluster zu unterscheiden. Clusternummern werden in der Reihenfolge der CPU-Kerne im Kernel-Gerätebaum zugewiesen. Beispiel in einer heterogenen Architektur mit zwei (2) Clustern mit vier (4) Kernen:
- cluster0 besteht aus cpu0–3
- "cluster1" besteht aus "cpu4-7"
Das Android-Framework verwendet diese CPU-Kernzahlen, wenn es Statistiken aus den sysfs
-Dateien in /sys/devices/system/cpu/cpu<number>/cpufreq/stats
liest.
Beispiel für Cluster-CPUs und -Geschwindigkeiten:
<array name="cpu.active.cluster0"> <value>200</value> <value>300</value> <value>400</value> </array> <array name="cpu.speeds.cluster0"> <value>600000</value> <value>800000</value> <value>1200000</value> </array> <array name="cpu.active.cluster1"> <value>400</value> <value>500</value> <value>600</value> </array> <array name="cpu.speeds.cluster1"> <value>800000</value> <value>1200000</value> <value>1400000</value> </array>
Leistungswerte
In der folgenden Tabelle werden die verfügbaren Einstellungen für den Leistungswert beschrieben. Informationen zur Beispieldatei in AOSP finden Sie unter power_profile.xml.
Name | Beschreibung | Beispielwert | Hinweise |
---|---|---|---|
Ambient.on | Zusätzlicher Stromverbrauch, wenn das Display im Ruhemodus/Inaktivmodus/immer an-Modus statt ausgeschaltet ist. | ca. 100 mA | - |
screen.on | Zusätzlicher Stromverbrauch, wenn das Display mit minimaler Helligkeit eingeschaltet ist. | 200 mA | Enthält Touch-Controller und Display-Hintergrundbeleuchtung. Bei einer Helligkeit von 0 %, nicht dem Android-Mindestwert von 10 oder 20 %. |
Bildschirm.full | Zusätzlicher Stromverbrauch bei maximaler Bildschirmhelligkeit im Vergleich zur minimalen Bildschirmhelligkeit. | 100 mA bis 300 mA | Ein Bruchteil dieses Werts (basierend auf der Bildschirmhelligkeit) wird dem Wert „screen.on“ hinzugefügt, um den Stromverbrauch des Bildschirms zu berechnen. |
wifi.on | Zusätzlicher Stromverbrauch, wenn das WLAN aktiviert ist, aber nicht empfängt, sendet oder scannt. | 2 mA | - |
wifi.active | Zusätzliche Energie, die beim Senden oder Empfangen über WLAN verbraucht wird. | 31 mA | - |
wifi.scan | Zusätzlicher Stromverbrauch, wenn das WLAN nach Zugangspunkten sucht. | 100 mA | - |
Audio | Zusätzliche Leistung, die beim Dekodieren/Codieren von Audio über den DSP verbraucht wird. | etwa 10 mA | Wird für DSP-Audio verwendet. |
Video | Zusätzliche Leistung bei der Videodecodierung über DSP. | ca. 50 mA | Wird für DSP-Videos verwendet. |
camera.avg | Durchschnittlicher Stromverbrauch des Kamera-Subsystems für eine typische Kamera-App. | 600 mA | Dies ist eine grobe Schätzung für eine App, die eine Vorschau anzeigt und etwa 10 Bilder in voller Auflösung pro Minute aufnimmt. |
camera.flashlight | Durchschnittliche Leistung, die das Blitzmodul der Kamera im eingeschalteten Zustand verbraucht. | 200 mA | - |
gps.signalqualitybased | Zusätzliche Energie, die vom GPS abhängig von der Signalstärke verbraucht wird. Dies ist ein Eintrag mit mehreren Werten, jeweils einer pro Signalstärke, vom schwächsten bis zum stärksten. | 30 mA, 10 mA | - |
gps.on | Zusätzlicher Stromverbrauch, wenn GPS ein Signal empfängt. | 50 mA | - |
radio.active | Zusätzliche Energie, die beim Senden/Empfangen von Mobilfunk verwendet wird. | 100 mA bis 300 mA | - |
radio.scanning | Zusätzliche Energie, die verbraucht wird, wenn das Mobilfunkradio den Turm anruft. | 1,2 mA | - |
Radio.on | Zusätzlicher Stromverbrauch bei aktivierter Mobilfunkverbindung. Dies ist ein Mehrfachwert-Eintrag, einer pro Signalstärke (kein Signal, schwach, mittel, stark). | 1,2 mA | Einige Funkschnittstellen erhöhen die Leistung, wenn sie nach einem Mobilfunkmasten suchen und kein Signal erkennen. Die Werte können gleich bleiben oder mit zunehmender Signalstärke sinken. Wenn Sie nur einen Wert angeben, wird dieser für alle Stärken verwendet. Wenn Sie zwei Werte angeben, wird der erste für kein Signal, der zweite für alle anderen Stärken usw. verwendet. |
Bluetooth.controller.idle | Durchschnittlicher Stromverbrauch (mA) des Bluetooth-Controllers im Ruhemodus. | - | Diese Werte werden nicht geschätzt, sondern dem Datenblatt des Controllers entnommen. Wenn es mehrere Empfangs- oder Übertragungszustände gibt, wird der Durchschnitt dieser Status verwendet. Außerdem erhebt das System jetzt Daten für Low Energy (LE) und Bluetooth-Scans. Unter Android 7.0 und höher werden die Bluetooth-Nutzungsdaten für „bluetooth.active“ (wird beim Abspielen von Audio über Bluetooth A2DP verwendet) und „bluetooth.on“ (wird verwendet, wenn Bluetooth aktiviert, aber inaktiv ist) nicht mehr verwendet. |
bluetooth.controller.rx | Durchschnittlicher Stromverbrauch (mA) des Bluetooth-Controllers beim Empfang. | - | |
Bluetooth.controller.tx | Durchschnittliche Stromaufnahme (mA) des Bluetooth-Controllers bei der Übertragung. | - | |
bluetooth.controller.voltage | Durchschnittliche Betriebsspannung (mV) des Bluetooth-Controllers. | - | |
modem.controller.sleep | Durchschnittlicher Stromverbrauch (mA) des Modem-Controllers im Ruhemodus. | 0 mA | Diese Werte sind keine Schätzungen, sondern stammen aus dem Datenblatt des Controllers. Wenn es mehrere Empfangsstatus gibt, wird der Durchschnitt dieser Status ermittelt. Wenn es mehrere Übertragungsstatus gibt, wird ab Android 9 die Angabe eines Werts für jeden Übertragungsstatus unterstützt. |
modem.controller.idle | Durchschnittliche Stromaufnahme (mA) des Modem-Controllers bei Inaktivität. | - | |
modem.controller.rx | Durchschnittlicher Stromverbrauch (mA) des Modem-Controllers beim Empfang. | - | |
modem.controller.tx | Durchschnittliche Stromaufnahme (mA) des Modem-Controllers bei der Übertragung mit unterschiedlichen Funksignalstärken. Dies ist ein Eintrag mit mehreren Werten und einem Wert pro Sendeleistung. | 100 mA, 200 mA, 300 mA, 400 mA, 500 mA | |
modem.controller.voltage | Durchschnittliche Betriebsspannung (mV) des Modem-Controllers. | - | |
wifi.controller.idle | Durchschnittlicher Stromverbrauch (mA) des WLAN-Controllers im Ruhemodus. | - | Diese Werte sind keine Schätzungen, sondern stammen aus dem Datenblatt des Controllers. Wenn mehrere Empfangs- oder Übertragungsstatus vorliegen, wird der Durchschnitt dieser Status ermittelt. |
wifi.controller.rx | Durchschnittlicher Stromverbrauch (mA) des WLAN-Controllers beim Empfang. | - | |
wifi.controller.tx | Durchschnittlicher Stromverbrauch (mA) des WLAN-Controllers bei der Übertragung. | - | |
wifi.controller.voltage | Durchschnittliche Betriebsspannung (mV) des WLAN-Controllers. | - | |
cpu.speeds | Dies ist ein Mehrfachwert-Eintrag, in dem alle möglichen CPU-Geschwindigkeiten in KHz aufgeführt sind. | 125.000 kHz, 250.000 kHz, 500.000 kHz, 1000.000 kHz, 1500.000 kHz | Die Anzahl und Reihenfolge der Einträge müssen den mA-Einträgen in "cpu.active" entsprechen. |
cpu.idle | Die vom System insgesamt verbrauchte Leistung, wenn sich die CPUs (und das SoC) im Ruhemodus befinden. | 3 mA | - |
cpu.awake | Zusätzliche Energie, die verbraucht wird, wenn die CPUs sich im Planungs-Ruhemodus (Kernel-Ruheschleife) befinden und das System nicht im Ruhemodus ist. | 50 mA | Ihre Plattform kann mehr als einen Inaktivitätsstatus mit unterschiedlichem Stromverbrauch haben. Wählen Sie einen repräsentativen Inaktivitätsstatus für längere Inaktivität des Planers (mehrere Millisekunden). Sehen Sie sich das Leistungsdiagramm auf Ihrem Messgerät an und wählen Sie Stichproben aus, bei denen die CPU den niedrigsten Verbrauch erreicht hat. Größere Stichproben werden verworfen, bei denen die CPU nicht mehr aktiv war. |
cpu.active | Zusätzliche Leistung, die von CPUs bei unterschiedlichen Geschwindigkeiten verbraucht wird. | 100 mA, 120 mA, 140 mA, 160 mA, 200 mA | Der Wert gibt die von den CPU-Leitungen bei verschiedenen Geschwindigkeiten verbrauchten Watt an. Legen Sie die maximale Geschwindigkeit im Kernel auf jede der zulässigen Geschwindigkeiten fest und legen Sie die CPU auf diese Geschwindigkeit fest. Die Anzahl und Reihenfolge der Einträge entsprechen der Anzahl und Reihenfolge der Einträge in „cpu.speeds“. |
cpu.clusters.cores | Die Anzahl der Kerne in jedem CPU-Cluster. | 4, 2 | Nur für Geräte mit heterogenen CPU-Architekturen erforderlich. Die Anzahl der Einträge und die Reihenfolge sollten mit der Anzahl der Clustereinträge für „cpu.active“ und „cpu.speeds“ übereinstimmen. Der erste Eintrag steht für die Anzahl der CPU-Kerne in cluster0, der zweite Eintrag für die Anzahl der CPU-Kerne in cluster1 usw. |
Akku.Kapazität | Gesamtakkukapazität in mAh. | 3.000 mAh | - |
Low Energy (LE) und Bluetooth-Scans
Auf Geräten mit Android 7.0 erfasst das System Daten für LE-Scans (Low Energy) und Bluetooth-Netzwerkverkehr (z. B. RFCOMM und L2CAP) und verknüpft diese Aktivitäten mit der App, die den Scan initiiert hat. Bluetooth-Scans werden mit der App verknüpft, die den Scan initiiert hat, Batch-Scans jedoch nicht (sie werden stattdessen mit der Bluetooth-App verknüpft). Wenn eine Anwendung N Millisekunden lang scannt, betragen die Kosten für den Scan N Millisekunden der rx-Zeit und N Millisekunden der TX-Zeit. Die gesamte verbleibende Controllerzeit wird dem Netzwerkverkehr oder der Bluetooth-App zugewiesen.