Android 8.0 新增的「Wi-Fi 感知」功能,可讓支援的裝置使用 Wi-Fi 感知通訊協定直接探索、連線及測距 (Android 9 新增),不需存取網際網路或行動網路。這項功能以 Wi-Fi 聯盟 (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/+/android16-release/include/hardware_legacy/wifi_nan.h
。
實作
裝置製造商必須提供架構和 HAL/韌體支援:
- 架構:
- Android 開放原始碼計畫程式碼
- 啟用 Aware:需要功能旗標和建構旗標
- Wi-Fi Aware (NAN) HAL 支援 (表示韌體支援)
如要實作這項功能,裝置製造商必須實作 Wi-Fi 介面,並啟用兩項功能標記:
在
device/<oem>/<device>
中的BoardConfig.mk
或BoardConfig-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 時,系統就會隨機產生 MAC 位址。
啟用 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 功能。您也可以使用供應商測試套件 (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 驗證器測試會使用兩部裝置 (測試裝置和已知良好的裝置) 驗證 Wi-Fi Aware 行為。如要執行測試,請開啟 CTS 驗證器,然後前往「Wi-Fi Aware Tests」部分。