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
lubBoardConfig-common.mk
w lokalizacjidevice/<oem>/<device>
dodaj tę flagę:WIFI_HIDL_FEATURE_AWARE := true
W regionie
device.mk
w regioniedevice/<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.