自 2025 年 3 月 27 日起,我们建议您使用 android-latest-release
而非 aosp-main
构建 AOSP 并为其做出贡献。如需了解详情,请参阅 AOSP 的变更。
Wi-Fi Direct
使用集合让一切井井有条
根据您的偏好保存内容并对其进行分类。
WLAN 直连功能又称“Wi-Fi 点对点”,它允许支持设备直接使用 WLAN 直连协议发现其他设备并与之互连,无需连接到互联网或移动网络。此功能是基于 Wi-Fi 联盟 (WFA) Wi-Fi 直连规范构建的,它支持在断开网络的情况下,在可信设备和应用之间共享高吞吐量数据。
示例和源代码
要使用此功能,设备制造商必须实现 Wi-Fi 供应商和客户端 HAL 接口。
在 Android 13 中,客户端接口使用 AIDL 进行 HAL 定义。在 Android 14 及更高版本中,供应商 HAL 接口使用 AIDL 进行定义。在 Android 12 及更低版本中,客户端和供应商 HAL 接口使用 HIDL 进行定义。
以下是采用 Wi-Fi 直连功能所需的 Wi-Fi HAL surface:
hardware/interfaces/wifi/aidl
、hardware/interfaces/wifi/1.3
或更高版本
hardware/interfaces/wifi/supplicant/aidl
、hardware/interfaces/wifi/supplicant/1.2
或更高版本
实现
设备制造商需要提供框架和 HAL/固件支持:
- 框架:
- AOSP 代码
- 启用 Wi-Fi 直连:需要功能标记
- Wi-Fi 直连(点对点)HAL 支持(意味着固件支持)
为实现此功能,设备制造商需采用 Wi-Fi HIDL 或 AIDL 接口,并为 Wi-Fi 直连启用功能标志。在位于 device/<oem>/<device>
的 device.mk
中,修改 PRODUCT_COPY_FILES
环境变量,以便支持 Wi-Fi 直连功能:
```
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 直连的所有其他要求都包含在 AOSP 中。
随机分配 MAC 地址
Android 要求 WLAN 直连设备地址和接口地址是随机分配的。它们必须不同于设备的真实 MAC 地址,并且必须满足以下要求:
- 如果没有保存任何永久性群组,则 WLAN 直连设备地址必须是在创建接口时随机分配的;否则设备地址必须继续使用最后生成的 MAC 地址。
- 每次建立连接时,Wi-Fi 直连接口地址(也称为群组地址)必须是随机分配的。
Wi-Fi 直连随机分配 MAC 地址是在“wpa_supplicant”中实现的,并由两项配置控制:p2p_device_random_mac_addr
和 p2p_interface_random_mac_addr
。
要启用此功能,设备制造商必须满足以下条件:
- 实现 Wi-Fi 客户端
ISupplicantP2pIface::setMacRandomization
API。根据已实现的接口,相应位置如下:
hardware/interface/wifi/supplicant/1.2
(适用于 HIDL)
hardware/interface/wifi/supplicant/aidl
(适用于 AIDL)
- 在设备自定义叠加层中将
config_wifi_p2p_mac_randomization_supported
设置为“true”。
验证
Android 提供了一组单元测试、兼容性测试套件 (CTS) 测试和 CTS 验证程序测试,以验证 Wi-Fi 直连功能。您也可以使用供应商测试套件 (VTS) 来测试 Wi-Fi 直连功能。
单元测试
使用以下测试验证 WLAN 直连软件包。
服务测试:
atest com.android.server.wifi.p2p
Manager 测试:
atest android.net.wifi.p2p
兼容性测试套件 (CTS) 测试
使用 CTS 测试来验证 Wi-Fi 直连功能。CTS 会检测何时启用了这项功能,并会自动包含相关测试。
要触发 CTS 测试,请运行以下命令:
% atest android.net.wifi.p2p.cts
CTS 验证程序测试
CTS 验证程序测试使用以下两种设备验证 WLAN 直连行为:测试设备和已知良好的设备。要运行测试,请打开 CTS 验证程序并转到“WLAN 直连测试”部分。
本页面上的内容和代码示例受内容许可部分所述许可的限制。Java 和 OpenJDK 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2025-03-26。
[null,null,["最后更新时间 (UTC):2025-03-26。"],[],[],null,["# Wi-Fi Direct\n\nThe\n[Wi-Fi Direct](https://developer.android.com/guide/topics/connectivity/wifip2p.html)\nfeature, also known as Wi-Fi P2P, allows supporting devices to discover and connect\nto one another directly\nusing the Wi-Fi Direct protocol without internet or cellular network access. This\nfeature, built upon the [Wi-Fi Alliance](https://www.wi-fi.org/)\n(WFA)\n[Wi-Fi Direct specification](https://www.wi-fi.org/wi-fi-direct)\nallows sharing of high-throughput data among\ntrusted devices and apps that are otherwise off-network.\n\nExamples and source\n-------------------\n\nTo use this feature, device manufacturers must implement the Wi-Fi\nVendor and Supplicant HAL interfaces.\n\nIn Android 13,\nthe Supplicant interface uses AIDL for the HAL definition. In\nAndroid 14 and higher, the Vendor HAL interface uses\nAIDL. In Android 12 and lower, the Supplicant and\nVendor HAL interfaces are defined using HIDL.\n\nThe following Wi-Fi HAL surfaces are required to employ the Wi-Fi Direct\nfeature:\n\n- `hardware/interfaces/wifi/aidl` or, `hardware/interfaces/wifi/1.3` or higher\n- `hardware/interfaces/wifi/supplicant/aidl` or, `hardware/interfaces/wifi/supplicant/1.2` or higher\n\nImplementation\n--------------\n\nDevice manufacturers need to provide both framework and HAL/firmware support:\n\n- Framework:\n - AOSP code\n - Enable Wi-Fi Direct: Requires a feature flag\n- Wi-Fi Direct (P2P) HAL support (which implies firmware support)\n\nTo implement this feature, device manufacturers implement the Wi-Fi HIDL or AIDL\ninterfaces and enable the feature flag for Wi-Fi Direct. In `device.mk` located\nin `device/\u003coem\u003e/\u003cdevice\u003e`, modify the `PRODUCT_COPY_FILES` environment variable\nto include support for the Wi-Fi Direct feature: \n\n ```\n PRODUCT_COPY_FILES +=\n frameworks/native/data/etc/android.hardware.wifi.direct.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.wifi.direct.xml\n ```\n\nAll other requirements for supporting Wi-FI Direct are included in AOSP.\n\nMAC randomization\n-----------------\n\nAndroid requires that the Wi-Fi Direct *device address* and *interface\naddress* are randomized. They must be different from the true MAC address of\nthe device and must meet the following requirements:\n\n- The Wi-Fi Direct device address must be randomized on interface creation if there is no persistent group saved; otherwise the device address must keep using the last generated MAC address.\n- The Wi-Fi Direct interface address, also known as group address, must be randomized every time a connection is established.\n\nWi-Fi Direct MAC randomization is implemented in 'wpa_supplicant' and controlled\nby two configurations, `p2p_device_random_mac_addr` and\n`p2p_interface_random_mac_addr`.\n\nTo enable this feature, device manufacturers must:\n\n- Implement the Wi-Fi Supplicant `ISupplicantP2pIface::setMacRandomization` API. Depending on the interface implemented, this is in:\n - `hardware/interface/wifi/supplicant/1.2` for HIDL\n - `hardware/interface/wifi/supplicant/aidl` for AIDL\n- Set `config_wifi_p2p_mac_randomization_supported` to 'true' in a device custom overlay.\n\nValidation\n----------\n\nAndroid provides a set of unit tests,\n[Compatibility Test Suite (CTS)](/docs/compatibility/cts) tests, and\n[CTS Verifier](/docs/compatibility/cts/verifier) tests to validate the Wi-Fi\nDirect feature. Wi-Fi Direct can also be tested using the\n[Vendor Test Suite (VTS)](/docs/compatibility/vts).\n\n### Unit tests\n\nVerify the Wi-Fi Direct package using the following tests.\n\nService tests: \n\n atest com.android.server.wifi.p2p\n\nManager tests: \n\n atest android.net.wifi.p2p\n\n### Compatibility Test Suite (CTS) tests\n\nUse CTS tests to validate the Wi-Fi Direct feature. CTS detects when the feature\nis enabled and automatically includes the associated tests.\n\nTo trigger the CTS tests, run: \n\n % atest android.net.wifi.p2p.cts\n\n### CTS Verifier tests\n\nCTS Verifier tests validate Wi-Fi Direct behavior using two devices: a test\ndevice and a *known good* device. To run the tests, open CTS Verifier and\nnavigate to the section titled Wi-Fi Direct Tests."]]