Recherche de points d'accès Wi-Fi pour le déchargement réseau préféré

Les analyses PNO (Preferred Network Offload) du Wi-Fi sont des analyses Wi-Fi à faible consommation d'énergie qui se produisent à intervalles réguliers lorsqu'un appareil est déconnecté du Wi-Fi et que l'écran est éteint. Les analyses PNO sont utilisées pour trouver et se connecter aux réseaux enregistrés. Ces analyses sont planifiées par le framework à l'aide de la commande NL80211_CMD_START_SCHED_SCAN. Pour en savoir plus, consultez nl80211.h.

Optimiser la consommation d'énergie grâce aux informations sur la mobilité de l'appareil

Sur les appareils équipés d'Android 9 ou version antérieure, lorsque l'appareil est déconnecté du Wi-Fi et que l'écran est éteint, les analyses PNO ont lieu à intervalles de 20 secondes pour les trois premières analyses, puis ralentissent à une analyse toutes les 60 secondes pour toutes les analyses suivantes. L'analyse PNO s'arrête lorsqu'un réseau enregistré est trouvé ou lorsque l'écran est allumé.

Android 10 introduit une méthode d'API facultative nommée setDeviceMobilityState() dans WifiManager, qui augmente l'intervalle entre les analyses PNO en fonction de l'état de mobilité de l'appareil afin de réduire la consommation d'énergie.

Voici les états de mobilité possibles :

  • DEVICE_MOBILITY_STATE_UNKNOWN: Mobilité inconnue
  • DEVICE_MOBILITY_STATE_HIGH_MVMT : À vélo ou dans un véhicule motorisé
  • DEVICE_MOBILITY_STATE_LOW_MVMT : Marche ou course
  • DEVICE_MOBILITY_STATE_STATIONARY : Ne bouge pas

Si l'appareil est immobile, le framework Android augmente l'intervalle entre les analyses PNO de 60 à 180 secondes pour réduire la consommation d'énergie. Cette optimisation repose sur l'hypothèse selon laquelle l'appareil est peu susceptible de trouver de nouveaux réseaux lors des analyses PNO lorsqu'il ne se déplace pas.

Si l'appareil se trouve dans un autre état de mobilité ou si la méthode n'est pas appelée, l'appareil utilise le comportement de balayage PNO par défaut.

Implémentation

Pour implémenter cette fonctionnalité d'optimisation de l'énergie sur un appareil exécutant Android 10 ou version ultérieure, dérivez les informations de mobilité de l'appareil et appelez la méthode setDeviceMobilityState() à partir d'une application système personnalisée.