Android 10 擴充 Wi-Fi 鎖定 API,讓對延遲敏感的應用程式將 Wi-Fi 設定為低延遲模式。系統會在符合下列所有條件時啟用低延遲模式:
- 已啟用 Wi-Fi,且裝置可連上網際網路。
- 應用程式已建立並取得 Wi-Fi 鎖,並在前景執行。
- 螢幕已開啟。
如要在裝置上支援低延遲模式,裝置製造商必須更新 WLAN 驅動程式和供應商 HAL。在低延遲模式中,架構會明確停用省電功能 (在 IEEE 802.11 標準中也稱為休眠狀態)。驅動程式和韌體層中的掃描和漫遊參數可進行最佳化,進一步縮短 Wi-Fi 延遲時間。具體最佳化方式視實作方式而定。
Android 有高效能 Wi-Fi 鎖定模式 (在 API 級別 12 中推出),與低延遲模式分開。
實作
如要支援 Wi-Fi 低延遲模式功能,請為下列 IWifiChip
函式提供實作項目。
在 AIDL HAL 中:
int getFeatureSet()
void setLatencyMode(in LatencyMode mode)
在 HIDL HAL (1.3 以上版本) 中:
getCapabilities_1_3() generates (WifiStatus status, bitfield<ChipCapabilityMask> 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
,才能啟用及停用省電功能。如果停用 Wi-Fi 省電功能,Wi-Fi 系統必須處於清醒狀態,準備好收發封包時,最短延遲時間。
停用這項功能
如要關閉低延遲模式功能,請更新 AIDL HAL 的 getFeatureSet()
或 HIDL HAL 的 getCapabilities_1_3()
基礎程式碼,以便 capabilities & SET_LATENCY_MODE = 0
,其中 SET_LATENCY_MODE
是在 IWifiChip
AIDL 或 HIDL 定義中定義。停用這項功能後,只有在低延遲模式啟用時,架構才會停用省電功能。
驗證
如要測試啟用低延遲模式後是否正常運作,請執行下列自動化測試和手動 ping 延遲時間測試。
自動化測試
執行下列 VTS 和 CTS 測試:
- VTS (AIDL):
hardware/interfaces/wifi/aidl/vts/functional/wifi_chip_aidl_test.cpp
- VTS (HIDL):
hardware/interfaces/wifi/1.3/vts/functional/wifi_chip_hidl_test.cpp
- CTS:
cts/tests/tests/net/src/android/net/wifi/cts/WifiLockTest.java
手動測試
必要的測試設備和環境
如要進行手動測試,必須完成下列設定:
- Wi-Fi 存取點 (AP)
測試裝置 (DUT) 手機和測試電腦
- 被測試設備必須透過 Wi-Fi 連線至存取點。
- 測試電腦必須透過 Wi-Fi 或乙太網路連線至存取點。
- 測試電腦必須透過 USB 連接至 DUT。
上行連線偵測 (ping) 測試
啟用低延遲模式。
adb root
adb shell cmd wifi force-low-latency-mode enabled
請確認電腦已透過 ADB 連上手機。透過 ADB 殼層,每 3 小時持續對閘道連線偵測 (ping) 3 小時,間隔為 1 秒。
將測試輸出內容儲存至文字檔案,然後使用試算表或 Python 指令碼,產生 Ping 延遲測試結果的直方圖。
在停用延遲模式的情況下,重複執行步驟 1 到 3。
adb root
adb shell cmd wifi force-low-latency-mode disabled
並比較測試結果,確保在啟用低延遲模式時,平均連線偵測 (ping) 延遲時間值會降低。
下行連線偵測 (ping) 測試
啟用低延遲模式。
adb root
adb shell cmd wifi force-low-latency-mode enabled
在測試電腦的指令列中,以 1 秒的間隔持續執行 ping 手機的 IP 位址,時間為 3 小時。
將測試輸出內容儲存至文字檔案,然後使用試算表或 Python 指令碼產生連線偵測 (ping) 延遲測試結果的直方圖。
在停用延遲模式的情況下,重複執行步驟 1 到 3。
adb root
adb shell cmd wifi force-low-latency-mode disabled
比較測試結果,確認啟用低延遲模式後,平均 ping 延遲時間值是否會降低。
其他測試
在不同環境中重複執行上述測試。例如在家中或辦公室。