Wi-Fi Direct功能也稱為 Wi-Fi P2P,可讓支援設備使用 Wi-Fi Direct 協定直接發現並相互連接,而無需存取互聯網或蜂窩網路。此功能基於Wi-Fi 聯盟(WFA) Wi-Fi Direct 規範構建,允許在離線的受信任設備和應用程式之間共享高吞吐量資料。
範例和來源
要使用此功能,設備製造商必須實作 Wi-Fi 供應商和請求者 HAL 介面。
在 Android 13 中,請求者介面使用 AIDL 進行 HAL 定義。在 Android 14 及更高版本中,供應商 HAL 介面使用 AIDL。在 Android 12 及更低版本中,請求者和供應商 HAL 介面是使用 HIDL 定義的。
使用 Wi-Fi Direct 功能需要以下 Wi-Fi HAL 表面:
-
hardware/interfaces/wifi/aidl
或hardware/interfaces/wifi/1.3
或更高版本 hardware/interfaces/wifi/supplicant/aidl
或hardware/interfaces/wifi/supplicant/1.2
或更高版本
執行
設備製造商需要提供框架和HAL/韌體支援:
- 框架:
- AOSP程式碼
- 啟用 Wi-Fi Direct:需要功能標誌
- Wi-Fi Direct (P2P) HAL 支援(這意味著韌體支援)
為了實現此功能,設備製造商實施 Wi-Fi HIDL 或 AIDL 介面並啟用 Wi-Fi Direct 的功能標誌。在位於device/<oem>/<device>
的device.mk
中,修改PRODUCT_COPY_FILES
環境變數以包含 Wi-Fi Direct 功能的支援:
```
PRODUCT_COPY_FILES +=
frameworks/native/data/etc/android.hardware.wifi.direct.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.wifi.direct.xml
```
支援 Wi-FI Direct 的所有其他要求均包含在 AOSP 中。
MAC隨機化
Android 要求 Wi-Fi Direct裝置位址和介面位址是隨機的。它們必須與設備的真實MAC位址不同,並且必須滿足以下要求:
- 如果沒有保存持久組,則 Wi-Fi Direct 設備位址必須在建立介面時隨機化;否則設備位址必須繼續使用最後產生的 MAC 位址。
- Wi-Fi Direct 介面位址也稱為群組位址,每次建立連線時都必須隨機化。
Wi-Fi Direct MAC 隨機化在「wpa_supplicant」中實現,並由兩個配置控制: p2p_device_random_mac_addr
和p2p_interface_random_mac_addr
。
若要啟用此功能,設備製造商必須:
- 實作 Wi-Fi 請求方
ISupplicantP2pIface::setMacRandomization
API。根據實現的接口,它位於:- HIDL 的
hardware/interface/wifi/supplicant/1.2
- AIDL 的
hardware/interface/wifi/supplicant/aidl
- HIDL 的
- 在裝置自訂覆蓋中將
config_wifi_p2p_mac_randomization_supported
設定為「true」。
驗證
Android 提供了一組單元測試、整合測試(Android 連線測試套件或 ACTS)、相容性測試套件 (CTS)測試和CTS 驗證程式測試來驗證 Wi-Fi Direct 功能。也可以使用供應商測試套件 (VTS)來測試 Wi-Fi Direct。
單元測試
使用以下測試驗證 Wi-Fi Direct 套件。
服務測試:
atest com.android.server.wifi.p2p
經理測試:
atest android.net.wifi.p2p
整合測試(ACTS)
ACTS Wi-FI Direct 測試套件位於tools/test/connectivity/acts_tests/tests/google/wifi/p2p
,實現 Wi-Fi Direct 的功能測試。
相容性測試套件 (CTS) 測試
使用 CTS 測試來驗證 Wi-Fi Direct 功能。 CTS 偵測何時啟用該功能並自動包含相關測試。
若要觸發 CTS 測試,請執行:
% atest android.net.wifi.p2p.cts
CTS 驗證程式測試
CTS Verifier 測試使用兩個裝置來驗證 Wi-Fi Direct 行為:測試裝置和已知良好的裝置。若要執行測試,請開啟 CTS Verifier 並導覽至標題為 Wi-Fi Direct 測試的部分。