WLAN-fähig

Die in Android 8.0 hinzugefügte Funktion Wi‑Fi Aware ermöglicht es unterstützten Geräten, sich direkt über das Wi‑Fi Aware-Protokoll zu finden, zu verbinden und die Reichweite (in Android 9 hinzugefügt) zu ermitteln, ohne auf das Internet oder ein Mobilfunknetz angewiesen zu sein. Dieses Feature, das auf der Wi-Fi Aware-Spezifikation der Wi-Fi Alliance (WFA) (Versionen 2.0, 3.0, 3.1 und 4.0) basiert, ermöglicht die einfache Freigabe von Daten mit hohem Durchsatz zwischen vertrauenswürdigen Geräten und Apps, die sich ansonsten außerhalb des Netzwerks befinden.

Beispiele und Quelle

Um diese Funktion zu verwenden, sollten Gerätehersteller die HAL des WLAN-Anbieters implementieren. In Android 14 und höher wird die HAL-Schnittstelle des Anbieters mit AIDL definiert. Unter Android 13 und niedriger wird die HAL-Schnittstelle des Anbieters mit HIDL definiert.

Folgen Sie der WLAN-Benutzeroberfläche, um die Wi‑Fi Aware-Funktion zu verwenden. Je nach implementierter Schnittstelle ist dies entweder:

  • AIDL: hardware/interfaces/wifi/aidl
  • HIDL: hardware/interfaces/wifi/1.2 oder höher

In der alten Wi‑Fi HAL können Sie sehen, wie sie mit den AIDL- und HIDL-Schnittstellen korreliert: hardware/libhardware_legacy/+/main/include/hardware_legacy/wifi_nan.h.

Implementierung

Gerätehersteller müssen sowohl Framework- als auch HAL-/Firmware-Unterstützung bereitstellen:

  • Framework:
    • AOSP-Code
    • Aware aktivieren: Erfordert sowohl ein Funktions- als auch ein Build-Flag
  • HAL-Unterstützung für Wi‑Fi Aware (NAN) (impliziert Firmwareunterstützung)

Um diese Funktion zu implementieren, müssen Gerätehersteller die WLAN-Schnittstelle implementieren und zwei Feature-Flags aktivieren:

  • Fügen Sie in BoardConfig.mk oder BoardConfig-common.mk in device/<oem>/<device> das folgende Flag hinzu:

    WIFI_HIDL_FEATURE_AWARE := true
    
  • Ändern Sie in device.mk in device/<oem>/<device> die Umgebungsvariable PRODUCT_COPY_FILES, um die Wi-Fi Aware-Funktion zu unterstützen:

    PRODUCT_COPY_FILES +=
    frameworks/native/data/etc/android.hardware.wifi.aware.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.wifi.aware.xml
    

Wi‑Fi Aware umfasst die Entfernungsmessung zu Peer-Geräten mit dem IEEE 802.11mc-Protokoll, auch als Round Trip Time (RTT) bezeichnet. Diese Unterfunktion von Wi‑Fi Aware setzt voraus, dass das Gerät die Wi‑Fi RTT-Funktion unterstützt. Das bedeutet, dass das Gerät sowohl Wi‑Fi Aware als auch Wi‑Fi RTT unterstützen muss. Weitere Informationen finden Sie unter WLAN-RTT.

Ansonsten ist alles, was für diese Funktion erforderlich ist, in AOSP enthalten.

Das Flag WIFI_HIDL_FEATURE_AWARE wird ignoriert, wenn das Flag WIFI_HAL_INTERFACE_COMBINATIONS angegeben ist. Weitere Informationen finden Sie unter Gleichzeitigkeit mit mehreren WLAN-Schnittstellen.

Randomisierung bei MAC

Bei Android muss die MAC-Adresse der Wi-Fi Aware-Discovery (NMI) und Datenschnittstellen (NDPs) zufällig angeordnet sein und nicht mit der tatsächlichen MAC-Adresse des Geräts identisch sein. Folgende MAC-Adressen sind erforderlich:

  • Wird jedes Mal zufällig generiert, wenn Wi‑Fi Aware aktiviert oder wieder aktiviert wird.
  • Wenn Wi‑Fi Aware aktiviert ist, muss die MAC-Adresse in einem regelmäßigen Intervall, das durch den Parameter NanConfigRequest.macAddressRandomizationIntervalSec konfiguriert wird, zufällig generiert werden. Standardmäßig ist dies im Framework auf 30 Minuten festgelegt.

Anhalten und fortsetzen

Ab Android 14 unterstützt Wi-Fi Aware privilegierte Apps die Möglichkeit, aktive Erkennungssitzungen zu sperren und wieder zu aktivieren (einschließlich aller Datenpfade, die mit diesen Sitzungen verknüpft sind). Wenn diese Funktion unterstützt wird, können Geräte Suchsitzungen schneller fortsetzen und weniger Strom verbrauchen, da Suchsitzungen pausiert werden können.

Wenn ein Gerät diese Möglichkeit zum Pausieren und Fortsetzen unterstützt, wird die Wi‑Fi Aware-Sitzung von der Firmware pausiert, wenn eine privilegierte App die Erkennungssitzung pausiert. Wenn eine Erkennungssitzung angehalten ist, sendet oder empfängt das Gerät keine Frames für diese Sitzung, auch keine aktiven NDPs in dieser Sitzung. Wenn alle Erkennungssitzungen ausgesetzt sind, überträgt oder empfängt das Gerät keine Wi‑Fi Aware-Frames.

Wenn eine privilegierte App eine pausierte Discovery-Sitzung fortsetzt, setzt das Framework die Sitzung einschließlich aller zugehörigen NDP-Sitzungen auf den vorherigen Zustand zurück. Das Fortsetzen einer pausierten Erkennungssitzung ist schneller als das Aufrufen von Wi‑Fi Aware und das Erstellen einer neuen Erkennungssitzung.

Damit die Möglichkeit besteht, Erkennungssitzungen anzuhalten und fortzusetzen, müssen Gerätehersteller HAL- und Firmware-Support bereitstellen. Weitere Informationen finden Sie unter IWifiNanIface.java.

Gerätehersteller können die Out-of-Band-Kommunikation (z. B. BLE) verwenden, um die Suspend- und Resume-Vorgänge auf mehreren Geräten zu synchronisieren.

Zertifizierungsstufe

Android bietet eine Reihe von Unit-Tests, CTS-Tests (Compatibility Test Suite) und CTS-Verifier-Tests, um die Wi‑Fi Aware-Funktion zu validieren. Wi‐Fi Aware kann auch mit der Vendor Test Suite (VTS) getestet werden.

Einheitentests

Die Tests des Wi-Fi Aware-Pakets werden folgendermaßen ausgeführt:

Diensttests:

atest com.android.server.wifi.aware

Manager tests:

atest android.net.wifi.aware

Compatibility Test Suite (CTS)-Tests

Verwenden Sie CTS-Tests, um die Wi‑Fi Aware-Funktion zu validieren. CTS erkennt, wenn die Funktion aktiviert ist, und schließt die zugehörigen Tests automatisch ein.

Die CTS-Tests können mit folgenden Methoden ausgelöst werden:

atest SingleDeviceTest

CTS Verifier-Tests

Bei CTS Verifier-Tests wird das Verhalten von Wi‑Fi Aware anhand von zwei Geräten überprüft: einem Testgerät und einem bekannten fehlerfreien Gerät. Öffnen Sie zum Ausführen der Tests den CTS Verifier und gehen Sie zum Abschnitt „Wi‑Fi Aware-Tests“.