Android 10 擴充了 Wi-Fi Lock API 容易受延遲時間影響的應用程式 低延遲 模式。 只要符合下列所有條件,系統就會啟動低延遲模式:
- 已啟用 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)
在低延遲模式下,省電模式會明確停用,
WifiLockManager
敬上
與 Android 架構的深入探討
為了支援這種情況,WLAN 驅動程式必須支援 NL80211 指令
NL80211_CMD_SET_POWER_SAVE
,啟用及停用省電功能。連上 Wi-Fi 時
儲存功能已停用,Wi-Fi 系統必須維持喚醒狀態,才能準備就緒
傳送或接收封包,延遲時間最短。
停用這項功能
如要關閉低延遲模式功能,請更新下列項目的基礎程式碼:
getFeatureSet()
代表 AIDL HAL,或
getCapabilities_1_3()
是 HIDL HAL,
該 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) 手機和測試電腦
- DUT 必須透過 Wi-Fi 連線至存取點。
- 測試電腦必須透過 Wi-Fi 或 乙太網路。
- 測試電腦必須透過 USB 連線至 DUT。
上行連線偵測 (ping) 測試
啟用低延遲模式。
adb root
adb shell cmd wifi force-low-latency-mode enabled
確認電腦已透過 ADB 與手機連線。最低價格: ADB 殼層,在 1 秒時持續對閘道連線偵測 (ping) 3 小時 間隔。
將測試輸出內容儲存為文字檔案,並使用試算表或 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
在測試電腦的指令列中,對手機的 IP 進行連線偵測 (ping) 連續 3 小時,每 1 秒一次一個位址。
將測試輸出內容儲存為文字檔案,並使用試算表或 Python 指令碼,用於產生連線偵測 (ping) 延遲測試結果的直方圖。
重複步驟 1 到 3,並啟用延遲模式。
adb root
adb shell cmd wifi force-low-latency-mode disabled
比較測試結果,確定平均連線偵測 (ping) 延遲時間為 且縮短延遲時間。
其他測試
在不同環境中重複執行上述測試。例如,在 無論是在家還是辦公室,