Функция Wi-Fi Aware, добавленная в Android 8.0, позволяет поддерживающим устройствам обнаруживать, подключаться и определять диапазон (добавлено в Android 9) друг друга напрямую с помощью протокола Wi-Fi Aware без доступа к Интернету или сотовой сети. Эта функция, основанная на спецификации Wi-Fi Aware (версии 2.0, 3.0, 3.1 и 4.0) Wi-Fi Alliance (WFA), позволяет легко обмениваться данными с высокой пропускной способностью между доверенными устройствами и приложениями, которые в противном случае находятся вне сети.
Примеры и источник
Для использования этой функции производители устройств должны реализовать Wi-Fi Vendor HAL. В Android 14 и выше интерфейс Vendor HAL определяется с помощью AIDL. Для Android 13 и ниже интерфейс Vendor HAL определяется с помощью HIDL.
Следуйте интерфейсу Wi-Fi, чтобы использовать функцию Wi-Fi Aware. В зависимости от того, какой интерфейс реализован, это либо:
- AIDL:
hardware/interfaces/wifi/aidl
- HIDL:
hardware/interfaces/wifi/1.2
или более поздняя версия
Вы можете обратиться к устаревшему Wi-Fi HAL, чтобы увидеть, как он соотносится с интерфейсами AIDL и HIDL: hardware/libhardware_legacy/+/main/include/hardware_legacy/wifi_nan.h .
Выполнение
Производители устройств должны обеспечить поддержку как фреймворка, так и HAL/прошивки:
- Рамки:
- Код АОСП
- Включить Aware: требуются как флаг функции, так и флаг сборки.
- Поддержка HAL Wi-Fi Aware (NAN) (что подразумевает поддержку прошивки)
Для реализации этой функции производители устройств реализуют интерфейс 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 Aware с использованием двух устройств: тестового устройства и известного исправного устройства. Чтобы запустить тесты, откройте CTS Verifier и перейдите в раздел под названием Тесты Wi-Fi Aware.