Cihaz üreticileri, /frameworks/base/core/res/res/xml/power_profile.xml
içinde bileşen güç profili sağlamalıdır.
Güç profillerinin değerlerini belirlemek için cihazın kullandığı gücü ölçen donanım kullanın ve bilgiye ihtiyaç duyulan çeşitli işlemleri gerçekleştirin. Bu işlemler sırasında güç kullanımını ölçün ve değerleri hesaplayın (diğer temel güç kullanımlarından uygun şekilde farklılıklar elde edin).
Güç profilinin amacı pil tüketimini uygun şekilde tahmin etmek olduğundan güç profili değerleri akım (amper) cinsinden verilir. Android çerçevesi, mevcut değeri alt sistemin etkin olduğu süreyle çarpar ve mAh değerini hesaplar. Bu değer daha sonra uygulama veya alt sistem tarafından boşaltılan 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 denetleyicilere sahip cihazlar, yonga seti verilerinden elde edilen ek güç değerleri sağlayabilir.
Heterojen CPU'lara sahip cihazlar
Heterojen mimaride CPU çekirdeklerine sahip cihazların güç profilinde aşağıdaki ek alanlar bulunmalıdır:
- Her kümenin 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.
Kümeler için etkin CPU güç tüketimi ile desteklenen CPU hızları arasında ayrım yapmak üzere dizi adına küme numarasını 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ümesi olan heterojen bir mimaride:
- cluster0, cpu0-3'ten oluşuyor
- cluster1, cpu4-7'den oluşuyor
Android çerçevesi, sysfs
dosyalarındaki istatistikleri okurken bu CPU çekirdek numaralarını kullanır:
/sys/devices/system/cpu/cpu<number>/cpufreq/stats
.
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'deki örnek dosyayı görüntülemek için power_profile.xml dosyasına bakın.
Ad | Açıklama | Örnek değer | Notlar |
---|---|---|---|
ambient.on | Ekran kapalı yerine uyku/ortam/her zaman açık modundayken daha fazla güç kullanılır. | yaklaşık 100 mA | - |
screen.on | Ekran minimum parlaklıkta açıkken kullanılan ek güç. | 200 mA | Dokunmatik kumanda ve ekran arka ışığı dahildir. Android'in minimum parlaklığı genellikle %10 veya %20 olsa da bu değer %0'dır. |
screen.full | Ekran maksimum parlaklıktayken kullanılan ek güç, ekran minimum parlaklıktayken kullanılan ek güçle karşılaştırılır. | 100 mA-300 mA | Ekranın güç kullanımını 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 veri almadığında, iletmediğinde veya taramadığında kullanılan ek güç. | 2 mA | - |
wifi.active | Kablosuz ağ üzerinden iletim veya alım yapılırken ek güç kullanılır. | 31 mA | - |
wifi.scan | Kablosuz bağlantı, erişim noktalarını tararken ek güç kullanılır. | 100 mA | - |
Ses | DSP üzerinden ses kod çözme/kodlama sırasında ek güç kullanılır. | yaklaşık 10 mA | DSP sesi için kullanılır. |
video | DSP üzerinden video kod çözme işlemi sırasında ek güç kullanılır. | 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 kabaca bir tahmin olarak tasarlanmıştır. |
camera.flashlight | Kamera flaş modülü açıkken kullanılan ortalama güç. | 200 mA | - |
gps.signalqualitybased | GPS tarafından kullanılan ek güç, sinyal gücüne bağlıdır. Bu, çok değerli bir giriştir. Sinyal gücü başına bir tane olmak üzere en zayıftan en güçlüye doğru sıralanır. | 30 mA, 10 mA | - |
gps.on | GPS sinyal alırken daha fazla güç kullanılır. | 50 mA | - |
radio.active | Hücresel radyo iletim/alma işlemi yaparken kullanılan ek güç. | 100 mA-300 mA | - |
radio.scanning | Hücresel radyo kuleye çağrı gönderdiğinde kullanılan ek güç. | 1,2 mA | - |
radio.on | Hücresel radyo açıkken kullanılan ek güç. Bu, çok değerli bir giriştir. Sinyal gücü başına bir giriş (sinyal yok, zayıf, orta, güçlü). | 1,2 mA | Bazı radyolar, baz istasyonu ararken ve sinyal algılamadığında gücü artırır. Değerler aynı olabilir veya sinyal gücü arttıkça azalabilir. Yalnızca bir değer sağlarsanız tüm güçler için aynı değer kullanılır. İki değer sağlarsanız ilki sinyal yok için, ikincisi ise diğer tüm güçler için kullanılır. |
bluetooth.controller.idle | Bluetooth denetleyicinin boşta kaldığında ortalama akım çekme değeri (mA). | - | Bu değerler tahmin edilmez, ancak denetleyicinin veri sayfasından alınır. Birden fazla alma veya iletme durumu varsa bu durumların ortalaması alınır. Ayrıca sistem artık düşük enerji (LE) ve Bluetooth taramaları için veri topluyor. Android 7.0 ve sonraki sürümlerde bluetooth.active (Bluetooth A2DP üzerinden ses çalarken kullanılır) ve bluetooth.on (Bluetooth açıkken ancak boşta olduğunda kullanılır) için Bluetooth güç değerleri kullanılmıyor. |
bluetooth.controller.rx | Alırken Bluetooth denetleyicisinin ortalama akım çekimi (mA). | - | |
bluetooth.controller.tx | Bluetooth denetleyicinin iletim sırasında ortalama akım çekimi (mA). | - | |
bluetooth.controller.voltage | Bluetooth denetleyicisinin ortalama çalışma voltajı (mV). | - | |
modem.controller.sleep | Modem denetleyicisinin uyku modundayken ortalama akım çekimi (mA). | 0 mA | Bu değerler tahmin edilmez, ancak denetleyicinin veri sayfasından alınır. Birden fazla alma durumu varsa bu durumların ortalaması alınır. Birden fazla iletim durumu varsa Android 9'dan itibaren her iletim durumu için bir değer belirtme desteklenir. |
modem.controller.idle | Modem denetleyicinin boşta kaldığında ortalama akım çekme değeri (mA). | - | |
modem.controller.rx | Alırken modem denetleyicisinin ortalama akım çekme değeri (mA). | - | |
modem.controller.tx | Farklı RF gücü seviyelerinde iletim yaparken modem denetleyicisinin ortalama akım çekimi (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 gerilimi (mV). | - | |
wifi.controller.idle | Boşta kaldığında Wi-Fi denetleyicisinin ortalama akım çekme değeri (mA). | - | Bu değerler tahmin edilmez, ancak denetleyicinin veri sayfasından alınır. Birden fazla alma veya iletme durumu varsa bu durumların ortalaması alınır. |
wifi.controller.rx | Alırken Wi-Fi denetleyicisinin ortalama akım çekme değeri (mA). | - | |
wifi.controller.tx | Veri iletirken Wi-Fi denetleyicisinin ortalama akım çekme değeri (mA). | - | |
wifi.controller.voltage | Kablosuz denetleyicinin ortalama çalışma gerilimi (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 içindeki mA girişleriyle eşleşmelidir. |
cpu.idle | CPU'lar (ve SoC) sistem askıya alma durumundayken sistemin çektiği toplam güç. | 3 mA | - |
cpu.awake | CPU'lar planlama boşta durumundayken (çekirdek boşta döngüsü) ek güç kullanılır. Sistem, sistem askıya alma durumunda değildir. | 50 mA | Platformunuzda farklı güç tüketimi seviyeleriyle kullanılan birden fazla boşta kalma durumu olabilir. Zamanlayıcının daha uzun süre boşta kaldığı (birkaç milisaniye) temsili bir boşta 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 kalma modundan çıktığı daha yüksek örnekleri ise atın. |
cpu.active | CPU'lar farklı hızlarda çalışırken kullanılan ek güç. | 100 mA, 120 mA, 140 mA, 160 mA, 200 mA | Değer, farklı hızlarda çalışırken CPU rayları tarafından kullanılan gücü gösterir. Çekirdekteki maksimum hızı izin verilen hızların her birine ayarlayın ve CPU'yu bu hızda sabitleyin. Girişlerin sayısı ve sırası, cpu.speeds dosyasındaki girişlerin sayısı ve sırasıyla aynıdır. |
cpu.clusters.cores | Her CPU kümesinin içerdiği çekirdek sayısı. | 4, 2 | Yalnızca heterojen CPU mimarisine sahip cihazlar için gereklidir. Giriş sayısı ve sırası, cpu.active ve cpu.speeds için küme girişlerinin sayısıyla eşleşmelidir. İlk giriş, cluster0'daki CPU çekirdeklerinin sayısını, ikinci giriş ise cluster1'deki CPU çekirdeklerinin sayısını gösterir. |
battery.capacity | Toplam pil kapasitesi (mAh). | 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) için veri toplar ve bu etkinlikleri başlatan uygulamayla ilişkilendirir. Bluetooth taramaları, taramayı başlatan uygulamayla ilişkilendirilir ancak toplu taramalar ilişkilendirilmez (bunun yerine Bluetooth uygulamasıyla ilişkilendirilir). N milisaniye boyunca tarama yapan bir uygulama için tarama maliyeti N milisaniye rx süresi ve N milisaniye tx süresidir. Kalan tüm denetleyici süresi ağ trafiğine veya Bluetooth uygulamasına atanır.