Android 10 扩展了 WLAN Lock API,以允许容易受到延迟时间影响的应用将 WLAN 配置为低延迟模式。当满足以下所有条件时,低延迟模式便会启动:
已启用 WLAN,设备可以访问互联网。
应用已创建并获得 WLAN 锁,并且正在前台运行。
屏幕处于开启状态。
要在设备上支持低延迟模式,设备制造商必须更新 WLAN 驱动程序和供应商 HAL。在低延迟模式下,框架会明确停用节电模式(在 IEEE 802.11 标准中也称为低电耗模式状态)。您可以优化驱动程序层和固件层中的扫描和漫游参数,以进一步降低 WLAN 延迟。确切的优化项目因实现而异。
Android 具有高性能 WLAN 锁定模式(在 API 级别 12 中引入),它与低延迟模式相互独立。
实现
getCapabilities_1_3() generates (WifiStatus status,
bitfield capabilities)
setLatencyMode(LatencyMode mode) generates (WifiStatus status)
参考实现可以在 wifi_legacy_hal.cpp 中找到,其中包含以下函数:
wifi_error wifi_get_supported_feature_set(wifi_interface_handle
iface, feature_set *set)
wifi_error wifi_set_latency_mode(wifi_interface_handle handle,
wifi_latency_mode mode)
在低延迟模式下,Android 框架中的 WifiLockManager 会明确停用节电模式。要支持此行为,WLAN 驱动程序必须支持 NL80211 命令 NL80211_CMD_SET_POWER_SAVE,以启用和停用节电模式。停用 WLAN 节电模式后,WLAN 系统必须保持唤醒状态,并可以开始以最低延迟发送或接收数据包。
注意:低延迟模式在支持 android.hardware.wifi@1.3 的设备上完全受支持。对于搭载 Android 10 但不支持 android.hardware.wifi@1.3 的设备,仅当应用获得低延迟模式 WLAN 锁且该锁处于启用状态时,WifiLockManager 才会停用节电模式。
停用此功能
要关闭低延迟模式功能,请更新 getCapabilities_1_3() 的底层代码,使得 capabilities & SET_LATENCY_MODE = 0,其中 SET_LATENCY_MODE 在 IWifiChip.hal 中定义。停用此功能后,仅当低延迟模式处于启用状态时,框架才会停用节电模式。
验证
要测试低延迟模式在启用状态下的工作情况,请运行以下自动测试和手动 ping 延迟时间测试。
自动测试
运行以下 VTS 和 CTS 测试:
手动测试
所需的测试设备和环境
对于手动测试,需要进行以下设置:
WLAN 接入点 (AP)
被测设备 (DUT) 手机和测试计算机
DUT 必须通过 WLAN 连接到接入点。
测试计算机必须通过 WLAN 或以太网连接到接入点。
测试计算机必须通过 USB 连接到 DUT。
上行链路 ping 测试
启用低延迟模式。
adb root
adb shell cmd wifi force-low-latency-mode enabled
确保您的计算机通过 ADB 与手机连接。通过 ADB shell,以 1 秒的间隔连续对网关执行 3 小时 ping 操作。
将测试输出保存在文本文件中,并使用电子表格或 Python 脚本生成 ping 延迟时间测试结果的直方图。
在停用延迟模式的情况下重复执行第 1-3 步。
adb root
adb shell cmd wifi force-low-latency-mode disabled
比较测试结果,以确保低延迟模式处于启用状态时平均 ping 延迟值有所降低。
注意:(可选)要确定端到端延迟时间总体上是否有所降低,请使用知名的主机地址(如 google.com)重复测试。
下行链路 ping 测试
启用低延迟模式。
adb root
adb shell cmd wifi force-low-latency-mode enabled
通过测试计算机的命令行,以 1 秒的间隔连续对手机的 IP 地址执行 3 小时 ping 操作。
将测试输出保存在文本文件中,并使用电子表格或 Python 脚本生成 ping 延迟时间测试结果的直方图。
在停用延迟模式的情况下重复执行第 1-3 步。
adb root
adb shell cmd wifi force-low-latency-mode disabled
比较测试结果,以确保低延迟模式处于启用状态时平均 ping 延迟值有所降低。
注意:(可选)要确定端到端延迟时间是否有所降低,请使用知名的主机地址(如 google.com)重复 ping 测试。
其他测试
在不同的环境中重复上述测试。例如,您可以在家里或办公室进行测试。