Wi-Fi Aware

Funkcja Wi-Fi Aware dodana w Androidzie 8.0 umożliwia obsługiwanym urządzeniom wykrywanie się nawzajem, łączenie się ze sobą i określanie odległości (funkcja dodana w Androidzie 9) bezpośrednio przy użyciu protokołu Wi-Fi Aware bez dostępu do internetu lub sieci komórkowej. Ta funkcja, oparta na specyfikacji Wi-Fi Aware (wersje 2.0, 3.0, 3.1 i 4.0) opracowanej przez Wi-Fi Alliance (WFA), umożliwia łatwe udostępnianie danych o dużej przepustowości między zaufanymi urządzeniami i aplikacjami, które w inny sposób nie są połączone z siecią.

Przykłady i źródło

Aby korzystać z tej funkcji, producenci urządzeń powinni wdrożyć Wi-Fi Vendor HAL. W Androidzie 14 i nowszych interfejs HAL dostawcy jest zdefiniowany za pomocą AIDL. Na Androidzie 13 lub starszym interfejs HAL dostawcy jest zdefiniowany za pomocą HIDL.

Aby skorzystać z funkcji Wi-Fi Aware, postępuj zgodnie z instrukcjami w interfejsie Wi-Fi. W zależności od tego, który interfejs jest zaimplementowany, może to być:

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

Możesz zapoznać się z starszą wersją HAL Wi-Fi, aby zobaczyć, jak jest ona powiązana z interfejsami AIDL i HIDL:hardware/libhardware_legacy/+/android16-release/include/hardware_legacy/wifi_nan.h.

Implementacja

Producenci urządzeń muszą zapewnić obsługę zarówno platformy, jak i warstwy HAL/oprogramowania sprzętowego:

  • Platforma:
    • Kod AOSP
    • Włączanie funkcji Aware: wymaga flagi funkcji i flagi kompilacji
  • Obsługa warstwy HAL Wi-Fi Aware (NAN) (co oznacza obsługę oprogramowania układowego)

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

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

    WIFI_HIDL_FEATURE_AWARE := true
    
  • W pliku device.mk znajdującym się 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ń równorzędnych za pomocą protokołu IEEE 802.11mc, znanego też jako Round Trip Time (RTT). Ta funkcja podrzędna Wi-Fi Aware jest dostępna pod warunkiem, że urządzenie obsługuje funkcję Wi-Fi RTT, czyli musi obsługiwać zarówno Wi-Fi Aware, jak i Wi-Fi RTT. Więcej informacji znajdziesz w artykule Wi-Fi RTT.

W przeciwnym razie wszystko, co jest potrzebne do korzystania z tej funkcji, jest zawarte w AOSP.

Flaga WIFI_HIDL_FEATURE_AWARE jest ignorowana, jeśli określono flagę WIFI_HAL_INTERFACE_COMBINATIONS. Więcej informacji znajdziesz w artykule Współbieżność wielu interfejsów Wi-Fi.

Randomizacja adresu MAC

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

  • Losowy, gdy Wi-Fi Aware jest włączone lub ponownie włączone.
  • Gdy funkcja Wi-Fi Aware jest włączona, adres MAC musi być randomizowany w regularnych odstępach czasu skonfigurowanych przez parametr NanConfigRequest.macAddressRandomizationIntervalSec. Domyślnie jest on ustawiony przez platformę na 30 minut.

Wstrzymywanie i wznawianie

W Androidzie 14 i nowszych wersjach Wi-Fi Aware umożliwia uprzywilejowanym aplikacjom wstrzymywanie i wznawianie aktywnych sesji wykrywania (w tym wszystkich ścieżek danych powiązanych z tymi sesjami). Obsługa tej funkcji pozwala urządzeniom szybciej wznawiać sesje wykrywania i zużywać mniej energii, ponieważ sesje wykrywania można wstrzymywać.

Jeśli urządzenie obsługuje funkcję wstrzymywania i wznawiania, oprogramowanie wstrzymuje sesję Wi-Fi Aware, gdy uprzywilejowana aplikacja wstrzymuje sesję wykrywania. Gdy sesja wykrywania jest w stanie zawieszenia, urządzenie nie przesyła ani nie odbiera żadnych ramek w ramach tej sesji, w tym żadnych aktywnych protokołów NDP. Jeśli wszystkie sesje wykrywania zostaną zawieszone, urządzenie nie będzie transmitować ani odbierać żadnych ramek Wi-Fi Aware.

Gdy aplikacja z uprawnieniami wznawia zawieszoną sesję wykrywania, platforma przywraca sesję 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 obsługiwać możliwość wstrzymywania i wznawiania sesji wykrywania, 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 służą do weryfikacji funkcji Wi-Fi Aware. Technologię Wi-Fi Aware można też przetestować za pomocą pakietu testów dostawcy (VTS).

Testy jednostkowe

Testy pakietu Wi-Fi Aware są wykonywane za pomocą:

Testy usług:

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ć funkcję Wi-Fi Aware. CTS wykrywa, kiedy funkcja jest włączona, i automatycznie uwzględnia powiązane testy.

Testy CTS można uruchamiać za pomocą tych metod:

atest SingleDeviceTest

Testy weryfikatora CTS

Testy weryfikacyjne CTS sprawdzają działanie Wi-Fi Aware na 2 urządzeniach: urządzeniu testowym i sprawdzonym urządzeniu. Aby uruchomić testy, otwórz CTS Verifier i przejdź do sekcji Wi-Fi Aware Tests (Testy Wi-Fi Aware).