Wi-Fi

Funkcja Wi-Fi Aware w Androidzie 8.0 umożliwia zgodnym urządzeniom wykrywanie, łączenie się z innymi urządzeniami i łączenie się z nimi (w Androidzie 9) bezpośrednio za pomocą protokołu Wi-Fi Aware bez dostępu do internetu ani sieci komórkowej. Ta funkcja, opracowana na podstawie specyfikacji Wi-Fi Aware (w wersji 2.0, 3.0, 3.1 i 4.0) Wi-Fi Alliance (WFA), umożliwia łatwe udostępnianie dużej przepustowości danych 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 wdrożyć HAL dostawcy sieci Wi-Fi. W Androidzie 14 i nowszych interfejs HAL dostawcy jest definiowany za pomocą AIDL. W Androidzie 13 i starszych wersjach interfejs HAL dostawcy jest definiowany za pomocą HIDL.

Postępuj zgodnie z instrukcjami w interfejsie Wi-Fi, aby zastosować funkcję Wi-Fi Aware. 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

Możesz skorzystać ze starszej wersji Wi-Fi HAL, aby sprawdzić, jak ta funkcja jest powiązana z interfejsami 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:

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

Aby włączyć tę funkcję, producenci implementują interfejs Wi-Fi i dodają 2 flagi funkcji:

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

    WIFI_HIDL_FEATURE_AWARE := true
    
  • W regionie device.mk w regionie device/<oem>/<device> zmodyfikuj zmienną środowiskową PRODUCT_COPY_FILES, by 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 zasięgiem urządzeń równorzędnych korzystających z protokołu IEEE 802.11mc, który jest też nazywany czasem w pobliżu (RTT). Ta podfunkcja Wi-Fi Aware jest uzależniona od urządzenia obsługującego funkcję RTT Wi-Fi, 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 przeciwnym razie wszystkie dane wymagane przez tę funkcję są uwzględnione w raporcie 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 o współbieżności wielu interfejsów Wi-Fi.

randomizacja MAC

Android wymaga, aby adres MAC wykrywania Wi-Fi Aware (NMI) i interfejsów danych (NDP) był randomizowany i nie był taki sam jak prawdziwy adres MAC urządzenia. Adresy MAC muszą być:

  • Losowe przy każdym włączeniu lub ponownym włączeniu Wi-Fi Aware.
  • Gdy funkcja Wi-Fi Aware jest włączona, adres MAC musi być randomizowany z regularnym przedziałem czasu skonfigurowanym za pomocą parametru NanConfigRequest.macAddressRandomizationIntervalSec. Domyślnie ten czas jest skonfigurowany przez platformę na 30 minut.

Zawieś i wznów

W Androidzie 14 i nowszych Wi-Fi Aware umożliwia aplikacjom z podwyższonymi uprawnieniami zawieszanie i wznawianie aktywnych sesji wykrywania (w tym wszystkich ścieżek danych powiązanych z tymi sesjami). Pozwala to urządzeniom szybciej wznawiać sesje wykrywania i zużywać mniej energii, ponieważ sesje wykrywania mogą zostać zawieszone.

Jeśli urządzenie obsługuje tę możliwość zawieszania i wznawiania, oprogramowanie układowe zawiesi sesję Wi-Fi Aware, gdy aplikacja z podwyższonymi uprawnieniami zawiesi sesję wykrywania. 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 ułatwić zawieszanie i wznawianie sesji wykrywania, producenci urządzeń muszą zapewniać obsługę HAL i oprogramowania układowego. Więcej informacji: IWifiNanIface.java.

Producenci urządzeń mogą używać komunikacji spoza zakresu (np. BLE) do synchronizowania zawieszenia 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. Subskrypcję Wi-Fi Aware możesz też przetestować za pomocą pakietu Vendor Test Suite (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 aktywować za pomocą:

atest SingleDeviceTest

Testy weryfikatora CTS

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