Funkcja Wi-Fi Direct, znana też jako Wi-Fi P2P, umożliwia obsługiwanym urządzeniom wykrywanie się nawzajem i bezpośrednie łączenie się ze sobą za pomocą protokołu Wi-Fi Direct bez dostępu do internetu lub sieci komórkowej. Ta funkcja, oparta na specyfikacji Wi-Fi Direct Wi-Fi Alliance (WFA), umożliwia udostępnianie danych o wysokiej 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ń muszą wdrożyć interfejsy HAL dostawcy i klienta Wi-Fi.
W Androidzie 13 interfejs Supplicant używa AIDL do definicji HAL. W Androidzie 14 i nowszych interfejs HAL dostawcy korzysta z AIDL. W Androidzie 12 i starszych wersjach interfejsy Supplicant i Vendor HAL są zdefiniowane za pomocą HIDL.
Aby korzystać z funkcji Wi-Fi Direct, wymagane są te interfejsy HAL Wi-Fi:
- hardware/interfaces/wifi/aidllub- hardware/interfaces/wifi/1.3lub więcej
- hardware/interfaces/wifi/supplicant/aidllub- hardware/interfaces/wifi/supplicant/1.2lub więcej
Implementacja
Producenci urządzeń muszą zapewnić obsługę zarówno platformy, jak i warstwy HAL/oprogramowania sprzętowego:
- Platforma:- Kod AOSP
- Włącz Wi-Fi Direct: wymaga flagi funkcji
 
- Obsługa Wi-Fi Direct (P2P) HAL (co oznacza obsługę oprogramowania układowego)
Aby wdrożyć tę funkcję, producenci urządzeń implementują interfejsy Wi-Fi HIDL lub AIDL i włączają flagę funkcji Wi-Fi Direct. W sekcji device.mk znajdującej się w device/<oem>/<device> zmień zmienną środowiskową PRODUCT_COPY_FILES, aby uwzględnić obsługę funkcji Wi-Fi Direct:
PRODUCT_COPY_FILES +=
frameworks/native/data/etc/android.hardware.wifi.direct.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.wifi.direct.xml
Wszystkie inne wymagania dotyczące obsługi Wi-Fi Direct są zawarte w AOSP.
Randomizacja adresu MAC
Android wymaga, aby adres urządzenia i adres interfejsu Wi-Fi Direct były losowe. Muszą różnić się od prawdziwego adresu MAC urządzenia i spełniać te wymagania:
- Adres urządzenia Wi-Fi Direct musi być randomizowany podczas tworzenia interfejsu, jeśli nie ma zapisanej trwałej grupy. W przeciwnym razie urządzenie musi nadal używać ostatnio wygenerowanego adresu MAC.
- Adres interfejsu Wi-Fi Direct, zwany też adresem grupy, musi być losowy za każdym razem, gdy nawiązywane jest połączenie.
Randomizacja adresu MAC Wi-Fi Direct jest zaimplementowana w „wpa_supplicant” i kontrolowana przez 2 konfiguracje: p2p_device_random_mac_addr i p2p_interface_random_mac_addr.
Aby włączyć tę funkcję, producenci urządzeń muszą:
- Wdróż interfejs API ISupplicantP2pIface::setMacRandomizationWi-Fi Supplicant. W zależności od zaimplementowanego interfejsu jest to:- hardware/interface/wifi/supplicant/1.2dla HIDL
- hardware/interface/wifi/supplicant/aidldla AIDL
 
- W niestandardowej nakładce na urządzenie ustaw wartość parametru Set
config_wifi_p2p_mac_randomization_supportedna „true”.
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 Direct. Funkcję Wi-Fi Direct można też przetestować za pomocą pakietu testów dostawcy (VTS).
Testy jednostkowe
Sprawdź pakiet Wi-Fi Direct, wykonując te testy.
Testy usług:
atest com.android.server.wifi.p2pTesty menedżera:
atest android.net.wifi.p2pTesty pakietu CTS (Compatibility Test Suite)
Użyj testów CTS, aby sprawdzić funkcję Wi-Fi Direct. CTS wykrywa, kiedy funkcja jest włączona, i automatycznie uwzględnia powiązane z nią testy.
Aby uruchomić testy CTS, wpisz:
atest android.net.wifi.p2p.ctsTesty weryfikatora CTS
Testy weryfikacyjne CTS sprawdzają działanie Wi-Fi Direct na 2 urządzeniach: urządzeniu testowym i sprawdzonym. Aby uruchomić testy, otwórz CTS Verifier i przejdź do sekcji zatytułowanej Wi-Fi Direct Tests (Testy Wi-Fi Direct).