Cihaz üreticileri, /frameworks/base/core/res/res/xml/power_profile.xml
içinde bir bileşen güç profili sağlamalıdır.
Güç profillerinin değerlerini belirlemek için cihaz tarafından kullanılan gücü ölçen ve bilgi gerektiren çeşitli işlemleri gerçekleştiren donanım kullanın. Bu işlemler sırasında güç kullanımını ölçün ve değerleri hesaplayın (uygun olduğunda diğer referans güç kullanımlarından farklılıkları çıkarın).
Güç profilinin amacı, pil tüketimini uygun şekilde tahmin etmek olduğundan güç profili değerleri akım (amper) cinsinden verilir. Android çerçevesi, akımı alt sistemin etkin olduğu süreyle çarpar ve mAh değerini hesaplar. Bu değer daha sonra uygulama veya alt sistem tarafından tüketilen pil miktarını tahmin etmek için kullanılır.
Android 7.0 ve sonraki sürümleri çalıştıran Bluetooth, modem ve kablosuz ağ denetleyicilerine sahip cihazlar, yonga seti verilerinden elde edilen ek güç değerleri sağlayabilir.
Çeşitli CPU'lara sahip cihazlar
Heterojen mimariye sahip CPU çekirdeklerine sahip cihazların güç profili aşağıdaki ek alanları içermelidir:
- Her küme için toplam CPU sayısı (cpu.clusters.cores olarak ifade edilir).
- Her küme tarafından desteklenen CPU hızları.
- Her küme için etkin CPU güç tüketimi.
Etkin CPU güç tüketimi ile kümeler için desteklenen CPU hızları arasında ayrım yapmak üzere küme numarasını dizinin adına ekleyin. Küme numaraları, çekirdek cihaz ağacındaki CPU çekirdeklerinin sırasına göre atanır. Örneğin, dört (4) çekirdekli iki (2) kümeye sahip heterojen bir mimaride:
- cluster0, cpu0-3'ten oluşur
- cluster1, cpu4-7'den oluşur
Android çerçevesi, /sys/devices/system/cpu/cpu<number>/cpufreq/stats
dosyalarındaki istatistikleri okurken bu CPU çekirdek numaralarını kullanır:
/sys/devices/system/cpu/cpu<number>/cpufreq/stats
.sysfs
Küme CPU'ları ve hızları örneği:
<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>
Güç değerleri
Aşağıdaki tabloda kullanılabilen güç değeri ayarları açıklanmaktadır. AOSP'teki örnek dosyayı görüntülemek için power_profile.xml dosyasını inceleyin.
Ad | Açıklama | Örnek değer | Notlar |
---|---|---|---|
ambient.on | Ekran kapalı değilse bekleme/ortam/her zaman açık modundayken kullanılan ek güç. | yaklaşık 100 mA | - |
screen.on | Ekran minimum parlaklıkta açıldığında kullanılan ek güç. | 200 mA | Dokunmatik kumanda ve ekran arka ışığı dahildir. Android'in minimum parlaklık ayarı olan %10 veya %20 yerine 0 parlaklık. |
screen.full | Ekran minimum parlaklıktayken ekran maksimum parlaklıktayken kullanılan ek güç. | 100 mA-300 mA | Ekranın güç tüketimini hesaplamak için bu değerin bir kısmı (ekran parlaklığına göre) screen.on değerine eklenir. |
wifi.on | Kablosuz bağlantı açıkken ancak sinyal almıyor, aktarmıyor veya taramıyordur. | 2 mA | - |
wifi.active | Kablosuz ağ üzerinden veri gönderirken veya alırken kullanılan ek güç. | 31 mA | - |
wifi.scan | Kablosuz ağ, erişim noktaları için tarama yaparken kullanılan ek güç. | 100 mA | - |
Ses | DSP aracılığıyla ses kod çözme/kodlama işlemi yapılırken kullanılan ek güç. | yaklaşık 10 mA | DSP sesi için kullanılır. |
video | DSP üzerinden video kod çözme işlemi yapılırken kullanılan ek güç. | yaklaşık 50 mA | DSP videosu için kullanılır. |
camera.avg | Tipik bir kamera uygulaması için kamera alt sisteminin ortalama güç kullanımı. | 600 mA | Önizleme çalıştıran ve dakikada yaklaşık 10 tam çözünürlüklü resim çeken bir uygulama için kaba bir tahmin olarak tasarlanmıştır. |
camera.flashlight | Açıkken kamera flaş modülü tarafından kullanılan ortalama güç. | 200 mA | - |
gps.signalqualitybased | Sinyal gücüne bağlı olarak GPS tarafından kullanılan ek güç. Bu, en zayıftan en güçlüye doğru sinyal gücü başına bir tane olmak üzere birden çok değer içeren bir giriştir. | 30 mA, 10 mA | - |
gps.on | GPS sinyal alırken kullanılan ek güç. | 50 mA | - |
radio.active | Hücresel radyo veri gönderirken/alırken kullanılan ek güç. | 100 mA-300 mA | - |
radio.scanning | Hücresel radyo baz istasyonuna çağrı gönderirken kullanılan ek güç. | 1,2 mA | - |
radio.on | Hücresel radyo açıkken kullanılan ek güç. Bu, sinyal gücü başına bir tane olmak üzere birden çok değer içeren bir giriştir (sinyal yok, zayıf, orta, güçlü). | 1,2 mA | Bazı radyolar, baz istasyonu aradığında ve sinyal algılamadığında gücü artırır. Değerler aynı kalabilir veya sinyal gücü arttıkça azalabilir. Yalnızca bir değer sağlarsanız tüm güçlü yönler için aynı değer kullanılır. İki değer sağlarsanız ilk değer sinyal yokluğu için, ikinci değer diğer tüm sinyal güçleri için kullanılır. |
bluetooth.controller.idle | Bluetooth denetleyicinin boştayken ortalama akım tüketimi (mA). | - | Bu değerler tahmini değil, denetleyicinin veri sayfasından alınmıştır. Birden fazla alma veya aktarım durumu varsa bu durumların ortalaması alınır. Ayrıca sistem artık Düşük Enerji (LE) ve Bluetooth taramaları ile ilgili verileri de topluyor. Android 7.0 ve sonraki sürümlerde bluetooth.active (Bluetooth A2DP üzerinden ses çalarken kullanılır) ve bluetooth.on (Bluetooth açık ancak boştayken kullanılır) için Bluetooth güç değerleri artık kullanılmıyor. |
bluetooth.controller.rx | Bluetooth denetleyicinin, veri alırken kullandığı ortalama akım (mA). | - | |
bluetooth.controller.tx | Bluetooth denetleyicinin veri aktarırken ortalama akım tüketimi (mA). | - | |
bluetooth.controller.voltage | Bluetooth denetleyicinin ortalama çalışma voltajı (mV). | - | |
modem.controller.sleep | Uyku modunda modem denetleyicisinin ortalama akım tüketimi (mA). | 0 mA | Bu değerler tahmini değil, denetleyicinin veri sayfasından alınmıştır. Birden fazla alma durumu varsa bu durumların ortalaması alınır. Birden fazla aktarım durumu varsa Android 9'dan itibaren her aktarım durumu için bir değer belirtme özelliği desteklenir. |
modem.controller.idle | Modem denetleyicisinin boştayken ortalama akım tüketimi (mA). | - | |
modem.controller.rx | Modem denetleyicisinin, veri alırken kullandığı ortalama akım (mA). | - | |
modem.controller.tx | Modem denetleyicisinin farklı RF güç seviyelerinde iletim yaparken ortalama akım tüketimi (mA). Bu, her iletim gücü seviyesi için bir değer içeren çok değerli bir giriştir. | 100 mA, 200 mA, 300 mA, 400 mA, 500 mA | |
modem.controller.voltage | Modem denetleyicisinin ortalama çalışma voltajı (mV). | - | |
wifi.controller.idle | Boştayken kablosuz ağ denetleyicisinin ortalama akım tüketimi (mA). | - | Bu değerler tahmini değil, denetleyicinin veri sayfasından alınmıştır. Birden fazla alma veya aktarım durumu varsa bu durumların ortalaması alınır. |
wifi.controller.rx | Alıcı modundayken kablosuz ağ denetleyicisinin ortalama akım tüketimi (mA). | - | |
wifi.controller.tx | Aktarım sırasında kablosuz kontrol cihazının ortalama akım tüketimi (mA). | - | |
wifi.controller.voltage | Wi-Fi denetleyicinin ortalama çalışma voltajı (mV). | - | |
cpu.speeds | Bu, olası her CPU hızını KHz cinsinden listeleyen çok değerli bir giriştir. | 125.000 KHz, 250.000 KHz, 500.000 KHz, 1.000.000 KHz, 1.500.000 KHz | Girişlerin sayısı ve sırası, cpu.active parametresindeki mA girişleriyle eşleşmelidir. |
cpu.idle | CPU'lar (ve SoC) sistem askıya alma durumundayken sistem tarafından çekilen toplam güç. | 3 mA | - |
cpu.awake | CPU'lar planlamada boş durumdayken (çekirdek boş döngüsü) kullanılan ek güç; sistem askıya alınmış durumda değildir. | 50 mA | Platformunuzda, farklı güç tüketimi seviyelerine sahip birden fazla boş durumda kalma durumu olabilir. Planlayıcının daha uzun süreler boyunca boş durumda kalması (birkaç milisaniye) için temsili bir boş durumda kalma durumu seçin. Ölçüm ekipmanınızdaki güç grafiğini inceleyin ve CPU'nun en düşük tüketimde olduğu örnekleri seçin. CPU'nun boşta çalışma durumundan çıktığı daha yüksek örnekleri çıkarın. |
cpu.active | CPU'ların farklı hızlarda çalışırken kullandığı ek güç. | 100 mA, 120 mA, 140 mA, 160 mA, 200 mA | Değer, CPU raylarının farklı hızlarda çalışırken kullandığı gücü temsil eder. Çekirdekteki maksimum hızı, izin verilen hızların her birine ayarlayın ve CPU'yu bu hıza sabitleyin. Girişlerin sayısı ve sırası, cpu.speeds parametresindeki girişlerin sayısına ve sırasına karşılık gelir. |
cpu.clusters.cores | Her CPU kümesinin içerdiği çekirdek sayısı. | 4, 2 | Yalnızca heterojen CPU mimarilerine sahip cihazlar için gereklidir. Giriş sayısı ve sırası, cpu.active ve cpu.speeds için küme girişi sayısıyla eşleşmelidir. İlk giriş, cluster0'daki CPU çekirdek sayısını, ikinci giriş ise cluster1'deki CPU çekirdek sayısını temsil eder. |
battery.capacity | mA/sa cinsinden toplam pil kapasitesi. | 3.000 mAh | - |
Düşük Enerji (LE) ve Bluetooth taramaları
Android 7.0 çalıştıran cihazlarda sistem, Düşük Enerji (LE) taramaları ve Bluetooth ağ trafiği (ör. RFCOMM ve L2CAP) ile ilgili verileri toplar ve bu etkinlikleri başlatan uygulamayla ilişkilendirir. Bluetooth taramaları, taramayı başlatan uygulamayla ilişkilendirilir ancak toplu taramalar ilişkilendirilmez (Bluetooth uygulamasıyla ilişkilendirilir). N milisaniye boyunca tarama yapan bir uygulama için taramanın maliyeti, N milisaniyelik alıcı süresi ve N milisaniyelik verici süresidir. Kalan tüm denetleyici süresi, ağ trafiğine veya Bluetooth uygulamasına atanır.