Wi-Fi 感知

通过 Android 8.0 中新增的 Wi-Fi 感知功能,支持设备可以直接使用 Wi-Fi 感知协议发现其他设备、与其他设备互连,以及将覆盖范围扩展到其他设备(Android 9 中新增的功能),而无需连接到互联网或移动网络。此功能是基于 Wi-Fi 联盟 (WFA) Wi-Fi 感知规范(2.0 版、3.0 版、3.1 版和 4.0 版)构建的,它支持在断开网络的情况下,在可信设备与应用之间轻松共享高吞吐量数据。

示例和源代码

如需使用此功能,设备制造商应实现 Wi-Fi 供应商 HAL。在 Android 14 及更高版本中,供应商 HAL 接口使用 AIDL 进行定义。对于 Android 13 及更低版本,供应商 HAL 接口使用 HIDL 进行定义。

使用 Wi-Fi 界面来使用 Wi-Fi 感知功能。 根据实现的是哪种接口,可以是:

  • AIDL:hardware/interfaces/wifi/aidl
  • HIDL:hardware/interfaces/wifi/1.2 或更高版本

您可以参考旧版 Wi-Fi HAL 来了解它与 AIDL 和 HIDL 接口之间的关系: hardware/libhardware_legacy/+/main/include/hardware_legacy/wifi_nan.h

实现

设备制造商需要提供框架和 HAL/固件支持:

  • 框架:
    • AOSP 代码
    • 启用感知功能:需要功能标志和 build 标志
  • Wi-Fi 感知 (NAN) HAL 支持(意味着固件支持)

为实现此功能,设备制造商需采用 Wi-Fi 接口,另外还要启用两个功能标志:

  • 在位于 device/<oem>/<device>BoardConfig.mkBoardConfig-common.mk 中,添加以下标志:

    WIFI_HIDL_FEATURE_AWARE := true
    
  • 在位于 device/<oem>/<device>device.mk 中,修改 PRODUCT_COPY_FILES 环境变量,以便支持 Wi-Fi 感知功能:

    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 感知功能包括使用 IEEE 802.11mc 协议(又称为往返时间 (RTT))将覆盖范围扩展到对等设备。Wi-Fi 感知的这一子功能取决于支持 Wi-Fi RTT 功能的设备,即它要求设备支持 Wi-Fi 感知和 Wi-Fi RTT。如需了解详情,请参阅 Wi-Fi RTT

除此以外,实现此功能所需的所有代码都包含在 AOSP 中。

如果指定了 WIFI_HAL_INTERFACE_COMBINATIONS 标志,则忽略 WIFI_HIDL_FEATURE_AWARE 标志。如需了解详情,请参阅 Wi-Fi 多接口并发

随机分配 MAC 地址

Android 要求随机分配 Wi-Fi 感知发现 (NMI) 和数据接口 (NDP) 的 MAC 地址,而且随机分配的 MAC 地址不应与设备的真实 MAC 地址相同。MAC 地址必须满足以下条件:

  • 每当启用或重新启用 Wi-Fi 感知时进行随机分配。
  • Wi-Fi 感知功能启用后,必须按照由 NanConfigRequest.macAddressRandomizationIntervalSec 参数配置的有规律的间隔随机分配 MAC 地址。框架将时间间隔默认配置为 30 分钟。

暂停和恢复

在 Android 14 及更高版本中,Wi-Fi 感知支持特权应用暂停和恢复活跃的发现会话(包括与这些会话关联的所有数据路径)。支持此功能可让设备更快地恢复发现会话,而且功耗更低,因为发现会话可能会暂停。

如果设备支持这种暂停和恢复功能,固件会在特权应用暂停发现会话时挂起 Wi-Fi 感知会话。当发现会话处于暂停状态时,设备不会传输或接收该会话的任何帧,包括该会话中的任何活跃 NDP。如果所有发现会话均已暂停,则设备不会传输或接收任何 Wi-Fi 感知帧。

当特权应用恢复已暂停的发现会话时,框架会将会话返回到之前的状态,包括所有关联的 NDP 会话。恢复已暂停的发现会话比启动 Wi-Fi 感知和创建新的发现会话更快。

如需支持暂停和恢复发现会话的功能,设备制造商必须提供 HAL 和固件支持。如需了解详情,请参阅 IWifiNanIface.java

设备制造商可以使用带外通信(例如 BLE)在多个设备上同步挂起和恢复功能。

验证

Android 提供了一组单元测试、兼容性测试套件 (CTS) 测试和 CTS 验证程序测试,以验证 Wi-Fi 直连功能。您也可以使用供应商测试套件 (VTS) 来测试 Wi-Fi 感知功能。

单元测试

Wi-Fi 感知软件包测试:

服务测试:

atest com.android.server.wifi.aware

Manager 测试:

atest android.net.wifi.aware

兼容性测试套件 (CTS) 测试

使用 CTS 测试来验证 Wi-Fi 感知功能。CTS 会检测何时启用了这项功能,并会自动包含相关测试。

可以使用以下方法触发 CTS 测试:

atest SingleDeviceTest

CTS 验证程序测试

CTS 验证程序测试使用以下两种设备验证 Wi-Fi 感知行为:测试设备和已知良好的设备。如需运行测试,请打开 CTS 验证程序并转到“Wi-Fi 感知测试”部分。