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()
方法。
本页面上的内容和代码示例受内容许可部分所述许可的限制。Java 和 OpenJDK 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2024-09-25。
[{
"type": "thumb-down",
"id": "missingTheInformationINeed",
"label":"没有我需要的信息"
},{
"type": "thumb-down",
"id": "tooComplicatedTooManySteps",
"label":"太复杂/步骤太多"
},{
"type": "thumb-down",
"id": "outOfDate",
"label":"内容需要更新"
},{
"type": "thumb-down",
"id": "translationIssue",
"label":"翻译问题"
},{
"type": "thumb-down",
"id": "samplesCodeIssue",
"label":"示例/代码问题"
},{
"type": "thumb-down",
"id": "otherDown",
"label":"其他"
}]
[{
"type": "thumb-up",
"id": "easyToUnderstand",
"label":"易于理解"
},{
"type": "thumb-up",
"id": "solvedMyProblem",
"label":"解决了我的问题"
},{
"type": "thumb-up",
"id": "otherUp",
"label":"其他"
}]
{"lastModified": "\u6700\u540e\u66f4\u65b0\u65f6\u95f4 (UTC)\uff1a2024-09-25\u3002"}
[[["易于理解","easyToUnderstand","thumb-up"],["解决了我的问题","solvedMyProblem","thumb-up"],["其他","otherUp","thumb-up"]],[["没有我需要的信息","missingTheInformationINeed","thumb-down"],["太复杂/步骤太多","tooComplicatedTooManySteps","thumb-down"],["内容需要更新","outOfDate","thumb-down"],["翻译问题","translationIssue","thumb-down"],["示例/代码问题","samplesCodeIssue","thumb-down"],["其他","otherDown","thumb-down"]],["最后更新时间 (UTC):2024-09-25。"]]