Producenci urządzeń muszą podać profil zasilania komponentu w
/frameworks/base/core/res/res/xml/power_profile.xml
Aby określić wartości profili zasilania, użyj sprzętu, który mierzy moc wykorzystywaną przez urządzenie, i wykonuj różne operacje, do których potrzebne są informacje. Zmierz zużycie energii podczas tych operacji i oblicz wartości (odpowiednio oblicz różnice w porównaniu z innymi wartościami bazowymi zużycia energii).
Celem profilu zasilania jest odpowiednie oszacowanie zużycia baterii, dlatego wartości profilu zasilania są podawane w amperach. Struktura Androida mnoży bieżącą wartość przez czas, w którym podsystem był aktywny oraz oblicza wartość w mAh, która jest następnie używana do szacowania poziomu naładowania baterii które nie są usuwane przez aplikację lub podsystem.
Urządzenia z kontrolerami Bluetooth, modemu i Wi-Fi z Androidem 7.0 lub nowszym mogą dostarczać dodatkowe wartości mocy uzyskane na podstawie danych z chipsetu.
Urządzenia z procesorami heterogenicznymi
Profil zasilania dla urządzeń z rdzeniami procesora o różnej architekturze musi zawierać te dodatkowe pola:
- Łączna liczba procesorów dla każdego klastra (wyrażona w cpu.clusters.cores).
- Szybkość procesora obsługiwana przez każdy klaster.
- Aktywny pobór mocy procesora w przypadku każdego klastra.
Aby odróżnić zużycie energii przez aktywny procesor od obsługiwanego procesora dla klastrów, do nazwy tablicy dołącz numer klastra. Numery klastrów są przypisywane według kolejności rdzeni procesora w drzewie urządzenia jądra. Na przykład w przypadku heterogenicznej architektury z 2 klastrami z 4 rdzeniami:
- klaster0 składa się z procesorów 3
- klaster1 składa się z procesorów 4-7
Framework Androida używa tych numerów rdzeni procesora podczas odczytu statystyk z plików sysfs
w folderze /sys/devices/system/cpu/cpu<number>/cpufreq/stats
.
Przykład procesorów i szybkości klastra:
<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>
Wartości mocy
W tabeli poniżej znajdziesz dostępne ustawienia wartości mocy. Aby wyświetlić przykładowy plik w AOSP, zobacz power_profile.xml.
Nazwa | Opis | Przykładowa wartość | Uwagi |
---|---|---|---|
ambient.on | Dodatkowa energia zużywana, gdy ekran jest w trybie oszczędzania baterii/trybu otoczenia/trybu zawsze aktywnego zamiast trybu wyłączonego. | ok. 100 mA | - |
Screen.on | Dodatkowa ilość energii zużywana, gdy ekran jest włączony z minimalną jasnością. | 200 mA | Obejmuje kontroler dotykowy i podświetlenie wyświetlacza. przy zerowej jasności, a nie minimalnej wartości w Androidzie, która wynosi zwykle 10–20%. |
screen.full | Dodatkowe zużycie energii przy maksymalnej jasności ekranu w porównaniu z przy minimalnej jasności ekranu. | 100 mA–300 mA | Ułamek tej wartości (na podstawie jasności ekranu) jest dodawany do wartości screen.on w celu obliczenia zużycia energii przez ekran. |
wifi.on | Dodatkowa energia zużywana, gdy Wi-Fi jest włączone, ale nie odbiera, nie transmituje ani nie skanuje. | 2 mA | - |
wifi.aktywne | Dodatkowa moc używana podczas przesyłania lub odbierania danych przez Wi-Fi. | 31 mA | - |
wifi.scan | Dodatkowa energia zużywana podczas skanowania przez Wi-Fi punktów dostępu. | 100 mA | - |
ścieżkom audio | Dodatkowa moc zużywana przy dekodowaniu/kodowaniu dźwięku przez DSP. | ok. 10 mA | Służy do dźwięku z usług DSP. |
film | Dodatkowa moc zużywana przy dekodowaniu wideo przez DSP. | ok. 50 mA | Służy do obsługi wideo na procesorach DSP. |
camera.avg | Średnie zużycie energii przez podsystem aparatu w typowej aplikacji do obsługi aparatu. | 600 mA | Jest to przybliżony szacunek dla aplikacji, która wyświetla podgląd i robi około 10 zdjęć w pełnej rozdzielczości na minutę. |
aparat.latarka | Średnie zużycie energii przez moduł lampy błyskowej aparatu. | 200 mA | - |
gps.signalqualitybased | Dodatkowa moc używana przez GPS w zależności od siły sygnału. Jest to wpis z wieloma wartościami, po jednym na siłę sygnału, od najsłabszego do najsilniejszego. | 30 mA, 10 mA | - |
GPS.on | Dodatkowa energia zużywana podczas ustalania sygnału przez GPS. | 50 mA | - |
radio.active | Dodatkowa moc używana podczas nadawania/odbierania przez radio komórkowe. | 100 mA-300 mA | - |
radio.scanning | Dodatkowa moc używana, gdy radio komórkowe wysyła sygnał do wieży. | 1,2 mA | - |
radio.on | Dodatkowe zużycie energii, gdy radio komórkowe jest włączone. Jest to wpis z wieloma wartościami, po jednym na siłę sygnału (brak sygnału, słaby, umiarkowany, silny). | 1,2 mA | Niektóre radia zwiększają moc, gdy szukają stacji bazowej, a nie wykrywają sygnał. Wartości mogą być takie same lub maleć wraz ze wzrostem siły sygnału. Jeśli podasz tylko jedną wartość, zostanie ona użyta we wszystkich mocne strony. Jeśli podasz 2 wartości, pierwsza będzie używana w przypadku braku sygnału, druga – we wszystkich pozostałych przypadkach i tak dalej. |
bluetooth.controller.idle | Średnie pobór prądu (mA) przez kontroler Bluetooth podczas bezczynności. | - | Te wartości nie są szacowane, ale pochodzą z arkusza danych kontrolera. Jeśli występuje kilka stanów odbioru lub nadawania, obliczany jest średni stan. System zbiera teraz też dane o skanowaniu Bluetooth Low Energy (LE) i Bluetooth. Android 7.0 i nowsze nie używają już wartości mocy Bluetooth dla bluetooth.active (używanego podczas odtwarzania dźwięku przez Bluetooth A2DP) i bluetooth.on (używanego, gdy Bluetooth jest włączony, ale nieaktywny). |
bluetooth.controller.rx, | Średnie pobieranie prądu (mA) przez kontroler Bluetooth podczas odbierania. | - | |
bluetooth.controller.tx, | Średnie pobieranie prądu (mA) przez kontroler Bluetooth podczas transmisji. | - | |
bluetooth.kontroler.napięcie | Średnie napięcie robocze (mV) kontrolera Bluetooth. | - | |
modem.controller.sleep | Średnie pobór prądu (mA) przez kontroler modemu w trybie uśpienia. | 0 mA | Wartości te nie są szacunkowe, ale pochodzą z arkusza danych kontrolera. Jeśli istnieje wiele stanów odbierania, używana jest średnia z tych stanów. Jeśli jest obsługiwane wiele stanów przesyłania, przy czym można określić wartość dla każdego stanu przesyłania od Androida 9. |
modem.kontroler.nieaktywny | Średnie pobór prądu (mA) kontrolera modemu w czasie bezczynności. | - | |
modem.controller.rx | Średnie pobór prądu (mA) przez kontroler modemu podczas odbierania. | - | |
modem.controller.tx | Średnie pobieranie prądu (mA) przez kontroler modemu podczas transmisji przy różnych poziomach mocy RF. Jest to wpis z wieloma wartościami, z jedną wartością na każdy poziom mocy transmisji. | 100 mA, 200 mA, 300 mA, 400 mA, 500 mA | |
modem.kontroler.napięcie | Średnie napięcie robocze (mV) kontrolera modemu. | - | |
wifi.kontroler.nieaktywny | Średnie pobór prądu (mA) kontrolera Wi-Fi podczas bezczynności. | - | Te wartości nie są szacunkowe, ale pochodzą z arkusza danych na kontroler. Jeśli występuje kilka stanów odbioru lub nadawania, obliczany jest średni stan. |
wifi.controller.rx | Średnie pobór prądu (mA) przez kontroler Wi-Fi podczas odbierania. | - | |
wifi.controller.tx | Średnie pobór prądu (mA) przez kontroler Wi-Fi podczas transmisji. | - | |
wifi.controller.voltage | Średnie napięcie robocze (mV) kontrolera Wi-Fi. | - | |
cpu.speeds | Jest to wpis z wieloma wartościami, który zawiera listę wszystkich możliwych szybkości procesora w kHz. | 125 000 kHz, 250 000 kHz, 500 000 kHz, 10 000 000 kHz, 150 000 kHz | Liczba i kolejność wpisów musi być zgodna z wpisami mA w cpu.active. |
cpu.idle | Łączna moc pobierana przez system, gdy znajdują się w nim procesory (i układ SOC) w stanie zawieszenia. | 3 mA | - |
CPU.awake | Dodatkowa moc używana, gdy procesory są w stanie bezczynności (pętla bezczynności jądra); system nie jest w stanie zawieszenia. | 50 mA | Na platformie może być używane więcej niż 1 stan bezczynności z różnymi poziomami poboru mocy. Wybierz reprezentatywny stan bezczynności na dłuższe okresy bezczynności harmonogramu (kilka milisekund). Sprawdź wykres mocy na swojego sprzętu pomiarowego i wybrać próbki, w których procesor ma najniższy poziom zużywanie danych, odrzucając wyższe próbki, w przypadku których procesor był nieaktywny. |
cpu.active | Dodatkowa moc używana przez procesory podczas działania z różnymi prędkościami. | 100 mA, 120 mA, 140 mA, 160 mA, 200 mA | Wartość reprezentuje moc używaną przez szyny procesora przy pracy o różnych wartościach Szybkość działania. Ustaw maksymalną prędkość w rdzeniu dla każdej z dozwolonych prędkości i przypisz procesorowi tę prędkość. Liczba i kolejność wpisów odpowiadają liczbie i kolejności wpisów w cpu.speeds. |
cpu.clusters.cores | Liczba rdzeni w każdym klastrze procesora. | 4, 2 | Wymagane tylko w przypadku urządzeń z procesorem heterogenicznym . Liczba wpisów i kolejność powinny być takie same jak liczba wpisy klastra dotyczące cpu.active i cpu.speeds. Pierwszy wpis przedstawia liczbę rdzeni procesora w klastrze cluster0, drugi wpis reprezentuje liczbę Liczba rdzeni procesora w klastrze 1 itd. |
bateria.pojemność | Łączna pojemność baterii w mAh. | 3000 mAh | - |
Skanowanie Bluetooth Low Energy (LE) i Bluetooth
W przypadku urządzeń z Androidem 7.0 system gromadzi dane dla funkcji Low Energy (LE) skanowanie i ruch sieciowy Bluetooth (np. RFCOMM i L2CAP) oraz powiązania te działania przy użyciu aplikacji, która ją zainicjowała. Powiązane są skanowania Bluetooth z aplikacją, która zainicjowała skanowanie, ale skanowanie wsadowe nie jest są powiązane z aplikacją Bluetooth). W przypadku aplikacji skanującej przez N milisekund koszt skanowania to N milisekund czasu odbioru i N milisekund czasu nadawania. Pozostały czas pracy kontrolera jest przypisany do ruchu sieciowego lub aplikacji Bluetooth.