Android 9 中的 Wi-Fi 往返时间 (RTT) 功能允许设备测量与其他支持设备的距离:无论它们是接入点 (AP) 还是 Wi-Fi 感知对等设备(如果设备支持 Wi-Fi 感知功能)。此功能基于 IEEE 802.11mc 协议,使应用能够使用准确性更高的定位功能和增强的感知功能。
示例和源代码
如需使用此功能,请实现供应商 HAL 接口。在 Android 14 及更高版本中,供应商 HAL 接口使用 AIDL 进行定义。在 Android 13 及更低版本中,供应商 HAL 接口使用 HIDL 进行定义。在 Android 8.0 中,HIDL 取代了之前使用的硬件抽象层 (HAL) 结构,以便通过指定收集到接口和软件包的类型和方法调用来简化实现流程。
按照 Wi-Fi 接口来使用 Wi-Fi RTT 功能。取决于实现的是哪种接口,这是:
- AIDL:
hardware/interfaces/wifi/aidl
- HIDL:
hardware/interfaces/wifi/1.0
或更高版本。
您可以参考旧版 Wi-Fi HAL 来了解它与 AIDL 和 HIDL 接口之间的关系: hardware/libhardware_legacy/+/main/include/hardware_legacy/rtt.h。
实现
要实现 WLAN RTT,您必须提供框架和 HAL/固件支持:
-
框架:
- AOSP 代码
- 启用 WLAN RTT:需要功能标记
-
WLAN RTT (IEEE 802.11mc) HAL 支持(意味着固件支持)
如需实现此功能,请实现 Wi-Fi AIDL 或 HIDL 接口,另外还要启用功能标志:
-
在位于
device/<oem>/<device>
的device.mk
中,修改PRODUCT_COPY_FILES
环境变量,以便支持 WLAN RTT 功能:PRODUCT_COPY_FILES += frameworks/native/data/etc/android.hardware.wifi.rtt.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.wifi.rtt.xml
除此以外,实现此功能所需的所有内容都会包含在 AOSP 中。
随机分配 MAC 地址
为加强隐私保护,在 WLAN RTT 事务期间使用的 MAC 地址必须是随机分配的地址,即不得与 WLAN 接口的原生 MAC 地址一致。不过,有一种例外情况:如果某个设备与 AP 相关联,则此设备可能会使用与其相关联的 MAC 地址来处理与此 AP 或其他 AP 之间的任何 RTT 事务。
验证
这项功能有适用的 Android 兼容性测试套件 (CTS) 测试。CTS 会检测何时启用了这项功能,并会自动包含相关测试。您也可以使用供应商测试套件 (VTS) 和 acts/sl4a(用于执行扩展集成测试的测试套件)测试此功能。
单元测试
使用以下测试执行 WLAN RTT 软件包测试:
服务测试:
atest com.android.server.wifi.rtt
Manager 测试:
atest android.net.wifi.rtt
集成 (ACTS) 测试
acts/sl4a 测试套件(在 /tools/test/connectivity/acts_tests/tests/google/wifi/rtt/README.md
中有相应说明)提供了功能测试、性能测试和压力测试。
CTS
这项功能有适用的 Android 兼容性测试套件 (CTS) 测试。CTS 会检测何时启用了这项功能,并会自动包含相关测试。支持 WLAN RTT (IEEE 802.11mc) 的接入点必须位于被测设备的覆盖范围内。
您可以使用以下命令触发 CTS 测试:
atest WifiRttTest
校准
为了确保 WLAN RTT 能够正常运行,802.11mc 协议中返回的距离的精确度应在关键绩效指标 (KPI) 范围内(理想情况下)。对于所列带宽出现的 90% 的 CDF 错误,针对距离估算值建议的 KPI 具有以下容差:
- 80MHz:2 米
- 40MHz:4 米
- 20MHz:8 米
为确保正确实现功能,您必须进行校准测试。
您可以通过以下方式来实现这项测试:通过不断增加距离,比较真实距离和 RTT 估算距离。如果真实距离和 RTT 估算距离基本一致,则您应该针对已知已进行 RTT 校准的设备验证解决方案。距离校准应在下列条件下进行测试:
- 大型开放实验室或没有大量金属物体(金属物体可能会导致多路径异常高发)的走廊。
- 视线 (LOS) 路线/路径至少要延长 25 米。
- 从路线一端到另一端以每次增加 0.5 米的方式标记。
- 选择一个位于路线一端的位置来安装支持 RTT 的接入点(位于地面以上 20 厘米处);一个可移动支架(也位于地面上方 20 厘米处),用于沿路线移动 Android 手机(或接受测试的其他 Android 移动设备),可移动支架应与每隔 0.5 米出现的标记对齐。注意:这项重复性任务可由小型机器人来完成,也可以由人工操作员来完成。
- 每个标记处应记录 50 个距离结果,同时应记录相应标记距离接入点的距离。应在每个标记位置处计算统计信息(例如距离均值和方差)。
您可以根据第 5 步中的结果绘制一个图表,其中 X 轴为真实距离,Y 轴为估算距离,以及一条估算出的最合适的回归路线。理想的设备校准会产生一条梯度为 1.0 的线,且 Y 轴的偏差为 0.0 米。如果这些值的偏差落在相应带宽的 KPI 范围内,则这些偏差是可接受的。如果结果超过 KPI 范围,则应该重新校准设备功能,使结果符合 KPI 规范。