Wi-Fi 感知

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

示例和來源

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

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

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

執行

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

  • 框架:
    • AOSP代碼
    • 啟用 Aware:需要功能標誌和 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_HAL_INTERFACE_COMBINATIONS標誌,則忽略WIFI_HIDL_FEATURE_AWARE標誌。更多信息,請參見Wi-Fi多接口並發

MAC隨機化

Android 要求 Wi-Fi Aware 發現 (NMI) 和數據接口 (NDP) 的 MAC 地址是隨機的,並且不能與設備的真實 MAC 地址相同。 MAC 地址必須是:

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

驗證

Android 提供了一組單元測試、集成測試 (ACTS)、兼容性測試套件 (CTS)測試和CTS 驗證程序測試來驗證 Wi-Fi Aware 功能。 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 Aware 功能。 CTS 檢測何時啟用該功能並自動包含相關測試。

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

atest SingleDeviceTest

CTS 驗證程序測試

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