Quét tải mạng ưa thích Wi-Fi

Quét giảm tải mạng ưu tiên Wi-Fi (PNO) là quá trình quét Wi-Fi có công suất thấp diễn ra định kỳ khi thiết bị bị ngắt kết nối khỏi Wi-Fi và màn hình tắt. Quét PNO được sử dụng để tìm và kết nối với các mạng đã lưu. Các lần quét này được khung lên lịch bằng cách sử dụng lệnh NL80211_CMD_START_SCHED_SCAN . Để biết thêm thông tin, xem nl80211.h .

Tối ưu hóa việc sử dụng năng lượng với thông tin di động 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 tắt, quá trình quét PNO diễn ra trong khoảng thời gian 20 giây cho ba lần quét đầu tiên, sau đó giảm tốc độ xuống còn một lần quét cứ sau 60 giây cho tất cả các lần quét tiếp theo. Quá trình quét PNO dừng khi tìm thấy mạng đã lưu hoặc màn hình được bật.

Android 10 giới thiệu một phương thức API tùy chọn có tên setDeviceMobilityState() trong WifiManager giúp 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 động có thể có là:

  • DEVICE_MOBILITY_STATE_UNKNOWN : Tính di động không xác định
  • DEVICE_MOBILITY_STATE_HIGH_MVMT : Trên xe đạp hoặc xe cơ giới
  • DEVICE_MOBILITY_STATE_LOW_MVMT : Đi bộ hoặc chạy
  • DEVICE_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 hóa 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ị ở bất kỳ trạng thái di động nào 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.

Thực hiện

Để triển khai tính năng tối ưu hóa năng lượng này trên thiết bị chạy Android 10 trở lên, hãy lấy thông tin di động của thiết bị và gọi phương thức setDeviceMobilityState() từ ứng dụng hệ thống tùy chỉnh.