Wi-Fi Direct功能,也稱為 Wi-Fi P2P,允許支持設備使用 Wi-Fi Direct 協議直接發現並連接到另一設備,而無需訪問 Internet 或蜂窩網絡。此功能基於Wi-Fi 聯盟(WFA) Wi-Fi Direct 規範,允許在受信任的設備和應用程序之間共享高吞吐量數據,否則這些設備和應用程序將處於離線狀態。
示例和來源
要使用此功能,設備製造商必須實現 Android 開源項目 (AOSP) 中提供的 Wi-Fi硬件接口設計語言 (HIDL )。 HIDL 通過指定收集到接口和包中的類型和方法調用來替換以前用於簡化實現的硬件抽象層 (HAL)結構。
使用 Wi-Fi Direct 功能需要以下 Wi-Fi HAL 表面:+ hardware/interfaces/wifi/1.3
或更高版本 + hardware/interfaces/wifi/supplicant/1.2
或更高版本
執行
設備製造商需要同時提供框架和 HAL/固件支持:
- 框架:
- AOSP 代碼
- 啟用 Wi-Fi Direct:需要功能標誌
- Wi-Fi Direct (P2P) HAL 支持(這意味著固件支持)
為實現此功能,設備製造商實施 Wi-Fi HIDL 並為 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
兩種配置控制。
要啟用此功能,設備製造商必須: + 在hardware/interface/wifi/supplicant/1.2
中實現 Wi-Fi Supplicant HIDL API ISupplicantP2pIface::setMacRandomization
。
- 在設備自定義覆蓋
config_wifi_p2p_mac_randomization_supported
設置為“true”。
驗證
Android 提供了一組單元測試、集成測試(Android 連接測試套件或 ACTS)、兼容性測試套件 (CTS)測試和CTS 驗證器測試來驗證 Wi-Fi Direct 功能。 Wi-Fi Direct 也可以使用供應商測試套件 (VTS)進行測試。
單元測試
使用以下測試驗證 Wi-Fi Direct 包。
服務測試:
atest com.android.server.wifi.p2p
經理測試:
atest android.net.wifi.p2p
集成測試 (ACTS)
位於tools/test/connectivity/acts_tests/tests/google/wifi/p2p
的 ACTS Wi-FI Direct 測試套件實現了 Wi-Fi Direct 的功能測試。
兼容性測試套件 (CTS) 測試
使用 CTS 測試來驗證 Wi-Fi Direct 功能。 CTS 檢測何時啟用該功能並自動包含相關測試。
要觸發 CTS 測試,請運行:
% atest android.net.wifi.p2p.cts
CTS 驗證程序測試
CTS 驗證程序測試使用兩個設備驗證 Wi-Fi Direct 行為:一個測試設備和一個已知良好的設備。要運行測試,請打開 CTS 驗證程序並導航到標題為 Wi-Fi Direct 測試的部分。