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

Функция 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.2 or 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».