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 (dodane w Androidzie 9) bezpośrednio za pomocą protokołu Wi-Fi Aware bez dostępu do internetu ani 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), ułatwia udostępnianie danych o dużej przepustowości między zaufanymi urządzeniami i aplikacjami, które w przeciwnym razie nie byłyby połączone z siecią.
Szczegółowy opis architektury Wi-Fi Aware w Androidzie 17 i nowszych wersjach znajdziesz w artykule Architektura Wi-Fi Aware.
Przykłady i źródło
Aby korzystać z tej funkcji, producenci urządzeń powinni zaimplementować HAL dostawcy Wi-Fi. W Androidzie 14 i nowszych wersjach interfejs HAL dostawcy jest zdefiniowany za pomocą AIDL. W Androidzie 13 i starszych wersjach interfejs HAL dostawcy jest zdefiniowany za pomocą HIDL.
Aby korzystać z funkcji Wi-Fi Aware, postępuj zgodnie z instrukcjami dotyczącymi interfejsu 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.2lub nowszy
Aby sprawdzić, jak starszy HAL Wi-Fi jest powiązany z interfejsami
AIDL i HIDL,
hardware/libhardware_legacy/+/android17-release/include/hardware_legacy/wifi_nan.h.
Implementacja
Producenci urządzeń muszą zapewnić obsługę zarówno platformy, jak i HAL/oprogramowania układowego:
- Platforma:
- kod projektu Android Open Source (AOSP)
- Włączanie funkcji Aware: wymaga flagi funkcji i flagi kompilacji.
- Obsługa HAL Wi-Fi Aware (NAN) (co oznacza obsługę oprogramowania układowego).
Aby zaimplementować tę funkcję, producenci urządzeń muszą zaimplementować interfejs Wi-Fi i włączyć 2 flagi funkcji:
W
BoardConfig.mklubBoardConfig-common.mkznajdującym się wdevice/<oem>/<device>dodaj tę flagę:WIFI_HIDL_FEATURE_AWARE := trueW
device.mkznajdującym się wdevice/<oem>/<device>zmodyfikuj 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 określanie odległości do urządzeń równorzędnych za pomocą protokołu IEEE 802.11mc, znanego też jako Round Trip Time (RTT). Ta podfunkcja Wi-Fi Aware jest warunkowa i zależy od tego, czy urządzenie obsługuje funkcję Wi-Fi RTT. Oznacza to, że urządzenie musi obsługiwać zarówno Wi-Fi Aware, jak i Wi-Fi RTT. Więcej informacji znajdziesz w artykule Wi-Fi RTT.
Wszystko, co jest potrzebne do korzystania z tej funkcji, jest zawarte w AOSP.
Jeśli określono flagę WIFI_HAL_INTERFACE_COMBINATIONS, flaga WIFI_HIDL_FEATURE_AWARE jest ignorowana. 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ł randomizowany i nie był identyczny z prawdziwym adresem MAC urządzenia. Adresy MAC muszą być:
- randomizowane za każdym razem, gdy Wi-Fi Aware jest włączane lub włączane ponownie;
gdy Wi-Fi Aware jest włączone, adres MAC musi być randomizowany w regularnych odstępach czasu skonfigurowanych przez parametr
NanConfigRequest.macAddressRandomizationIntervalSec. Domyślnie jest to 30 minut.
Zawieszanie i wznawianie
W Androidzie 14 i nowszych wersjach Wi-Fi Aware umożliwia aplikacjom z uprawnieniami zawieszanie i wznawianie aktywnych sesji wykrywania (w tym wszystkich ścieżek danych powiązanych z tymi sesjami). Obsługa tej funkcji umożliwia urządzeniom szybsze wznawianie sesji wykrywania i zużywanie mniejszej ilości energii, ponieważ sesje wykrywania można zawiesić.
Jeśli urządzenie obsługuje funkcję zawieszania i wznawiania, oprogramowanie układowe zawiesza sesję Wi-Fi Aware, gdy aplikacja z uprawnieniami zawiesza sesję wykrywania. Gdy sesja wykrywania jest zawieszona, urządzenie nie przesyła ani nie odbiera żadnych ramek dla tej sesji, 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 uprawnieniami wznawia zawieszoną sesję wykrywania, platforma przywraca sesję do poprzedniego stanu, w tym wszystkie powiązane sesje NDP. Wznawianie zawieszonej sesji wykrywania jest szybsze niż włączanie Wi-Fi Aware i tworzenie nowej sesji wykrywania.
Aby obsługiwać funkcję zawieszania i wznawiania sesji wykrywania, producenci urządzeń muszą zapewnić obsługę HAL i oprogramowania układowego. Więcej informacji znajdziesz w pliku
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 weryfikowania funkcji Wi-Fi Aware. Wi-Fi Aware można też testować za pomocą Vendor Test Suite (VTS).
Testy jednostkowe
Testy pakietu Wi-Fi Aware są wykonywane za pomocą tych narzędzi:
Testy usługi:
atest com.android.server.wifi.awareTesty menedżera:
atest android.net.wifi.awareTesty Compatibility Test Suite (CTS)
Do weryfikowania funkcji Wi-Fi Aware używaj testów CTS. CTS wykrywa, kiedy funkcja jest włączona, i automatycznie uwzględnia powiązane testy.
Testy CTS można uruchamiać za pomocą tych narzędzi:
atest SingleDeviceTestTesty CTS Verifier
Testy CTS Verifier weryfikują 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).