Wi-Fi 偏好网络卸载扫描

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 引入了一个名为 setDeviceMobilityState() 的可选 API 方法(在 WifiManager 中),该方法会根据设备的移动状态增加 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() 方法。