Wi-Fi Aware

Wi-Fi Aware funkcja dodana w Androidzie 8.0 pozwala współpracującym z nim urządzeniom wykrywać, łączyć się i zakres (dodany w Androidzie 9) bezpośrednio do siebie korzystając z protokołu Wi-Fi Aware, bez dostępu do internetu ani sieci komórkowej. Ten funkcja opracowana na zlecenie Wi-Fi Alliance (WFA) Specyfikacja Wi-Fi Aware (wersje 2.0, 3.0, 3.1 i 4.0) umożliwia łatwe udostępnianie danych z dużą przepustowością wśród zaufanych urządzeń i aplikacji, które są poza siecią.

Przykłady i źródło

Aby korzystać z tej funkcji, producenci urządzeń powinni wdrożyć HAL dostawcy sieci Wi-Fi. Na Androidzie 14 i nowszych interfejs HAL dostawcy jest zdefiniowany przy użyciu AIDL. W przypadku systemu Android 13 lub starszego interfejs HAL dostawcy jest definiowany za pomocą HIDL.

Aby korzystać z funkcji Wi-Fi Aware, postępuj zgodnie z instrukcjami w interfejsie Wi-Fi. W zależności od tego, który interfejs został zaimplementowany, będzie to:

  • AIDL: hardware/interfaces/wifi/aidl
  • HIDL: hardware/interfaces/wifi/1.2 lub później

Starsza wersja HAL Wi-Fi pozwala sprawdzić, jak ma się ona do Interfejsy AIDL i HIDL: hardware/libhardware_legacy/+/main/include/hardware_legacy/wifi_nan.h.

Implementacja

Producenci urządzeń muszą zapewnić zarówno wsparcie w zakresie platformy, jak i HAL/oprogramowania układowego:

  • Framework:
    • Kod AOSP
    • Enable Aware: wymaga flagi funkcji i flagi kompilacji.
  • Obsługa interfejsu HAL Wi-Fi Aware (NAN) (co oznacza obsługę oprogramowania układowego)

Aby wdrożyć tę funkcję, producenci urządzeń muszą wdrożyć interfejs Wi-Fi i włączyć 2 flagi funkcji:

  • W elementach BoardConfig.mk lub BoardConfig-common.mk w pliku device/<oem>/<device> dodaj tę flagę:

    WIFI_HIDL_FEATURE_AWARE := true
    
  • W pliku device.mk w folderze device/<oem>/<device> zmień zmienną środowiskową PRODUCT_COPY_FILES, aby uwzględnić obsługę funkcji Wi-Fi Aware:

    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 obejmuje wiele urządzeń równorzędnych z protokołem IEEE 802.11mc, czasu RTT. Ta podfunkcja Wi-Fi Aware jest uzależniona od tego, czy urządzenie obsługuje funkcję Wi-Fi RTT, czyli czy obsługuje zarówno Wi-Fi Aware, jak i Wi-Fi RTT. Więcej informacji: RTT Wi-Fi.

W przeciwnym razie wszystkie dane wymagane przez tę funkcję są uwzględnione w raporcie AOSP.

Flaga WIFI_HIDL_FEATURE_AWARE jest ignorowana, jeśli WIFI_HAL_INTERFACE_COMBINATIONS flaga. Więcej informacji: Współbieżność wielu interfejsów Wi-Fi.

losowe generowanie adresów MAC.

Android wymaga adresu MAC wykrywania Wi-Fi Aware (NMI) i danych interfejsów (NDP) w losowy sposób i nie mogą być identyczne z prawdziwym adresem MAC. od urządzenia. Adresy MAC muszą być:

  • losowo, gdy włączysz lub ponownie włączysz Wi-Fi Aware;
  • Gdy funkcja Wi-Fi Aware jest włączona, adres MAC musi być randomizowany interwał skonfigurowany przez NanConfigRequest.macAddressRandomizationIntervalSec. Domyślnie framework konfiguruje ten parametr na 30 minut.

Wstrzymywanie i wznawianie

Na Androidzie 14 i nowszych, Wi-Fi Aware obsługuje możliwość zawieszania i wznawiania aktywnych sesji wykrywania przez aplikacje z podwyższonymi uprawnieniami (w tym wszystkie ścieżki danych powiązane z tymi sesjami). Dzięki tej funkcji urządzenia mogą szybciej wznowić sesje wyszukiwania i zużywać mniej energii, ponieważ sesje wyszukiwania mogą być zawieszone.

Jeśli urządzenie obsługuje tę funkcję wstrzymywania i wznawiania, oprogramowanie zawiesza sesję Wi-Fi Aware, gdy aplikacja z przywilejami zawiesza sesję wyszukiwania. Gdy sesja wykrywania jest zawieszona, urządzenie nie przesyła ani otrzymać żadnych klatek w tej sesji, w tym aktywnych NDP w tej sesji. . Jeśli wszystkie sesje wykrywania są zawieszone, urządzenie nie transmituje ani nie odbiera żadnych ramek Wi-Fi Aware.

Gdy aplikacja z podwyższonymi uprawnieniami wznowi zawieszoną sesję wykrywania, platforma przywraca sesję do poprzedniego stanu, w tym wszystkich powiązanych NDP sesji. Wznowienie zawieszonej sesji wyszukiwania jest szybsze niż wywołanie Wi-Fi Aware i utworzenie nowej sesji wyszukiwania.

Aby umożliwić zawieszanie i wznawianie sesji wykrywania, urządzenie producenci muszą zapewniać pomoc techniczną dotyczącą HAL i oprogramowania. Więcej informacji: IWifiNanIface.java

Producenci urządzeń mogą używać komunikacji zewnętrznej (np. BLE), aby synchronizować zawieszenia i wznawianie na wielu urządzeniach.

Weryfikacja

Android udostępnia zestaw testów jednostkowych, testów Compatibility Test Suite (CTS) i testów CTS Verifier, aby sprawdzić poprawność funkcji Wi-Fi Aware. Wi-Fi Aware można też przetestować za pomocą pakietu testów dostawcy (VTS).

Testy jednostkowe

Testy pakietu Wi-Fi Aware są wykonywane przy użyciu:

Testy usługi:

atest com.android.server.wifi.aware

Testy menedżera:

atest android.net.wifi.aware

testy Compatibility Test Suite (CTS),

Użyj testów CTS, aby sprawdzić działanie funkcji Wi-Fi Aware. CTS wykrywa, kiedy funkcja jest włączona i automatycznie uwzględnia powiązane testy.

Testy CTS można wywołać za pomocą:

atest SingleDeviceTest

Testy weryfikatora CTS

Weryfikator CTS weryfikuje zachowanie Wi-Fi Aware na 2 urządzeniach: i urządzenia znanego dobrego. Aby uruchomić testy, otwórz narzędzie CTS Verifier i przejdź do sekcji Testy rozpoznania Wi-Fi.