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. Diese Funktion basiert auf der Wi‑Fi Alliance (WFA) Wi‑Fi Aware-Spezifikation (Versionen 2.0, 3.0, 3.1 und 4.0) und ermöglicht die einfache Freigabe von Daten mit hoher Durchsatzleistung zwischen vertrauenswürdigen Geräten und Apps, die sich sonst nicht im Netzwerk befinden.
Beispiele und Quelle
Um diese Funktion zu nutzen, sollten Gerätehersteller den WLAN-Anbieter HAL implementieren. Unter Android 14 und höher Die HAL-Schnittstelle des Anbieters wird mithilfe von 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 nachdem, welche Schnittstelle implementiert ist, ist dies entweder:
- AIDL:
hardware/interfaces/wifi/aidl
- HIDL:
hardware/interfaces/wifi/1.2
oder höher
Sie können dem alten WLAN-HAL entnehmen, wie er mit dem AIDL- und HIDL-Schnittstellen: 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
- Wi-Fi Aware (NAN) HAL-Unterstützung (was Firmware-Unterstützung impliziert)
Um diese Funktion zu implementieren, implementieren die Gerätehersteller die WLAN-Schnittstelle und aktivieren zwei Funktions-Flags:
In
BoardConfig.mk
oderBoardConfig-common.mk
indevice/<oem>/<device>
das folgende Flag hinzufügen:WIFI_HIDL_FEATURE_AWARE := true
Ändern Sie in
device.mk
unterdevice/<oem>/<device>
die UmgebungsvariablePRODUCT_COPY_FILES
so, dass sie die Unterstützung für die Funktion „WLAN-Anzeige“ enthält: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 eine Weiterleitung 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:
Andernfalls ist alles, was für diese Funktion erforderlich ist, in AOSP enthalten.
Das Flag WIFI_HIDL_FEATURE_AWARE
wird ignoriert, wenn der
WIFI_HAL_INTERFACE_COMBINATIONS
angegeben ist. Weitere Informationen finden Sie unter
Gleichzeitigkeit von WLAN-Multi-Schnittstellen.
Randomisierung bei MAC
Für Android sind die MAC-Adresse der Wi-Fi Aware-Erkennung (NMI) und der Daten erforderlich. Schnittstellen (NDPs), die zufällig angeordnet werden und nicht mit der tatsächlichen MAC-Adresse identisch sind des Geräts. Folgende MAC-Adressen sind erforderlich:
- Wird bei der Aktivierung oder erneuten Aktivierung von WLAN Aware zufällig ausgewählt.
Wenn Wi-Fi Aware aktiviert ist, muss die MAC-Adresse in regelmäßigen Abständen zufällig ausgewählt werden. das vom
NanConfigRequest.macAddressRandomizationIntervalSec
-Parameter. Dieses wird vom Framework standardmäßig auf 30 Minuten konfiguriert.
Sperren und fortsetzen
Unter Android 14 und höher unterstützt Wi‑Fi Aware die Möglichkeit für privilegierte Apps, aktive Erkennungssitzungen (einschließlich aller mit diesen Sitzungen verknüpften Datenpfade) anzuhalten und fortzusetzen. 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, überträgt das Gerät keine Daten oder Frames für diese Sitzung empfangen, einschließlich der aktiven NDPs in dieser Sitzung, Sitzung. Wenn alle Erkennungssitzungen ausgesetzt sind, überträgt oder empfängt das Gerät keine Wi‑Fi Aware-Frames.
Wenn eine privilegierte App eine gesperrte Erkennungssitzung fortsetzt, Die Sitzung wird auf den vorherigen Status zurückgesetzt, einschließlich aller verknüpften NDPs Sitzungen. 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) nutzen, um auf mehreren Geräten synchronisieren, sperren und fortsetzen.
Zertifizierungsstufe
Android bietet eine Reihe von Einheitentests, Tests der Kompatibilitätstest-Suite (CTS) und Der CTS Verifier prüft das WLAN. Funktion bewusst. 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
Managertests:
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 und die zugehörigen Tests werden automatisch eingeschlossen.
Die CTS-Tests können folgendermaßen ausgelöst werden:
atest SingleDeviceTest
CTS Verifier-Tests
Bei CTS Verifier-Tests wird das Verhalten von Wi‑Fi Aware mit zwei Geräten validiert: einem Testgerät und einem als fehlerfrei bekannten Gerät. Um die Tests auszuführen, öffnen Sie CTS Verifier und Gehen Sie zum Abschnitt mit dem Titel „WLAN Aware-Tests“.