Wi-Fi 感知

Android 8.0 中添加的Wi-Fi Aware功能使支持設備能夠直接使用 Wi-Fi Aware 協議發現、連接和範圍(在 Android 9 中添加),而無需訪問 Internet 或蜂窩網絡。此功能基於Wi-Fi 聯盟(WFA) Wi-Fi Aware 規範(版本 2.0 和 3.0),允許在受信任的設備和應用程序之間輕鬆共享高吞吐量數據,否則這些設備和應用程序將處於離線狀態。

示例和來源

要使用此功能,設備製造商應實現 Android 開源項目 (AOSP) 中提供的 Wi-Fi硬件接口設計語言 (HIDL )。 HIDL 通過指定收集到接口和包中的類型和方法調用來替換以前用於簡化實現的硬件抽象層 (HAL)結構。

按照 Wi-Fi HIDL 使用 Wi-Fi 感知功能:硬件/接口/wifi/1.2 或更高版本。 Wi-Fi Aware HAL 表面非常大; hardware/interfaces/wifi/1.2/README-NAN.md文件描述了框架當前使用的子集。

您可以參考舊版 Wi-Fi HAL 以了解它與新 HIDL 接口的關係: hardware/libhardware_legacy/+/master/include/hardware_legacy/wifi_nan.h

執行

設備製造商需要同時提供框架和 HAL/固件支持:

  • 框架:
    • AOSP 代碼
    • 啟用感知:需要功能標誌和 HIDL 構建標誌
  • Wi-Fi Aware (NAN) HAL 支持(這意味著固件支持)

為了實現此功能,設備製造商實現了 Wi-Fi HIDL 並啟用了兩個功能標誌:

  • 在位於device/<oem>/<device>BoardConfig.mkBoardConfig-common.mk中,添加以下標誌:

    WIFI_HIDL_FEATURE_AWARE := true
    
  • 在位於device/<oem>/<device>device.mk中,修改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 要求 Wi-Fi 感知發現 (NMI) 和數據接口 (NDP) 的 MAC 地址是隨機的,並且與設備的真實 MAC 地址不同。 MAC 地址必須是:

  • 每當啟用或重新啟用 Wi-Fi Aware 時隨機化。
  • 啟用 Wi-Fi Aware 後,MAC 地址必須按NanConfigRequest.macAddressRandomizationIntervalSec HIDL 參數配置的固定間隔隨機化。框架默認配置為 30 分鐘。

驗證

Android 提供了一組單元測試、集成測試 (ACTS)、兼容性測試套件 (CTS)測試和CTS 驗證程序測試來驗證 Wi-Fi 感知功能。 Wi-Fi Aware 也可以使用供應商測試套件 (VTS)進行測試。

單元測試

Wi-Fi Aware 軟件包測試使用以下命令執行:

服務測試:

atest com.android.server.wifi.aware

經理測試:

atest android.net.wifi.aware

集成測試 (ACTS)

tools/test/connectivity/acts_tests/tests/google/wifi/aware/README.md中描述的acts/sl4a測試套件提供功能、性能和壓力測試。

兼容性測試套件 (CTS) 測試

使用 CTS 測試來驗證 Wi-Fi 感知功能。 CTS 檢測何時啟用該功能並自動包含相關測試。

可以使用以下方式觸發 CTS 測試:

atest SingleDeviceTest

CTS 驗證程序測試

CTS 驗證程序測試使用兩個設備驗證 Wi-Fi 感知行為:一個測試設備和一個已知良好的設備。要運行測試,請打開 CTS 驗證程序並導航到標題為 Wi-Fi 感知測試的部分。