Сканирования Wi-Fi preferred network offload (PNO) — это маломощные сканирования Wi-Fi, которые происходят через регулярные интервалы, когда устройство отключено от Wi-Fi и экран выключен. Сканирования PNO используются для поиска и подключения к сохраненным сетям. Эти сканирования планируются фреймворком с помощью команды NL80211_CMD_START_SCHED_SCAN
. Для получения дополнительной информации см. nl80211.h .
Оптимизируйте энергопотребление с помощью информации о мобильности устройств
На устройствах под управлением Android 9 или ниже, когда устройство отключено от Wi-Fi и экран выключен, сканирование PNO происходит с интервалом в 20 секунд для первых трех сканирований, затем замедляется до одного сканирования каждые 60 секунд для всех последующих сканирований. Сканирование PNO останавливается, когда найдена сохраненная сеть или включен экран.
В Android 10 представлен дополнительный метод API setDeviceMobilityState()
в 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()
из пользовательского системного приложения.