WLAN 首选分流网络扫描

Wi-Fi 首选分流网络 (PNO) 扫描是在设备与 Wi-Fi 断开连接且屏幕关闭后定期发生的低电耗 Wi-Fi 扫描。PNO 扫描用于查找并连接到已保存的网络。框架使用 NL80211_CMD_START_SCHED_SCAN 命令调度这些扫描。如需了解详情,请参阅 nl80211.h

利用设备移动信息减少耗电量

在搭载 Android 9 或更低版本的设备上,当设备与 Wi-Fi 断开连接且屏幕关闭后,PNO 扫描将以 20 秒为间隔执行前三次扫描,并以 60 秒为间隔执行所有后续扫描。找到已保存的网络或屏幕开启时,PNO 扫描会停止。

Android 10 在 WifiManager 中引入了一个名为 setDeviceMobilityState() 的可选 API 方法,该方法可根据设备的移动状态增加 PNO 扫描的间隔时长,从而减少耗电量。

可能的移动状态包括:

  • DEVICE_MOBILITY_STATE_UNKNOWN:移动性未知
  • DEVICE_MOBILITY_STATE_HIGH_MVMT:骑自行车或驾驶机动车
  • DEVICE_MOBILITY_STATE_LOW_MVMT:步行或跑步
  • DEVICE_MOBILITY_STATE_STATIONARY:没有移动

如果设备处于静止状态,Android 框架会将 PNO 扫描的间隔时长从 60 秒增加到 180 秒,以减少耗电量。这种优化基于以下假设:在设备没有移动时,设备不可能通过 PNO 扫描找到任何新网络。

如果设备处于任何其他移动状态或者该方法未经调用,则设备将采用默认的 PNO 扫描行为。

实现

如需在搭载 Android 10 或更高版本的设备上实现此电耗优化功能,请推导出设备移动信息并从自定义系统应用中调用 setDeviceMobilityState() 方法。