Поддержка Wi-Fi

Функция 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/+/android16-release/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.