Wi-Fi 偵測

Android 8.0 新增的 Wi-Fi Aware 功能可讓支援的裝置直接使用 Wi-Fi Aware 通訊協定,在沒有網際網路或行動網路存取權的情況下,彼此探索、連線和測試範圍 (Android 9 新增)。這項功能建構於 Wi-Fi Alliance (WFA) Wi-Fi Aware 規格 (2.0、3.0、3.1 和 4.0 版) 之上,可讓信任的裝置和應用程式在離線時,輕鬆分享高傳輸量資料。

範例和來源

如要使用這項功能,裝置製造商應實作 Wi-Fi 供應商 HAL。在 Android 14 以上版本中,供應商 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/韌體支援:

  • 架構:
    • Android 開放原始碼計畫程式碼
    • 啟用「Aware」:必須同時使用功能旗標和版本旗標
  • 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

在其他情況下,Android 開放原始碼計畫已納入這項功能所需的一切資訊。

如果指定 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 提供一組單元測試、Compatibility Test Suite (CTS) 測試和 CTS Verifier 測試來驗證 Wi-Fi 感知功能。您也可以使用供應商測試套件 (VTS) 來測試 Wi-Fi Aware。

單元測試

Wi-Fi Aware 套件測試會使用以下方式執行:

服務測試:

atest com.android.server.wifi.aware

管理員測試:

atest android.net.wifi.aware

Compatibility Test Suite (CTS) 測試

使用 CTS 測試驗證 Wi-Fi Aware 功能。CTS 會偵測功能啟用時間,並自動納入相關測試。

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

atest SingleDeviceTest

CTS 驗證工具測試

CTS Verifier 測試會使用兩部裝置驗證 Wi-Fi Aware 行為:測試裝置和已知良好的裝置。如要執行測試,請開啟 CTS Verifier,然後前往「Wi-Fi Aware 測試」專區。