Функция Wi-Fi Aware , добавленная в Android 8.0, позволяет поддерживающим устройствам обнаруживать, подключаться и устанавливать связь друг с другом (добавлена в Android 9) напрямую с использованием протокола Wi-Fi Aware без доступа к Интернету или сотовой сети. Эта функция, созданная на основе спецификации Wi-Fi Aware Wi-Fi Alliance (WFA) (версии 2.0, 3.0, 3.1 и 4.0), позволяет легко обмениваться данными с высокой пропускной способностью между доверенными устройствами и приложениями, которые в противном случае находятся вне сети.
Примеры и источник
Чтобы использовать эту функцию, производители устройств должны внедрить HAL поставщика Wi-Fi. В Android 14 и более поздних версиях интерфейс HAL поставщика определяется с помощью AIDL. Для Android 13 и более ранних версий интерфейс HAL поставщика определяется с использованием HIDL.
Следуйте указаниям интерфейса Wi-Fi, чтобы использовать функцию Wi-Fi Aware. В зависимости от того, какой интерфейс реализован, это либо:
- AIDL:
hardware/interfaces/wifi/aidl
- HIDL:
hardware/interfaces/wifi/1.2
или более поздняя версия
Вы можете обратиться к устаревшему HAL Wi-Fi, чтобы увидеть, как он соотносится с интерфейсами AIDL и HIDL: hardware/libhardware_legacy/+/main/include/hardware_legacy/wifi_nan.h .
Выполнение
Производители устройств должны обеспечить поддержку как инфраструктуры, так и HAL/прошивки:
- Рамки:
- Код АОСП
- Включить Aware: требуется как флаг функции, так и флаг сборки.
- Поддержка Wi-Fi Aware (NAN) HAL (что подразумевает поддержку прошивки)
Чтобы реализовать эту функцию, производители устройств реализуют интерфейс Wi-Fi и включают два флага функции:
В
BoardConfig.mk
илиBoardConfig-common.mk
, расположенном вdevice/<oem>/<device>
, добавьте следующий флаг:WIFI_HIDL_FEATURE_AWARE := true
В
device.mk
, расположенном вdevice/<oem>/<device>
, измените переменную средыPRODUCT_COPY_FILES
, чтобы включить поддержку функции 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 включает в себя определение диапазона между одноранговыми устройствами с использованием протокола IEEE 802.11mc, также известного как Round Trip Time (RTT). Эта подфункция Wi-Fi Aware зависит от устройства, поддерживающего функцию Wi-Fi RTT, то есть требуется, чтобы устройство поддерживало как Wi-Fi Aware, так и Wi-Fi RTT. Дополнительные сведения см. в разделе Wi-Fi RTT .
В противном случае все необходимое для этой функции включено в AOSP.
Флаг WIFI_HIDL_FEATURE_AWARE
игнорируется, если указан флаг WIFI_HAL_INTERFACE_COMBINATIONS
. Дополнительные сведения см. в разделе Параллелизм нескольких интерфейсов Wi-Fi .
Рандомизация MAC
Android требует, чтобы MAC-адрес обнаружения Wi-Fi Aware (NMI) и интерфейсов данных (NDP) был рандомизирован и не был идентичен истинному MAC-адресу устройства. MAC-адреса должны быть:
- Выбирается случайным образом при каждом включении или повторном включении Wi-Fi Aware.
Если функция Wi-Fi Aware включена, MAC-адрес должен выбираться случайным образом через регулярный интервал, настроенный параметром
NanConfigRequest.macAddressRandomizationIntervalSec
. По умолчанию платформа настроена на 30 минут.
Приостановить и возобновить
В Android 14 и более поздних версиях функция Wi-Fi Aware поддерживает возможность привилегированных приложений приостанавливать и возобновлять активные сеансы обнаружения (включая все пути к данным, связанные с этими сеансами). Поддержка этой возможности позволяет устройствам быстрее возобновлять сеансы обнаружения и потреблять меньше энергии, поскольку сеансы обнаружения можно приостановить.
Если устройство поддерживает эту возможность приостановки и возобновления, встроенное ПО приостанавливает сеанс Wi-Fi Aware, когда привилегированное приложение приостанавливает сеанс обнаружения. Когда сеанс обнаружения находится в приостановленном состоянии, устройство не передает и не получает никаких кадров для этого сеанса, включая любые активные NDP в этом сеансе. Если все сеансы обнаружения приостановлены, устройство не передает и не получает кадры Wi-Fi Aware.
Когда привилегированное приложение возобновляет приостановленный сеанс обнаружения, платформа возвращает сеанс в предыдущее состояние, включая все связанные сеансы NDP. Возобновление приостановленного сеанса обнаружения происходит быстрее, чем запуск Wi-Fi Aware и создание нового сеанса обнаружения.
Чтобы поддерживать возможность приостанавливать и возобновлять сеансы обнаружения, производители устройств должны обеспечить поддержку HAL и встроенного ПО. Подробности см. IWifiNanIface.java
.
Производители устройств могут использовать внеполосную связь (например, BLE) для синхронизации приостановки и возобновления на нескольких устройствах.
Валидация
Android предоставляет набор модульных тестов, тестов Compatibility Test Suite (CTS) и тестов CTS Verifier для проверки функции Wi-Fi Aware. Wi-Fi Aware также можно протестировать с помощью Vendor Test Suite (VTS) .
Модульные тесты
Тесты пакета Wi-Fi Aware выполняются с использованием:
Сервисные тесты:
atest com.android.server.wifi.aware
Менеджер тестирует:
atest android.net.wifi.aware
Тесты набора тестов совместимости (CTS)
Используйте тесты CTS для проверки функции Wi-Fi Aware. CTS определяет, когда эта функция включена, и автоматически включает соответствующие тесты.
Тесты CTS можно запустить с помощью:
atest SingleDeviceTest
Тесты CTS Verifier
Тесты CTS Verifier проверяют поведение Wi-Fi с использованием двух устройств: тестового устройства и заведомо исправного устройства. Чтобы запустить тесты, откройте CTS Verifier и перейдите в раздел «Тесты с поддержкой Wi-Fi».