Các nhà sản xuất thiết bị phải cung cấp cấu hình nguồn thành phần trong /frameworks/base/core/res/res/xml/power_profile.xml
.
Để xác định giá trị cho cấu hình nguồn, hãy sử dụng phần cứng đo công suất đang được thiết bị sử dụng và thực hiện các thao tác khác nhau đối với thông tin cần thiết. Đo việc sử dụng điện năng trong các hoạt động đó và tính toán các giá trị (tính toán các giá trị khác biệt so với các cách sử dụng điện cơ sở khác nếu thích hợp).
Vì mục tiêu của cấu hình nguồn là ước tính mức tiêu hao pin một cách thích hợp, nên các giá trị cấu hình nguồn được đưa ra theo dòng điện (amps). Khung Android nhân dòng điện với thời gian hệ thống con hoạt động và tính giá trị mAh, sau đó được sử dụng để ước tính lượng pin mà ứng dụng / hệ thống con đã tiêu hao.
Các thiết bị có bộ điều khiển Bluetooth, modem và Wi-Fi chạy Android 7.0 trở lên có thể cung cấp các giá trị năng lượng bổ sung thu được từ dữ liệu chipset.
Thiết bị có CPU không đồng nhất
Cấu hình nguồn cho các thiết bị có lõi CPU có kiến trúc không đồng nhất phải bao gồm các trường bổ sung sau:
- Tổng số CPU cho mỗi cụm (được biểu thị bằng cpu.clusters.cores).
- Tốc độ CPU được hỗ trợ bởi từng cụm.
- Mức tiêu thụ năng lượng hoạt động của CPU cho từng cụm.
Để phân biệt giữa mức tiêu thụ điện năng của CPU đang hoạt động và tốc độ CPU được hỗ trợ cho các cụm, hãy thêm số cụm vào tên của mảng. Số cụm được gán theo thứ tự của các lõi CPU trong cây thiết bị nhân. Ví dụ: trong một kiến trúc không đồng nhất có hai (2) cụm với bốn (4) lõi:
- cluster0 bao gồm cpu0-3
- cluster1 bao gồm cpu4-7
Khung Android sử dụng các số lõi CPU này khi đọc thống kê từ các tệp sysfs
trong: /sys/devices/system/cpu/cpu<number>/cpufreq/stats
.
Ví dụ về tốc độ và CPU cụm:
<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>
Giá trị công suất
Bảng sau đây mô tả các cài đặt giá trị công suất khả dụng. Để xem tệp mẫu trong AOSP, hãy xem power_profile.xml .
Tên | Sự miêu tả | Giá trị mẫu | Ghi chú |
---|---|---|---|
ambient.on | Nguồn bổ sung được sử dụng khi màn hình ở chế độ ngủ gật / môi trường xung quanh / luôn bật thay vì tắt. | khoảng 100 mA | - |
screen.on | Nguồn bổ sung được sử dụng khi màn hình được bật ở độ sáng tối thiểu. | 200 mA | Bao gồm bộ điều khiển cảm ứng và đèn nền hiển thị. Ở độ sáng 0, không phải mức tối thiểu của Android có xu hướng là 10 hoặc 20%. |
screen.full | Nguồn bổ sung được sử dụng khi màn hình ở độ sáng tối đa, so với màn hình ở độ sáng tối thiểu. | 100 mA-300 mA | Một phần nhỏ của giá trị này (dựa trên độ sáng màn hình) được thêm vào giá trị screen.on để tính mức sử dụng năng lượng của màn hình. |
wifi.on | Nguồn điện bổ sung được sử dụng khi Wi-Fi được bật nhưng không nhận, truyền hoặc quét. | 2 mA | - |
wifi.active | Nguồn bổ sung được sử dụng khi truyền hoặc nhận qua Wi-Fi. | 31 mA | - |
wifi.scan | Nguồn bổ sung được sử dụng khi Wi-Fi đang quét các điểm truy cập. | 100 mA | - |
âm thanh | Nguồn bổ sung được sử dụng khi giải mã / mã hóa âm thanh qua DSP. | khoảng 10 mA | Được sử dụng cho âm thanh DSP. |
băng hình | Nguồn bổ sung được sử dụng khi giải mã video qua DSP. | khoảng 50 mA | Được sử dụng cho video DSP. |
camera.avg | Mức sử dụng điện năng trung bình của hệ thống phụ máy ảnh cho một ứng dụng máy ảnh điển hình. | 600 mA | Dự định như một ước tính sơ bộ cho một ứng dụng chạy bản xem trước và chụp khoảng 10 bức ảnh có độ phân giải đầy đủ mỗi phút. |
camera.flashlight | Công suất trung bình được sử dụng bởi mô-đun đèn flash của máy ảnh khi bật. | 200 mA | - |
gps.signalqualitybased | Nguồn bổ sung được sử dụng bởi GPS dựa trên cường độ tín hiệu. Đây là mục nhập nhiều giá trị, một giá trị trên mỗi cường độ tín hiệu, từ yếu nhất đến mạnh nhất. | 30 mA, 10 mA | - |
gps.on | Nguồn bổ sung được sử dụng khi GPS thu được tín hiệu. | 50 mA | - |
radio.active | Nguồn bổ sung được sử dụng khi vô tuyến di động đang truyền / nhận. | 100 mA-300 mA | - |
radio.scanning | Nguồn điện bổ sung được sử dụng khi vô tuyến di động đang phân trang tháp. | 1,2 mA | - |
radio.on | Nguồn bổ sung được sử dụng khi radio di động đang bật. Đây là mục nhập nhiều giá trị, một giá trị trên mỗi cường độ tín hiệu (không có tín hiệu, yếu, trung bình, mạnh). | 1,2 mA | Một số bộ đàm tăng công suất khi họ tìm kiếm tháp di động và không phát hiện thấy tín hiệu. Các giá trị có thể giống nhau hoặc giảm khi cường độ tín hiệu ngày càng tăng. Nếu bạn chỉ cung cấp một giá trị, thì cùng một giá trị sẽ được sử dụng cho tất cả các điểm mạnh. Nếu bạn cung cấp hai giá trị, giá trị đầu tiên được sử dụng cho không có tín hiệu, giá trị thứ hai được sử dụng cho tất cả các cường độ khác, v.v. |
bluetooth.controller.idle | Dòng điện trung bình (mA) của bộ điều khiển Bluetooth khi không hoạt động. | - | Các giá trị này không được ước tính mà được lấy từ bảng dữ liệu của bộ điều khiển. Nếu có nhiều trạng thái nhận hoặc truyền, giá trị trung bình của các trạng thái đó được lấy. Ngoài ra, hệ thống hiện thu thập dữ liệu để quét Năng lượng thấp (LE) và Bluetooth . Android 7.0 trở lên không còn sử dụng các giá trị nguồn Bluetooth cho bluetooth.active (được sử dụng khi phát âm thanh qua Bluetooth A2DP) và bluetooth.on (được sử dụng khi Bluetooth được bật nhưng không hoạt động). |
bluetooth.controller.rx | Dòng điện trung bình rút ra (mA) của bộ điều khiển Bluetooth khi nhận. | - | |
bluetooth.controller.tx | Dòng điện trung bình rút ra (mA) của bộ điều khiển Bluetooth khi truyền. | - | |
bluetooth.controller.voltage | Điện áp hoạt động trung bình (mV) của bộ điều khiển Bluetooth. | - | |
modem.controller.sleep | Dòng điện trung bình rút ra (mA) của bộ điều khiển modem khi ở chế độ ngủ. | 0 mA | Các giá trị này không được ước tính mà được lấy từ bảng dữ liệu của bộ điều khiển. Nếu có nhiều trạng thái nhận, giá trị trung bình của các trạng thái đó sẽ được lấy. Nếu có nhiều trạng thái truyền, việc chỉ định giá trị cho từng trạng thái truyền được hỗ trợ bắt đầu từ Android 9. |
modem.controller.idle | Dòng điện trung bình rút ra (mA) của bộ điều khiển modem khi không hoạt động. | - | |
modem.controller.rx | Dòng điện trung bình rút ra (mA) của bộ điều khiển modem khi nhận. | - | |
modem.controller.tx | Dòng điện trung bình rút ra (mA) của bộ điều khiển modem khi truyền ở các mức công suất RF khác nhau. Đây là mục nhập nhiều giá trị với một giá trị trên mỗi mức công suất phát. | 100 mA, 200 mA, 300 mA, 400 mA, 500 mA | |
modem.controller.voltage | Điện áp hoạt động trung bình (mV) của bộ điều khiển modem. | - | |
wifi.controller.idle | Dòng điện trung bình (mA) của bộ điều khiển Wi-Fi khi không hoạt động. | - | Các giá trị này không được ước tính mà được lấy từ bảng dữ liệu của bộ điều khiển. Nếu có nhiều trạng thái nhận hoặc truyền, giá trị trung bình của các trạng thái đó được lấy. |
wifi.controller.rx | Dòng điện trung bình rút ra (mA) của bộ điều khiển Wi-Fi khi nhận. | - | |
wifi.controller.tx | Dòng điện trung bình rút ra (mA) của bộ điều khiển Wi-Fi khi truyền. | - | |
wifi.controller.voltage | Điện áp hoạt động trung bình (mV) của bộ điều khiển Wi-Fi. | - | |
cpu.speeds | Đây là một mục nhập đa giá trị liệt kê từng tốc độ CPU có thể có trong KHz. | 125000 KHz, 250000 KHz, 500000 KHz, 1000000 KHz, 1500000 KHz | Số lượng và thứ tự các mục nhập phải tương ứng với các mục nhập mA trong cpu.active. |
cpu.idle | Tổng công suất được hệ thống rút ra khi CPU (và SoC) ở trạng thái tạm ngừng hệ thống. | 3 mA | - |
cpu.awake | Nguồn bổ sung được sử dụng khi CPU ở trạng thái nhàn rỗi lập lịch (vòng lặp nhàn rỗi nhân); hệ thống không ở trạng thái tạm ngừng hệ thống. | 50 mA | Nền tảng của bạn có thể có nhiều hơn một trạng thái không hoạt động được sử dụng với các mức tiêu thụ điện năng khác nhau; chọn trạng thái không hoạt động đại diện trong khoảng thời gian dài hơn của bộ lập lịch biểu không hoạt động (vài mili giây). Kiểm tra biểu đồ năng lượng trên thiết bị đo của bạn và chọn các mẫu trong đó CPU có mức tiêu thụ thấp nhất, loại bỏ các mẫu cao hơn khi CPU không hoạt động. |
cpu.active | Nguồn bổ sung được sử dụng bởi CPU khi chạy ở các tốc độ khác nhau. | 100 mA, 120 mA, 140 mA, 160 mA, 200 mA | Giá trị đại diện cho công suất được sử dụng bởi đường ray CPU khi chạy ở các tốc độ khác nhau. Đặt tốc độ tối đa trong nhân thành từng tốc độ cho phép và cố định CPU ở tốc độ đó. Số lượng và thứ tự các mục nhập tương ứng với số lượng và thứ tự các mục nhập trong cpu.speeds. |
cpu.clusters.cores | Số lõi mỗi cụm CPU chứa. | 4, 2 | Chỉ bắt buộc đối với các thiết bị có kiến trúc CPU không đồng nhất . Số mục nhập và thứ tự phải khớp với số mục nhập cụm cho cpu.active và cpu.speeds. Mục nhập đầu tiên biểu thị số lõi CPU trong cluster0, mục nhập thứ hai biểu thị số lõi CPU trong cluster1, v.v. |
dung lượng pin | Tổng dung lượng pin tính bằng mAh. | 3000 mAh | - |
Năng lượng thấp (LE) và quét Bluetooth
Đối với các thiết bị chạy Android 7.0, hệ thống thu thập dữ liệu để quét Năng lượng thấp (LE) và lưu lượng mạng Bluetooth (chẳng hạn như RFCOMM và L2CAP) và liên kết các hoạt động này với ứng dụng khởi tạo. Quét Bluetooth được liên kết với ứng dụng đã bắt đầu quét, nhưng quét hàng loạt thì không (và thay vào đó được liên kết với ứng dụng Bluetooth). Đối với một ứng dụng quét N mili giây, chi phí quét là N mili giây thời gian rx và N mili giây thời gian tx; tất cả thời gian còn lại của bộ điều khiển được gán cho lưu lượng mạng hoặc ứng dụng Bluetooth.