Wi-Fi Aware

Funkcja Wi-Fi Aware, dodana w Androidzie 8.0, umożliwia urządzeniom obsługującym tę funkcję wykrywanie innych urządzeń, nawiązywanie z nimi połączenia i wyznaczanie ich zasięgu (dodano w Androidzie 9) bezpośrednio za pomocą protokołu Wi-Fi Aware bez dostępu do internetu lub sieci komórkowej. Ta funkcja oparta na specyfikacji Wi-Fi Alliance (WFA) Wi-Fi Aware (w wersjach 2.0, 3.0, 3.1 i 4.0) umożliwia łatwe udostępnianie danych o dużej przepustowości między zaufanymi urządzeniami i aplikacjami, które są poza siecią.

Przykłady i źródło

Aby korzystać z tej funkcji, producenci urządzeń powinni zaimplementować interfejs HAL dostawcy Wi-Fi. W Androidzie 14 i nowszych interfejs HAL dostawcy jest definiowany za pomocą 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 zaimplementowanego interfejsu może to być:

  • AIDL: hardware/interfaces/wifi/aidl
  • HIDL: hardware/interfaces/wifi/1.2 lub nowsza

Aby sprawdzić, jak starsza wersja interfejsu HAL Wi-Fi koreluje z interfejsami AIDL i HIDL, możesz zapoznać się ze starszą wersją interfejsu HAL Wi-Fi: hardware/libhardware_legacy/+/main/include/hardware_legacy/wifi_nan.h.

Implementacja

Producenci urządzeń muszą zapewnić obsługę zarówno frameworku, jak i HAL/firmware:

  • 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ą zaimplementować 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 pomiar odległości do urządzeń peerów za pomocą protokołu IEEE 802.11mc, znanego również jako czas dojścia i powrotu (RTT). Ta funkcja podrzędna Wi-Fi Aware jest zależna od urządzenia obsługującego funkcję Wi-Fi RTT, co oznacza, że urządzenie musi obsługiwać zarówno Wi-Fi Aware, jak i Wi-Fi RTT. Więcej informacji znajdziesz w sekcji Wi-Fi RTT.

W innych przypadkach wszystko, czego potrzeba do obsługi tej funkcji, jest zawarte w AOSP.

Jeśli została określona flaga WIFI_HAL_INTERFACE_COMBINATIONS, flaga WIFI_HIDL_FEATURE_AWARE jest ignorowana. Więcej informacji znajdziesz w artykule Wi-Fi: równoczesna obsługa wielu interfejsów.

losowe generowanie adresów MAC.

Android wymaga, aby adres MAC interfejsu wykrywania Wi-Fi Aware (NMI) i interfejsów danych (NDP) był losowy i nie identyczny z prawdziwym adresem MAC urządzenia. Adresy MAC muszą być:

  • losowo, gdy włączysz lub ponownie włączysz Wi-Fi Aware;
  • Gdy włączona jest funkcja Wi-Fi Aware, adres MAC musi być losowo generowany w regularnych odstępach czasu określonych przez parametr NanConfigRequest.macAddressRandomizationIntervalSec. Domyślnie framework konfiguruje ten parametr na 30 minut.

Wstrzymywanie i wznawianie

W Androidzie 14 i nowszych funkcja Wi-Fi Aware umożliwia aplikacjom uprzywilejowanym zawieszanie i wznawianie aktywnych sesji wykrywania (w tym wszystkich ścieżek danych powiązanych z tymi sesjami). Dzięki tej funkcji urządzenia mogą szybciej wznawiać sesje wyszukiwania i korzystać z mniejszej ilości energii, ponieważ sesje wyszukiwania mogą być zawieszane.

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 nie odbiera w niej żadnych klatek, w tym żadnych aktywnych NDP w tej sesji. Jeśli wszystkie sesje wykrywania są zawieszone, urządzenie nie przesyła ani nie odbiera żadnych ramek Wi-Fi Aware.

Gdy aplikacja z podwyższonymi uprawnieniami wznowi zawieszoną sesję wykrywania, platforma przywróci ją do poprzedniego stanu, w tym wszystkie powiązane sesje NDP. Wznowienie zawieszonej sesji wykrywania jest szybsze niż włączenie Wi-Fi Aware i utworzenie nowej sesji wykrywania.

Aby umożliwić zawieszanie i wznawianie sesji wyszukiwania, producenci urządzeń muszą zapewnić obsługę HAL i oprogramowania układowego. Więcej informacji znajdziesz w sekcji IWifiNanIface.java.

Producenci urządzeń mogą używać komunikacji poza pasmem (np. BLE) do synchronizowania zawieszania i wznawiania na wielu urządzeniach.

Weryfikacja

Android udostępnia zestaw testów jednostkowych, testów Compatibility Test Suite (CTS) i testów CTS Verifier, które pozwalają zweryfikować działanie 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 zweryfikować funkcję Wi-Fi Aware. CTS wykrywa, kiedy funkcja jest włączona, i automatycznie uwzględnia powiązane testy.

Testy CTS można aktywować za pomocą:

atest SingleDeviceTest

Testy weryfikatora CTS

Testy CTS Verifier weryfikują działanie Wi-Fi Aware za pomocą 2 urządzeń: testowego i sprawdzonego. Aby przeprowadzić testy, otwórz narzędzie CTS Verifier i przejdź do sekcji Wi-Fi Aware Tests.