Scansione per l'offload della rete preferita Wi-Fi

Le scansioni Wi-Fi PNO (Preferred Network Offload) sono scansioni Wi-Fi a basso consumo energetico che si verificano a intervalli regolari quando un dispositivo è disconnesso dal Wi-Fi e lo schermo è spento. Le scansioni PNO vengono utilizzate per trovare e connettersi alle reti salvate. Queste scansioni vengono pianificate dal framework utilizzando il comando NL80211_CMD_START_SCHED_SCAN. Per ulteriori informazioni, consulta nl80211.h.

Ottimizzare il consumo energetico con le informazioni sulla mobilità del dispositivo

Sui dispositivi con Android 9 o versioni precedenti, quando il dispositivo è disconnesso dal Wi-Fi e lo schermo è spento, le scansioni PNO vengono eseguite a intervalli di 20 secondi per le prime tre scansioni, quindi rallentano a una scansione ogni 60 secondi per tutte le scansioni successive. La scansione PNO si interrompe quando viene trovata una rete salvata o lo schermo viene acceso.

Android 10 introduce un metodo API facoltativo denominato setDeviceMobilityState() in WifiManager che aumenta l'intervallo tra le scansioni PNO in base allo stato di mobilità del dispositivo per ridurre il consumo energetico.

Gli stati di mobilità possibili sono:

  • DEVICE_MOBILITY_STATE_UNKNOWN: Mobilità sconosciuta
  • DEVICE_MOBILITY_STATE_HIGH_MVMT: In bicicletta o in un veicolo a motore
  • DEVICE_MOBILITY_STATE_LOW_MVMT: Camminata o corsa
  • DEVICE_MOBILITY_STATE_STATIONARY: Non si muove

Se il dispositivo è fermo, il framework Android aumenta l'intervallo tra le scansioni PNO da 60 secondi a 180 secondi per ridurre il consumo energetico. Questa ottimizzazione viene eseguita presupponendo che il dispositivo non trovi nuove reti nelle scansioni PNO quando non è in movimento.

Se il dispositivo si trova in un altro stato di mobilità o se il metodo non viene chiamato, il dispositivo utilizza il comportamento di scansione PNO predefinito.

Implementazione

Per implementare questa funzionalità di ottimizzazione del consumo energetico su un dispositivo con Android 10 o versioni successive, deriva le informazioni sulla mobilità del dispositivo e chiama il metodo setDeviceMobilityState() da un'app di sistema personalizzata.