Функция 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), облегчает обмен высокоскоростными данными между доверенными устройствами и приложениями, которые в противном случае находятся вне сети.
Примеры и источник
Для использования этой функции производителям устройств следует реализовать интерфейс Wi-Fi Vendor HAL. В Android 14 и выше интерфейс Vendor HAL определяется с помощью AIDL. В Android 13 и ниже интерфейс Vendor HAL определяется с помощью HIDL.
Чтобы активировать функцию Wi-Fi Aware, следуйте инструкциям в интерфейсе Wi-Fi. В зависимости от используемого интерфейса, это может быть одно из следующих действий:
- AIDL:
hardware/interfaces/wifi/aidl - HIDL:
hardware/interfaces/wifi/1.2or later
Чтобы увидеть, как он соотносится с интерфейсами AIDL и HIDL, вы можете обратиться к устаревшему HAL Wi-Fi: hardware/libhardware_legacy/+/android17-release/include/hardware_legacy/wifi_nan.h .
Выполнение
Производители устройств должны обеспечивать поддержку как фреймворка, так и HAL/прошивки:
- Рамки:
- Код проекта Android Open Source Project (AOSP)
- Включение функции 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, также известного как время кругового пути (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 (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».