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