Análisis de aligeramiento de red Wi-Fi preferido

Las búsquedas de aligeramiento de red preferida (PNO) de Wi-Fi son búsquedas de Wi-Fi de baja potencia que se realizan a intervalos regulares cuando un dispositivo se desconecta de la red y la pantalla está apagada. Las búsquedas de PNO se usan para encontrar redes guardadas y conectarse a ellas. El framework programa estos análisis con el comando NL80211_CMD_START_SCHED_SCAN. Para obtener más información, consulta nl80211.h.

Optimiza el uso de energía con la información de movilidad del dispositivo

En dispositivos que ejecutan Android 9 o versiones anteriores, cuando el dispositivo se desconecta de la red Wi-Fi y la pantalla está apagada, los análisis de PNO se realizan en intervalos de 20 segundos para los primeros tres análisis y, luego, se ralentizan hasta uno cada 60 segundos para todos los análisis posteriores. El escaneo de PNO se detiene cuando se encuentra una red guardada o se enciende la pantalla.

Android 10 introduce un método opcional de API llamado setDeviceMobilityState() en WifiManager que aumenta el intervalo entre análisis de PNO según el estado de movilidad del dispositivo para reducir el consumo de energía.

Estos son los estados de movilidad posibles:

  • DEVICE_MOBILITY_STATE_UNKNOWN: Movilidad desconocida
  • DEVICE_MOBILITY_STATE_HIGH_MVMT: En bicicleta o en un vehículo de motor
  • DEVICE_MOBILITY_STATE_LOW_MVMT: caminar o correr
  • DEVICE_MOBILITY_STATE_STATIONARY: No se mueve

Si el dispositivo está inmóvil, el framework de Android aumenta el intervalo entre análisis de PNO de 60 a 180 segundos para reducir el consumo de energía. Esta optimización se realiza en el supuesto de que es poco probable que el dispositivo encuentre redes nuevas en las búsquedas de PNO cuando el dispositivo no está en movimiento.

Si el dispositivo está en cualquier otro estado de movilidad o si no se llama al método, este usa el comportamiento de escaneo de PNO predeterminado.

Implementación

Para implementar esta función de optimización de energía en un dispositivo que ejecuta Android 10 o versiones posteriores, deriva la información de movilidad del dispositivo y llama al método setDeviceMobilityState() desde una app del sistema personalizada.