Quét mạng ưu tiên Wi-Fi (PNO) là tính năng quét Wi-Fi ở mức năng lượng thấp 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. Tính năng 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 nhờ 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 khỏi Wi-Fi và màn hình đang tắt, quá trình quét PNO diễn ra sau 20 giây đối với 3 lần quét đầu tiên, sau đó giảm tốc độ xuống một lần quét cứ 60 giây một lần 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ác trạng thái di chuyển có thể là:
DEVICE_MOBILITY_STATE_UNKNOWN
: Không xác định được khả năng di chuyểnDEVICE_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 bất kỳ 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.