Функция Wi-Fi Direct , также известная как Wi-Fi P2P, позволяет поддерживающим устройствам обнаруживать друг друга и подключаться друг к другу напрямую, используя протокол Wi-Fi Direct, без доступа к интернету или мобильной сети. Эта функция, основанная на спецификации Wi-Fi Direct от Wi-Fi Alliance (WFA), позволяет обмениваться высокоскоростными данными между доверенными устройствами и приложениями, которые в противном случае находятся вне сети.
Примеры и источник
Для использования этой функции производители устройств должны реализовать интерфейсы HAL поставщика Wi-Fi и запрашивающего устройства.
В Android 13 интерфейс Supplicant использует AIDL для определения HAL. В Android 14 и выше используется интерфейс Vendor HAL. В Android 12 и ниже интерфейсы Supplicant и Vendor HAL определяются с использованием HIDL.
Для использования функции Wi-Fi Direct необходимы следующие поверхности Wi-Fi HAL:
-
hardware/interfaces/wifi/aidlилиhardware/interfaces/wifi/1.3или выше -
hardware/interfaces/wifi/supplicant/aidlилиhardware/interfaces/wifi/supplicant/1.2или выше
Выполнение
Производители устройств должны обеспечивать поддержку как фреймворка, так и HAL/прошивки:
- Рамки:
- Код AOSP
- Включить Wi-Fi Direct: требуется флаг функции.
- Поддержка Wi-Fi Direct (P2P) HAL (что подразумевает поддержку прошивки)
Для реализации этой функции производители устройств должны использовать интерфейсы Wi-Fi HIDL или AIDL и включить флаг функции Wi-Fi Direct. В device.mk , расположенном в device/<oem>/<device> , измените переменную среды PRODUCT_COPY_FILES , чтобы включить поддержку функции 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
Все остальные требования для поддержки Wi-Fi Direct включены в AOSP.
рандомизация MAC
Android требует, чтобы адрес устройства и адрес интерфейса Wi-Fi Direct были случайными. Они должны отличаться от истинного MAC-адреса устройства и соответствовать следующим требованиям:
- Если постоянная группа не сохранена, адрес устройства Wi-Fi Direct должен быть рандомизирован при создании интерфейса; в противном случае адрес устройства должен продолжать использовать последний сгенерированный MAC-адрес.
- Адрес интерфейса Wi-Fi Direct, также известный как групповой адрес, должен быть рандомизирован каждый раз при установлении соединения.
Рандомизация MAC-адресов в Wi-Fi Direct реализована в 'wpa_supplicant' и управляется двумя конфигурациями: p2p_device_random_mac_addr и p2p_interface_random_mac_addr .
Для включения этой функции производители устройств должны:
- Реализуйте API Wi-Fi Supplicant
ISupplicantP2pIface::setMacRandomization. В зависимости от реализованного интерфейса это будет выглядеть следующим образом:-
hardware/interface/wifi/supplicant/1.2for HIDL -
hardware/interface/wifi/supplicant/aidlдля AIDL
-
- Установите параметр
config_wifi_p2p_mac_randomization_supportedв значение 'true' в пользовательском оверлее устройства.
Валидация
Android предоставляет набор модульных тестов, тестов совместимости (Compatibility Test Suite, CTS) и тестов проверки совместимости (CTS Verifier) для проверки функции Wi-Fi Direct. Wi-Fi Direct также можно протестировать с помощью набора тестов поставщика (Vendor Test Suite, VTS) .
модульные тесты
Проверьте работоспособность пакета Wi-Fi Direct, используя следующие тесты.
Тесты сервиса:
atest com.android.server.wifi.p2pТесты менеджера:
atest android.net.wifi.p2pТесты набора тестов на совместимость (CTS)
Используйте тесты CTS для проверки функции Wi-Fi Direct. CTS определяет, когда эта функция включена, и автоматически включает соответствующие тесты.
Для запуска тестов CTS выполните следующую команду:
atest android.net.wifi.p2p.ctsТесты CTS Verifier
Тесты CTS Verifier проверяют работу Wi-Fi Direct с помощью двух устройств: тестового устройства и заведомо исправного устройства. Для запуска тестов откройте CTS Verifier и перейдите в раздел «Тесты Wi-Fi Direct».