Wi-Fi STA/STA 並行作業

Android 12 導入了 Wi-Fi STA/STA 並行功能。 可讓裝置同時連線到兩個 Wi-Fi 網路。 這項選用功能可啟用下列函式。

  • 設定在此之前:裝置連線至新的 Wi-Fi 網路 再中斷現有連線這會產生 切換 Wi-Fi 網路時更順暢
  • 同時本機僅限本機和網際網路連線:裝置 會在不影響裝置的 主要網際網路連線。
  • 並行受限並連上網際網路:裝置 會連線至受限制的網路 (僅適用於特定特殊權限應用程式) 而不會中斷裝置主要的網際網路連線。
  • (Android 13 以上版本) 同時有多個 具備網際網路連線的網路:裝置 並提供給兩個平台 並提供網際網路連線

本頁面說明啟用這項功能後的裝置行為,以及 裝置製造商和供應商的實作詳細資料。

實作

裝置必須支援下列服務才能實作 Wi-Fi STA/STA 並行:

  • Wi-Fi 晶片或韌體必須支援兩個並行 STA 連線狀態。韌體必須支援所有通路和頻帶組合 兩者之間的連線為避免發生效能問題,建議您使用 搭載 2x2+2x2 DBS 且支援 Wi-Fi 晶片的 DBS。

  • 裝置必須在 AIDL 或 HIDL 中支援下列 API 實作 IWifiChip

    • IWifiChip.setMultiStaPrimaryConnection(String ifName)
    • IWifiChip.setMultiStaUseCase(MultiStaUseCase useCase)
  • HAL Wi-Fi 介面組合必須有兩個並行的 STA 介面 透過 [{STA} <= 2, ...] 等規格格式公開。適用對象 如需更多資訊,請參閱 Wi-Fi 多介面並行

若符合這些必要條件,請執行 包括:

  1. 使用以下程式碼個別啟用一或多個函式: 執行階段資源重疊 (停用 )。

    • 創作開始前config_wifiMultiStaNetworkSwitchingMakeBeforeBreakEnabled
    • 同時本機僅限本機和網際網路連線config_wifiMultiStaLocalOnlyConcurrencyEnabled
    • 並行限制和網際網路連線config_wifiMultiStaRestrictedConcurrencyEnabled
    • 透過網際網路連線同時處理多個網路config_wifiMultiStaMultiInternetConcurrencyEnabled
  2. 按照各自的部分說明驗證每項導入作業。

為了進一步支援 Wi-Fi STA/STA 並行,建議您採用原始設備製造商 (OEM) 自訂 架構和應用程式會使用 NetworkCallback#onCapabilitiesChanged() 方法 而不是 WifiManager#getConnectionInfo(),後者只會針對WifiInfo 單一網路,並已於 Android 12 淘汰。適用對象 如需更多資訊,請參閱 用於點對點連線的 Wi-Fi Network Request API

休息一下

make-before-break 函式可讓裝置連線至新的 Wi-Fi 並保持現有的 Wi-Fi 網路連線 成功連線至新網路時,就會中斷舊網路連線。 Wi-Fi 網路和網際網路。

這個虛構用途的應用實例解決了 Android 11 以下版本,裝置必須中斷連線 從現有 Wi-Fi 網路連線至新網路 (break-before-make)。

  • 連上新網路時,裝置可能會偵測到 儲存的 Wi-Fi 密碼不正確,或新網路未 能夠連上網際網路。這會強制裝置切換回舊模式 網路,因此使用者在沒有 Wi-Fi 連線的情況下會大量使用網路。

  • 舊網路突然中斷連線 通訊端關閉應用程式通常對突然失去效用的 導致 使用者遇到數秒沒有網際網路連線的情況,直到新的 代表該連線已建立完成。

  • 預設網路會變更兩次,包括從舊的 Wi-Fi 網路變更為行動數據 再從行動網路連線至新的 Wi-Fi 網路這會導致應用程式回應 網路變更兩次裝置也必須花費一些 觀看內容。

破發流程僅適用於自動 Wi-Fi 網路 切換由 OS 啟動的開關。使用者啟動的網路切換按鈕使用舊版 導致前一個網路完全中斷連線 才能連上新的網路在某些情況下, 即便是由 作業系統,例如切換兩個設為使用 原廠 MAC 位址。

應用程式可以使用 WifiManager#isMakeBeforeBreakWifiSwitchingSupported() API。

驗證暫時中斷情形

如要驗證導入狀態,請觸發自動 Wi-Fi 網路切換 (確保其訊號強度高於 網路連線時),並確認裝置是否可維護 現有連線。 如要查看兩個 Wi-Fi 介面的狀態,並確認兩個介面皆已連接, 請使用以下指令

adb shell wpa_cli -i wlan0 status ; echo ; adb shell wpa_cli -i wlan1 status

如果新的網路沒有網路連線,裝置就會 試圖連線至網路,但 與現有網路的連線,並在偵測到連線時取消嘗試 新的網路未連上網際網路裝置會繼續使用 設為主要 Wi-Fi 網路

僅本機設定與網際網路連線

本機僅限本機與網際網路連線功能可讓裝置 只使用本機連線,例如與 IoT 裝置之間的連線 與主要網際網路提供的網路同時運作這個函式 將直接連線至 IoT 裝置 (如相機) 時的使用者體驗 您可透過在 VM 中新增的 WifiNetworkSpecifier API Android 10。

在 Android 11 以下版本中,裝置會與 主要 Wi-Fi 網路,且連線至 IoT 裝置時 網際網路連線 (除非裝置有其他可用的傳輸類型, 例如行動數據)。

應用程式可以使用 WifiManager#isStaConcurrencyForLocalOnlyConnectionsSupported() API。

進一步瞭解本機僅限本機與網際網路的並行相關異動 連線函式,請參閱 用於點對點連線的 Wi-Fi Network Request API

驗證僅限本機和網際網路連線

如要驗證這個函式,請使用 MultiStaConcurrencyWifiNetworkSpecifierTest CTS 測試。

限制並行和網際網路連線

並行限制和網際網路連線功能可讓裝置 為使用者和主要 Wi-Fi 網路並行 受限制的 Wi-Fi 網路,且僅適用於特定應用程式。

應用程式可以使用 WifiManager#isStaConcurrencyForRestrictedConnectionsSupported() API。

如要讓裝置連線至次要的受限 Wi-Fi 網路, 步驟如下:

  1. 新增 Wi-Fi 網路建議 同時 setOemPaid敬上 或 setOemPrivate 設為 true,

  2. ConnectivityManager 中,提交NetworkRequest相對應的 功能:

當裝置偵測到掃描結果的網路與 OEM 付費或 原始設備製造商 (OEM) 的私人建議,會自動連結該建議做為次要網路。

驗證並行受限的網際網路連線

如要驗證這個函式,請使用 MultiStaConcurrencyRestrictedWifiNetworkSuggestionTest CTS 測試。

透過網際網路連線同時處理多個網路

適用於 Android 13 以上版本, 連線至多個網路 同時連線至兩個不受限制的網路 (AP) (所有應用程式都可存取) 並提供網際網路連線。

應用程式可透過以下方式,檢查裝置是否支援這項功能: WifiManager#isStaConcurrencyForMultiInternetSupported()敬上 方法。

如果支援此功能,具有特殊權限的應用程式即可使用 WifiManager#setStaConcurrencyForMultiInternetMode(int mode) 方法。 地圖項目包含下列模式:

如要查詢目前使用中的功能模式,請使用 WifiManager#getStaConcurrencyForMultiInternetMode()敬上 方法。

啟用這項功能後,請按照下列步驟提出額外的要求 網際網路提供的 Wi-Fi 網路。

  1. 建立 Wi-Fi 網路指定碼: WifiNetworkSpecifier.Builder。 使用 setBand()敬上 方法。請勿將 SSID 或 BSSID 當成其他網路 指定的頻帶是由 Wi-Fi 架構選擇。

  2. 使用 ConnectivityManager、 建立 NetworkRequest,並使用 NET_CAPABILITY_INTERNET 技術。

  3. 將指定碼加入網路要求中,並加上 NetworkCallback敬上 追蹤要求狀態,並向 ConnectivityManager。如果儲存要求的頻寬 可用的網路, 成功, NetworkCallback.onAvailable()敬上 會在回呼物件上叫用。

驗證具備網際網路連線的並行多個網路

如要驗證這個函式,請使用下列 CTS 測試:

  • CTS:MultiStaConcurrencyMultiInternetWifiNetworkTest

供應商 Wi-Fi 晶片規範

如果是 Wi-Fi 晶片供應商,請按照下列指南支援 Wi-Fi STA/STA 並行功能。

Wi-Fi 晶片必須支援雙並行的 STA 連線。也就是說 支援下列條件:

  • 每個 STA 介面都有專屬的 MAC,可由該架構編寫。
  • 也可以動態建立及刪除次要 STA 介面。
  • 每個 STA 都可以連結至不同的 SSID (位於相同的 SSID) 或是不同錶帶)
  • 每個 STA 皆可連結至同一個 SSID (位於相同的 SSID) 或是不同錶帶)這兩個 STA「一律不」 連線至同一個 BSSID。

重要功能必須分別以單一介面運作,且必須 主要介面。下面列出幾項重要的 功能:

  • 至少須在主要介面上支援漫遊功能 (設定方式為 IWifiChip.setMultiStaPrimaryConnection())。如果裝置支援漫遊服務 因此同一個連線的決策不得與 以及第二個並行連線例如,單一介面不得漫遊 連至另一個連線的 BSSID。

  • 至少要支援 APF (和其他卸載項目,例如 ARP 和 NS) 主要介面 (透過 IWifiChip.setMultiStaPrimaryConnection())。

  • 連結層統計資料必須按介面運作。

以下是針對不同廣告需求,建議採用的 Wi-Fi 晶片實作方式 並行情境:

  • Wi-Fi 晶片必須允許架構呼叫 IWifiChip.setMultiStaUseCase() 搭配下列其中一個常數,即可 指定目前的函式:

    • DUAL_STA_TRANSIENT_PREFER_PRIMARY:指定 Make-Before-Break 函式。主要連線的品質 優先順序原則高於次要連線。
    • DUAL_STA_NON_TRANSIENT_UNBIASED:指定 本機僅限本機和網際網路連線,或並行連線 限制及網際網路連線功能。兩者 連線的優先順序必須相同。
  • 由於兩個並行的 STA 可能會產生 MCC、SCC 和 DBS 模式 作業人員時,供應商必須選擇最適合的無線電 架構呼叫 IWifiChip.setMultiStaUseCase() 以 會指出函式。一般準則如下:

    • 建議使用 2x2+2x2 DBS (如果有的話)。
    • 盡量避免使用 1x1+1x1 DBS,因為過度影響 連線品質建議改用 MCC。
    • 必須可由驅動程式或韌體設定 MCC 任務週期, 各種函式架構不會設定 MCC 任務週期 但必須透過 StaLinkLayerIfaceStats.timeSliceDutyCycleInPercent
    • 如果您使用「我的客戶中心」,建議以下是主要帳戶與 和次要連線:

      • DUAL_STA_TRANSIENT_PREFER_PRIMARY:70% 初級,30% 次要。
      • DUAL_STA_NON_TRANSIENT_UNBIASED:50% 初級,50% 次要。