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 和 4.0)構建,允許在離線的受信任設備和應用程式之間輕鬆共享高吞吐量資料。

範例和來源

若要使用此功能,設備製造商應實施 Wi-Fi 供應商 HAL。在 Android 14 及更高版本中,Vendor HAL 介面是使用 AIDL 定義的。對於 Android 13 及更低版本,供應商 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/+/main/include/hardware_legacy/wifi_nan.h

執行

設備製造商需要提供框架和HAL/韌體支援:

  • 框架:
    • AOSP代碼
    • 啟用感知:需要功能標誌和建構標誌
  • Wi-Fi Aware (NAN) HAL 支援(這表示韌體支援)

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

  • 在位於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參數配置的定期間隔隨機化 MAC 位址。框架預設將其配置為 30 分鐘。

暫停和恢復

在 Android 14 及更高版本中,Wi-Fi Aware 支援特權應用程式暫停和復原活動發現工作階段(包括與這些會話相關的所有資料路徑)的功能。支援此功能可讓裝置更快地恢復發現會話並使用更少的電量,因為發現會話可以暫停。

如果裝置支援此暫停和復原功能,則當特權應用程式暫停發現工作階段時,韌體會暫停 Wi-Fi Aware 工作階段。當發現會話處於掛起狀態時,裝置不會傳輸或接收該會話的任何幀,包括該會話中的任何活動 NDP。如果所有發現會話都暫停,裝置將不會傳輸或接收任何 Wi-Fi Aware 訊框。

當特權應用程式恢復掛起的發現會話時,框架會將會話返回到其先前的狀態,包括所有關聯的 NDP 會話。恢復暫停的發現會話比啟動 Wi-Fi Aware 和建立新的發現會話更快。

為了支援暫停和恢復發現會話的功能,設備製造商必須提供 HAL 和韌體支援。有關詳細信息,請參閱IWifiNanIface.java

設備製造商可以使用帶外通訊(例如 BLE)來同步多個裝置上的掛起和復原。

驗證

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 感知測試」的部分。