Suche nach bevorzugtem WLAN-Netzwerkauslag

Scans zur Entlastung des Netzwerks (Wi-Fi Preferred Network Offload, PNO) sind WLAN-Scans mit geringer Leistung, treten in regelmäßigen Abständen auf, wenn ein Gerät vom WLAN getrennt ist und Display ist aus. PNO-Scans werden verwendet, um eine Verbindung zu gespeicherten Netzwerken herstellen. Diese Scans werden vom Framework mithilfe der Methode NL80211_CMD_START_SCHED_SCAN-Befehl. Weitere Informationen finden Sie unter nl80211.h:

Stromverbrauch mit Informationen zur Gerätemobilität optimieren

Auf Geräten mit Android 9 oder niedriger, wenn das Gerät keine WLAN-Verbindung hat und das Display ausgeschaltet ist, finden PNO-Scans nach 20 Sekunden statt. Intervalle für die ersten drei Scans und verlangsamen Sie es dann auf einen Scan alle 60 Sekunden. für alle nachfolgenden Scans. Die PNO-Suche wird beendet, wenn ein gespeichertes Netzwerk gefunden wird oder wird der Bildschirm eingeschaltet.

Mit Android 10 wird eine optionale API-Methode namens setDeviceMobilityState() in WifiManager, die das Intervall zwischen PNO-Scans basierend auf dem Mobilitätsstatus des Geräts, um den Stromverbrauch zu senken.

Mögliche Mobilitätszustände sind:

  • DEVICE_MOBILITY_STATE_UNKNOWN: Unbekannte Mobilität
  • DEVICE_MOBILITY_STATE_HIGH_MVMT: Auf dem Fahrrad oder in einem Kraftfahrzeug
  • DEVICE_MOBILITY_STATE_LOW_MVMT: Gehen oder Laufen
  • DEVICE_MOBILITY_STATE_STATIONARY: Nicht bewegen

Wenn das Gerät nicht bewegt wird, erhöht das Android-Framework die Intervall zwischen PNO-Scans von 60 bis 180 Sekunden, um den Energieverbrauch zu reduzieren konsumiert wird. Bei dieser Optimierung wird davon ausgegangen, dass das Gerät Es ist unwahrscheinlich, dass neue Netzwerke bei PNO-Scans gefunden werden, wenn das Gerät nicht bewegt wird.

Befindet sich das Gerät in einem anderen Mobilitätszustand oder wird die Methode nicht aufgerufen, verwendet das standardmäßige PNO-Scanverhalten.

Implementierung

Implementierung dieser Funktion zur Energieoptimierung auf einem Android-Gerät ab 10 Jahren, leiten Sie die Informationen zur Gerätemobilität ab und die setDeviceMobilityState()-Methode aus einer benutzerdefinierten System-App aufrufen.