Produsen perangkat harus menyediakan
profil daya komponen di
/frameworks/base/core/res/res/xml/power_profile.xml
.
Untuk menentukan nilai profil daya, gunakan hardware yang mengukur daya yang digunakan oleh perangkat dan melakukan berbagai operasi yang informasi tertentu diperlukan. Ukur penggunaan daya selama operasi tersebut dan hitung nilai (memperoleh perbedaan dari penggunaan kekuatan dasar lainnya yang sesuai).
Karena tujuan profil daya adalah memperkirakan pengurasan baterai dengan tepat, nilai profil daya diberikan dalam arus (amp). Framework Android mengalikan arus dengan waktu saat subsistem aktif dan menghitung nilai mAh, yang kemudian digunakan untuk memperkirakan jumlah baterai oleh aplikasi atau subsistem.
Perangkat dengan pengontrol Bluetooth, modem, dan Wi-Fi yang menjalankan Android 7.0 dan lebih tinggi dapat memberikan nilai daya tambahan yang diperoleh dari data {i>chipset<i}.
Perangkat dengan CPU yang heterogen
Profil daya untuk perangkat dengan inti CPU berarsitektur heterogen harus menyertakan kolom tambahan berikut:
- Jumlah total CPU untuk setiap cluster (dinyatakan dalam cpu.clusters.cores).
- Kecepatan CPU yang didukung oleh setiap cluster.
- Konsumsi daya CPU aktif untuk setiap cluster.
Untuk membedakan antara konsumsi daya CPU aktif dan CPU yang didukung untuk cluster, tambahkan nomor cluster ke nama array. Gugus nomor ditetapkan sesuai urutan inti CPU di hierarki perangkat {i>kernel<i}. Sebagai pada arsitektur heterogen yang memiliki dua (2) klaster dengan empat (4) inti:
- cluster0 terdiri dari cpu0-3
- cluster1 terdiri dari cpu4-7
Framework Android menggunakan nomor inti CPU ini saat membaca statistik
dari file sysfs
dalam:
/sys/devices/system/cpu/cpu<number>/cpufreq/stats
.
Contoh kecepatan dan CPU cluster:
<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>
Nilai daya
Tabel berikut menjelaskan setelan nilai daya yang tersedia. Untuk melihat dalam AOSP, lihat power_profile.xml.
Nama | Deskripsi | Nilai contoh | Catatan |
---|---|---|---|
standby.on | Daya tambahan digunakan saat layar dalam mode istirahat/ambien/selalu aktif, bukan nonaktif. | sekitar 100 mA | - |
layar aktif | Daya tambahan digunakan saat layar diaktifkan dengan kecerahan minimum. | 200 mA | Termasuk pengontrol sentuh dan lampu latar layar. Pada kecerahan 0, bukan Android minimum yang cenderung 10 atau 20%. |
screen.full | Daya tambahan yang digunakan saat layar berada pada kecerahan maksimum, dibandingkan dengan layar dengan kecerahan minimum. | 100 mA-300 mA | Sebagian dari nilai ini (berdasarkan kecerahan layar) ditambahkan ke screen.on untuk menghitung penggunaan daya layar. |
wifi.aktif | Daya tambahan yang digunakan saat Wi-Fi diaktifkan tetapi tidak menerima, transmisi, atau pemindaian. | 2 mA | - |
wifi.active | Daya tambahan yang digunakan saat mengirim atau menerima data melalui Wi-Fi. | 31 mA | - |
pemindaian wifi | Daya tambahan yang digunakan saat Wi-Fi memindai titik akses. | 100 mA | - |
audio | Daya tambahan digunakan saat decoding/encoding audio melalui DSP. | sekitar 10 mA | Digunakan untuk audio DSP. |
video | Daya tambahan yang digunakan saat melakukan dekode video melalui DSP. | sekitar 50 mA | Digunakan untuk video DSP. |
kamera.rata2 | Rata-rata penggunaan daya oleh subsistem kamera untuk kamera biasa . | 600 mA | Ditujukan sebagai estimasi kasar untuk aplikasi yang menjalankan pratinjau dan menangkap sekitar 10 gambar resolusi penuh per menit. |
senter kamera | Daya rata-rata yang digunakan modul flash kamera saat menyala. | 200 mA | - |
gps.signalqualitybased | Daya tambahan yang digunakan oleh GPS berdasarkan kekuatan sinyal. Ini adalah entri multi-nilai, satu untuk setiap kekuatan sinyal, dari yang paling lemah hingga yang terkuat. | 30 mA, 10 mA | - |
gps.on | Daya tambahan yang digunakan saat GPS mendapatkan sinyal. | 50 mA | - |
radio.aktif | Daya tambahan yang digunakan saat radio seluler melakukan transmisi/penerimaan. | 100 mA-300 mA | - |
pemindaian radio | Daya tambahan yang digunakan saat radio seluler melakukan paging tower. | 1,2 mA | - |
radio.on | Daya tambahan yang digunakan saat radio seluler aktif. Ini adalah entri multi-nilai, satu per kekuatan sinyal (tidak ada sinyal, lemah, sedang, kuat). | 1,2 mA | Beberapa radio meningkatkan daya saat mencari menara BTS dan tidak mendeteksi sinyal. Nilainya bisa sama atau akan berkurang seiring meningkatnya sinyal kekuatannya. Jika Anda hanya memberikan satu nilai, nilai yang sama akan digunakan untuk semua kekuatan Anda. Jika Anda memberikan dua nilai, yang pertama digunakan untuk tidak ada sinyal, nilai kedua digunakan untuk semua kekuatan lainnya, dan seterusnya. |
bluetooth.controller.idle | Rata-rata penggambaran saat ini (mA) dari pengontrol Bluetooth saat tidak ada aktivitas. | - | Nilai-nilai ini tidak diperkirakan, tetapi
diambil dari lembar data
{i>controller<i}. Jika ada beberapa status penerimaan atau
pemancaran, rata-rata
maka negara bagian tersebut
akan diambil. Selain itu, sistem sekarang
mengumpulkan data untuk
Pemindaian Bluetooth dan Hemat Energi (LE). Android 7.0 dan yang lebih baru tidak lagi menggunakan nilai daya Bluetooth untuk bluetooth.active (digunakan saat memutar audio melalui Bluetooth A2DP) dan bluetooth.on (digunakan saat Bluetooth aktif, tetapi tidak ada aktivitas). |
bluetooth.controller.rx | Rata-rata gambar saat ini (mA) dari pengontrol Bluetooth saat menerima. | - | |
{i>bluetooth.controller.tx<i} | Rata-rata gambar saat ini (mA) dari pengontrol Bluetooth saat melakukan transmisi. | - | |
bluetooth.controller.voltage | Tegangan pengoperasian rata-rata (mV) pengontrol Bluetooth. | - | |
modem.controller.sleep | Rata-rata gambar saat ini (mA) dari pengontrol modem saat dalam mode tidur. | 0 mA | Nilai-nilai ini tidak diperkirakan, tetapi diambil dari lembar data {i>controller<i}. Jika ada beberapa status penerimaan, rata-rata status tersebut akan diambil. Jika ada lebih dari satu status transmisi, yang dapat menentukan nilai untuk setiap status transmisi mulai Android 9. |
modem.controller.idle | Pengambilan rata-rata saat ini (mA) dari pengontrol modem saat tidak ada aktivitas. | - | |
modem.controller.rx | Rata-rata gambar saat ini (mA) dari pengontrol modem saat menerima. | - | |
modem.controller.tx | Gambaran arus rata-rata (mA) dari pengontrol modem saat mentransmisikan pada daya RF yang berbeda level organisasi. Ini adalah entri multi-nilai dengan satu nilai per tingkat daya transmisi. | 100 mA, 200 mA, 300 mA, 400 mA, 500 mA | |
modem.controller.voltage | Tegangan pengoperasian rata-rata (mV) pengontrol modem. | - | |
wifi.controller.idle | Rata-rata penarikan saat ini (mA) dari pengontrol Wi-Fi saat tidak ada aktivitas. | - | Nilai-nilai ini tidak diperkirakan, tetapi diambil dari lembar data {i>controller<i}. Jika ada beberapa status penerimaan atau pemancaran, rata-rata maka negara bagian tersebut akan diambil. |
{i>wifi.controller.rx<i} | Rata-rata gambar saat ini (mA) dari pengontrol Wi-Fi saat menerima. | - | |
{i>wifi.controller.tx<i} | Gambaran rata-rata saat ini (mA) dari pengontrol Wi-Fi saat melakukan transmisi. | - | |
wifi.controller.voltage | Tegangan pengoperasian rata-rata (mV) pengontrol Wi-Fi. | - | |
{i>cpu.speeds<i} | Ini adalah entri multi-nilai yang mencantumkan setiap kemungkinan kecepatan CPU dalam KHz. | 125.000 KHz, 250.000 KHz, 500.000 KHz, 1000000 KHz, 1500000 KHz | Jumlah dan urutan entri harus sesuai dengan entri mA di {i>cpu.active<i}. |
{i>cpu.idle<i} | Total daya yang digambar oleh sistem saat CPU (dan SoC) berada dalam sistem status penangguhan. | 3 mA | - |
{i>cpu.awake<i} | Daya tambahan yang digunakan saat CPU dalam menjadwalkan status tidak ada aktivitas (loop nonaktif kernel); tidak dalam status penangguhan sistem. | 50 mA | Platform Anda mungkin memiliki lebih dari satu status tidak ada aktivitas yang digunakan dengan tingkat konsumsi daya; memilih status tidak ada aktivitas representatif lebih lama periode penjadwal tidak ada aktivitas (beberapa milidetik). Periksa grafik kekuatan pada peralatan pengukuran dan pilih sampel di mana CPU berada pada titik terendah konsumsi, dengan membuang sampel yang lebih tinggi ketika CPU keluar dari tidak ada aktivitas. |
{i>cpu.active<i} | Daya tambahan yang digunakan CPU saat berjalan pada kecepatan yang berbeda-beda. | 100 mA, 120 mA, 140 mA, 160 mA, 200 mA | Nilai merepresentasikan daya yang digunakan oleh rel CPU saat berjalan pada kecepatan tinggi. Atur kecepatan maksimum dalam kernel ke setiap kecepatan dan penjepit yang diizinkan CPU dengan kecepatan tersebut. Jumlah dan urutan entri sesuai dengan jumlah dan urutan entri dalam {i>cpu.speeds<i}. |
{i>cpu.clusters.cores<i} | Jumlah core yang terdapat di setiap cluster CPU. | 4, 2 | Diperlukan hanya untuk perangkat dengan CPU heterogen encoder-decoder. Jumlah entri dan urutan harus sesuai dengan jumlah entri cluster untuk {i>cpu.active<i} dan {i>cpu.speeds<i}. Entri pertama mewakili jumlah inti CPU di cluster0, entri kedua menunjukkan jumlah CPU di cluster1, dan seterusnya. |
baterai.capacity | Total kapasitas baterai dalam mAh. | 3.000 mAh | - |
Pemindaian Bluetooth dan Hemat Energi (LE)
Untuk perangkat yang menjalankan Android 7.0, sistem mengumpulkan data untuk Hemat Energi (LE) memindai dan lalu lintas jaringan Bluetooth (seperti RFCOMM dan L2CAP) dan pengaitan aktivitas ini dengan aplikasi yang memulai prosesnya. Pemindaian Bluetooth dikaitkan dengan aplikasi yang memulai pemindaian, namun pemindaian batch tidak (dan akan dikaitkan dengan aplikasi Bluetooth). Untuk aplikasi pemindaian selama N milidetik, biaya pemindaian adalah N milidetik waktu rx dan N milidetik waktu tx; semua waktu pengontrol yang tersisa ditugaskan ke lalu lintas jaringan atau aplikasi Bluetooth.