Quét mạng ưu tiên Wi-Fi (PNO) là các lần quét Wi-Fi tiêu thụ ít năng lượng diễn ra theo chu kỳ đều đặn khi thiết bị bị ngắt kết nối với Wi-Fi và màn hình tắt. Các lần quét PNO được dùng để tìm và kết nối với các mạng đã lưu. Các lượt quét này được khung lên lịch bằng lệnh NL80211_CMD_START_SCHED_SCAN
. Để biết thêm thông tin, hãy xem nl80211.h.
Tối ưu hoá mức sử dụng pin bằng thông tin về khả năng di chuyển của thiết bị
Trên các thiết bị chạy Android 9 trở xuống, khi thiết bị bị ngắt kết nối Wi-Fi và màn hình tắt, các lần quét PNO sẽ diễn ra theo khoảng thời gian 20 giây cho 3 lần quét đầu tiên, sau đó giảm tốc độ xuống một lần quét mỗi 60 giây cho tất cả các lần quét tiếp theo. Quá trình quét PNO sẽ dừng khi tìm thấy một mạng đã lưu hoặc khi màn hình bật.
Android 10 giới thiệu một phương thức API không bắt buộc có tên là setDeviceMobilityState()
trong WifiManager
. Phương thức này tăng khoảng thời gian giữa các lần quét PNO dựa trên trạng thái di động của thiết bị để giảm mức tiêu thụ điện năng.
Có thể có các trạng thái di chuyển sau:
DEVICE_MOBILITY_STATE_UNKNOWN
: Khả năng di chuyển không xác địnhDEVICE_MOBILITY_STATE_HIGH_MVMT
: Đi xe đạp hoặc ngồi trong xe cơ giớiDEVICE_MOBILITY_STATE_LOW_MVMT
: Đi bộ hoặc chạyDEVICE_MOBILITY_STATE_STATIONARY
: Không di chuyển
Nếu thiết bị đứng yên, khung Android sẽ tăng khoảng thời gian giữa các lần quét PNO từ 60 giây lên 180 giây để giảm mức tiêu thụ điện năng. Việc tối ưu hoá này được thực hiện dựa trên giả định rằng thiết bị khó có thể tìm thấy mạng mới nào trong quá trình quét PNO khi thiết bị không di chuyển.
Nếu thiết bị ở trạng thái di động khác hoặc nếu phương thức này không được gọi, thì thiết bị sẽ sử dụng hành vi quét PNO mặc định.
Triển khai
Để triển khai tính năng tối ưu hoá nguồn điện này trên một thiết bị chạy Android 10 trở lên, hãy lấy thông tin về khả năng di chuyển của thiết bị và gọi phương thức setDeviceMobilityState()
từ một ứng dụng hệ thống tuỳ chỉnh.