Wi-Fi Direct

Wi-Fi Direct 功能 (也稱為 Wi-Fi P2P) 可讓支援的裝置在不透過網際網路或行動網路連線的情況下,直接使用 Wi-Fi Direct 通訊協定來尋找及連線。這項功能以 Wi-Fi Alliance (WFA) Wi-Fi Direct 規格建構而成,可讓受信任的裝置和非網路的應用程式共享高處理量資料。

範例和來源

如要使用這項功能,裝置製造商必須實作 Wi-Fi 供應商和申請者 HAL 介面。

在 Android 13 中,Supplicant 介面會使用 AIDL 定義 HAL。在 Android 14 以上版本中,供應商 HAL 介面會使用 AIDL。在 Android 12 以下版本中,供應者和供應商 HAL 介面是使用 HIDL 所定義。

如要使用 Wi-Fi Direct 功能,必須使用下列 Wi-Fi HAL 途徑:

  • hardware/interfaces/wifi/aidlhardware/interfaces/wifi/1.3 以上
  • hardware/interfaces/wifi/supplicant/aidlhardware/interfaces/wifi/supplicant/1.2 以上

實作

裝置製造商必須同時提供架構和 HAL/韌體支援:

  • 架構:
    • Android 開放原始碼計畫程式碼
    • 啟用 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 的所有其他規定都包含在 Android 開放原始碼計畫中。

MAC 隨機化

Android 規定 Wi-Fi Direct 的「裝置位址」和「介面位址」必須隨機進行。它們必須與裝置的真實 MAC 位址不同,並且必須符合下列需求:

  • 如果沒有儲存的永久群組,Wi-Fi Direct 裝置位址必須在建立介面時隨機產生;否則,裝置位址必須繼續使用上次產生的 MAC 位址。
  • 每次建立連線時,Wi-Fi Direct 介面位址 (也稱為群組位址) 都必須隨機產生。

Wi-Fi Direct MAC 隨機化作業是在「wpa_supplicant」中實作,並由 p2p_device_random_mac_addrp2p_interface_random_mac_addr 這兩項設定控管。

如要啟用這項功能,裝置製造商必須:

  • 實作 Wi-Fi 申請者 ISupplicantP2pIface::setMacRandomization API。視實作的介面而定,這會位於:
    • hardware/interface/wifi/supplicant/1.2 代表 HIDL
    • AIDL 的 hardware/interface/wifi/supplicant/aidl
  • 在裝置自訂疊加層中將 config_wifi_p2p_mac_randomization_supported 設為「true」。

驗證

Android 提供一組單元測試、Compatibility Test Suite (CTS) 測試和 CTS Verifier 測試,用於驗證 Wi-Fi Direct 功能。您也可以使用供應商測試套件 (VTS) 測試 Wi-Fi Direct。

單元測試

使用下列測試驗證 Wi-Fi Direct 套件。

服務測試:

atest com.android.server.wifi.p2p

管理員測試:

atest android.net.wifi.p2p

Compatibility Test Suite (CTS) 測試

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

如要觸發 CTS 測試,請執行:

% atest android.net.wifi.p2p.cts

CTS 驗證工具測試

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