Mit Android 12 wird die gleichzeitige Verwendung von STA/STA (Wi-Fi STA) eingeführt, mit der Geräte gleichzeitig eine Verbindung zu zwei WLAN-Netzwerken herstellen können. Mit dieser optionalen Funktion sind die folgenden Funktionen verfügbar.
- Make-before-break: Das Gerät stellt eine Verbindung zu einem neuen WLAN her, bevor die bestehende Verbindung getrennt wird. Dadurch werden Übergänge beim Wechsel zwischen WLANs flüssiger.
- Gleichzeitige lokale und Internetverbindung: Das Gerät verbindet sich mit einem lokalen Netzwerk, ohne die primäre Internetverbindung des Geräts zu unterbrechen.
- Gleichzeitige eingeschränkte Internetverbindung: Das Gerät stellt eine Verbindung zu einem eingeschränkten Netzwerk her (nur für bestimmte privilegierte Apps verfügbar), ohne die primäre Verbindung des Geräts, die das Internet bereitstellt, zu unterbrechen.
- Android 13 oder höher: Gleichzeitige mehrere Netzwerke mit Internetverbindung: Das Gerät stellt eine Internetverbindung her. Beide Netzwerke sind uneingeschränkt und für alle Apps verfügbar.
Auf dieser Seite wird das Geräteverhalten beschrieben, wenn diese Funktion aktiviert ist, sowie die Implementierungsdetails für Gerätehersteller und -anbieter.
Implementierung
Geräte müssen Folgendes unterstützen, um die WLAN-STA/STA-Parallelität zu implementieren:
Der WLAN-Chip oder die Firmware muss zwei gleichzeitige STA-Verbindungen unterstützen. Die Firmware muss alle Kanal- und Bandkombinationen für beide Verbindungen unterstützen. Um Leistungsprobleme zu vermeiden, empfehlen wir die Verwendung eines 2x2+2x2-DBS-fähigen WLAN-Chips.
Das Gerät muss die folgenden APIs in der AIDL- oder HIDL-Implementierung von
IWifiChip
unterstützen.IWifiChip.setMultiStaPrimaryConnection(String ifName)
IWifiChip.setMultiStaUseCase(MultiStaUseCase useCase)
Die HAL-WLAN-Schnittstellenkombination muss zwei gleichzeitige STA-Schnittstellen haben, die mit einem Spezifikationsformat wie
[{STA} <= 2, ...]
verfügbar gemacht werden. Weitere Informationen finden Sie unter Mehrere Wi‑Fi-Schnittstellen gleichzeitig verwenden.
Wenn diese Voraussetzungen erfüllt sind, implementieren Sie die WLAN-STA/STA-Parallelität so:
Sie können eine oder mehrere Funktionen einzeln mithilfe von Laufzeitressourcen-Overlays aktivieren (standardmäßig deaktiviert).
- Vorher-Bearbeiten-Danach-Pause:
config_wifiMultiStaNetworkSwitchingMakeBeforeBreakEnabled
- Gleichzeitige lokale und Internetverbindung:
config_wifiMultiStaLocalOnlyConcurrencyEnabled
- Gleichzeitige eingeschränkte und Internetverbindung:
config_wifiMultiStaRestrictedConcurrencyEnabled
- Mehrere Netzwerke mit Internetverbindung gleichzeitig:
config_wifiMultiStaMultiInternetConcurrencyEnabled
- Vorher-Bearbeiten-Danach-Pause:
Validieren Sie jede Implementierung wie in den jeweiligen Abschnitten beschrieben.
Zur besseren Unterstützung der Gleichzeitigkeit von STA/STA für WLAN empfehlen wir, dass OEM-benutzerdefinierte Frameworks und Apps die Methode NetworkCallback#onCapabilitiesChanged()
anstelle von WifiManager#getConnectionInfo()
verwenden. Diese gibt nur WifiInfo
für ein einzelnes Netzwerk zurück und wurde in Android 12 eingestellt. Weitere Informationen finden Sie unter Wi‑Fi Network Request API für Peer-to-Peer-Verbindungen.
Make-before-break
Mit der Funktion Make-Before-Break können Geräte eine Verbindung zu einem neuen WLAN herstellen und gleichzeitig die bestehende WLAN-Verbindung aufrechterhalten. Die Verbindung zum alten Netzwerk wird erst getrennt, wenn eine Verbindung zum neuen WLAN hergestellt wurde und Internetzugriff besteht.
Der Anwendungsfall „Make-before-Break“ behebt die folgenden Probleme unter Android 11 oder niedriger, bei denen das Gerät die Verbindung zum vorhandenen WLAN trennen muss, bevor es eine Verbindung zu einem neuen Netzwerk herstellen kann („Break-before-Make“).
Wenn Sie eine Verbindung zu einem neuen Netzwerk herstellen, stellt das Gerät möglicherweise fest, dass ein falsches WLAN-Passwort gespeichert ist oder dass das neue Netzwerk keinen Internetzugriff hat. Dadurch wird das Gerät gezwungen, zum alten Netzwerk zurückzukehren, was zu einer erheblichen Zeitspanne ohne WLAN-Verbindung führt.
Die Verbindung zum alten Netzwerk wird abrupt getrennt, sodass alle Sockets geschlossen werden. Apps reagieren oft nicht gut auf einen plötzlichen Verbindungsabbruch. Dies kann dazu führen, dass der Nutzer einige Sekunden lang keine Internetverbindung hat, bis die neue Verbindung vollständig hergestellt ist.
Das Standardnetzwerk wird zweimal geändert: vom alten WLAN zum Mobilfunknetz und dann zum neuen WLAN. Dadurch reagieren Apps doppelt auf Netzwerkänderungen. Das Gerät muss außerdem kurz mobile Daten nutzen.
Der Make-Before-Break-Vorgang wird nur für automatische WLAN-Netzwerkübergänge verwendet, die vom Betriebssystem initiiert werden. Bei von Nutzern initiierten Netzwerkübergängen wird der alte Break-Before-Make-Vorgang verwendet, bei dem die Verbindung zum vorherigen Netzwerk vollständig getrennt wird, bevor die Verbindung zum neuen Netzwerk hergestellt wird. In bestimmten Fällen wird der Break-Before-Make-Vorgang auch bei automatischen Umschaltungen verwendet, die vom Betriebssystem initiiert werden, z. B. beim Wechsel zwischen zwei Netzwerken, die beide für die Verwendung der MAC-Adresse der Werkseinstellungen konfiguriert sind.
Apps können mit der WifiManager#isMakeBeforeBreakWifiSwitchingSupported()
API prüfen, ob dieser Anwendungsfall auf dem Gerät unterstützt wird.
„Make-before-Break“-Prüfung
Um Ihre Implementierung zu validieren, lösen Sie einen automatischen Wechsel des WLANs aus (indem Sie dafür sorgen, dass ein Netzwerk mit einer stärkeren Signalstärke als das verbundene Netzwerk verfügbar ist) und prüfen Sie, ob das Gerät die bestehende Verbindung beibehält, während es eine Verbindung zum neuen Netzwerk herstellt. Verwenden Sie den folgenden Befehl, um den Status beider WLAN-Schnittstellen aufzurufen und zu prüfen, ob beide verbunden sind.
adb shell wpa_cli -i wlan0 status ; echo ; adb shell wpa_cli -i wlan1 status
Wenn das neue Netzwerk keine Verbindung hat, versucht das Gerät, eine Verbindung zum Netzwerk herzustellen, während die Verbindung zum vorhandenen Netzwerk aufrechterhalten wird. Der Versuch wird abgebrochen, wenn erkannt wird, dass das neue Netzwerk kein Internet hat. Das Gerät verwendet dann die bestehende Verbindung weiterhin als primäres WLAN.
Gleichzeitige lokale und Internetverbindung
Mit der Funktion Gleichzeitige lokale und Internetverbindung können Geräte gleichzeitig mit dem primären Internetanbieternetzwerk eine Verbindung zu einer lokalen Verbindung herstellen, z. B. zu einem IoT-Gerät. Diese Funktion verbessert die Nutzerfreundlichkeit bei der direkten Verbindung mit IoT-Geräten wie Kameras. Dies ist über die WifiNetworkSpecifier
API möglich, die in Android 10 hinzugefügt wurde.
Unter Android 11 und niedriger werden Geräte vom primären WLAN getrennt, wenn sie eine Verbindung zu einem IoT-Gerät herstellen. Dies führt zu einem Verlust der Internetverbindung, es sei denn, auf dem Gerät ist ein anderer Transporttyp verfügbar, z. B. Mobilfunkdaten.
Mit der WifiManager#isStaConcurrencyForLocalOnlyConnectionsSupported()
API können Apps prüfen, ob diese Funktion auf dem Gerät unterstützt wird.
Weitere Informationen zu den Änderungen an der Funktion für gleichzeitige lokale und Internetverbindungen in Android 12 finden Sie unter Wi‑Fi Network Request API für Peer-to-Peer-Verbindungen.
Lokale und Internetverbindung prüfen
Verwenden Sie den CTS-Test MultiStaConcurrencyWifiNetworkSpecifierTest
, um diese Funktion zu validieren.
Gleichzeitige eingeschränkte und Internetverbindung
Mit der Funktion Gleichzeitige eingeschränkte und Internetverbindung kann das Gerät gleichzeitig eine Verbindung zu einem primären WLAN für den Nutzer und einem eingeschränkten WLAN herstellen, das nur für ausgewählte Apps verfügbar ist.
Apps können mithilfe der WifiManager#isStaConcurrencyForRestrictedConnectionsSupported()
API prüfen, ob diese Funktion auf dem Gerät unterstützt wird.
So ermöglichen Sie einem Gerät die Verbindung mit sekundären eingeschränkten WLANs:
Fügen Sie WLAN-Netzwerkvorschläge hinzu, indem Sie
setOemPaid
odersetOemPrivate
auf „wahr“ setzen.Reichen Sie in
ConnectivityManager
eineNetworkRequest
mit den entsprechenden Funktionen ein:NET_CAPABILITY_OEM_PAID
fürsetOemPaid
NET_CAPABILITY_OEM_PRIVATE
fürsetOemPrivate
Wenn das Gerät Scanergebnisse mit einem Netzwerk erkennt, das dem kostenpflichtigen oder privaten Vorschlag des OEM entspricht, stellt es automatisch eine Verbindung als sekundäres Netzwerk her.
Gleichzeitige eingeschränkte und Internetverbindung prüfen
Verwenden Sie den MultiStaConcurrencyRestrictedWifiNetworkSuggestionTest
-CTS-Test, um diese Funktion zu validieren.
Gleichzeitige Verwendung mehrerer Netzwerke mit Internetverbindung
Die Funktion Gleichzeitige Verbindung mit mehreren Netzwerken mit Internetverbindung ist für Android 13 und höher verfügbar. Damit kann das Gerät gleichzeitig eine Verbindung zu zwei Netzwerken (Zugangspunkten) herstellen, die beide uneingeschränkt sind (alle Apps haben Zugriff) und Internetzugang bieten.
Apps können mit der Methode WifiManager#isStaConcurrencyForMultiInternetSupported()
prüfen, ob diese Funktion auf dem Gerät unterstützt wird.
Wenn das Feature unterstützt wird, können privilegierte Apps die Funktion mithilfe der Methode WifiManager#setStaConcurrencyForMultiInternetMode(int mode)
aktivieren. Das Feature hat die folgenden Modi:
WifiManager#WIFI_MULTI_INTERNET_MODE_DBS_AP
: Begrenzt Dual-Verbindungen auf die Dual-Bänder eines DBS-Zugangspunkts.WifiManager#WIFI_MULTI_INTERNET_MODE_MULTI_AP
: Verbindet sich mit beliebigen ZPs, bei denen die einzelnen Verbindungen unterschiedliche Bänder verwenden.WifiManager#WIFI_MULTI_INTERNET_MODE_DISABLED
: Deaktiviert die Funktion.
Verwenden Sie die Methode WifiManager#getStaConcurrencyForMultiInternetMode()
, um den derzeit aktiven Funktionsmodus abzufragen.
Wenn die Funktion aktiviert ist, können Sie mit den folgenden Schritten ein zusätzliches WLAN mit Internetzugang anfordern.
Erstellen Sie mit
WifiNetworkSpecifier.Builder
eine WLAN-Spezifikation. Wählen Sie mit der MethodesetBand()
einen Bereich für die Angabe aus. Geben Sie keine SSID oder BSSID an, da das WLAN-Framework das zusätzliche Netzwerk für das angegebene Band auswählt.Erstellen Sie mit
ConnectivityManager
eineNetworkRequest
mit derNET_CAPABILITY_INTERNET
-Funktion.Fügen Sie der Netzwerkanfrage die Angabe zusammen mit einer
NetworkCallback
-Instanz hinzu, um den Status der Anfrage zu verfolgen, und senden Sie die Anfrage anConnectivityManager
. Wenn im Scanergebnis ein gespeichertes Netzwerk mit dem angeforderten Band verfügbar ist und die Verbindung zum Netzwerk erfolgreich hergestellt wurde, wirdNetworkCallback.onAvailable()
auf dem Callback-Objekt aufgerufen.
Gleichzeitige Verwendung mehrerer Netzwerke mit Internetverbindung validieren
Verwenden Sie den folgenden CTS-Test, um diese Funktion zu validieren:
- CTS:
MultiStaConcurrencyMultiInternetWifiNetworkTest
Richtlinien für WLAN-Chips von Anbietern
Wi‑Fi-Chipanbieter müssen die folgenden Richtlinien einhalten, um die gleichzeitige Nutzung von STA und STA zu unterstützen.
Der WLAN-Chip muss zwei gleichzeitige STA-Verbindungen unterstützen. Das bedeutet, dass Folgendes unterstützt wird:
- Jede STA-Schnittstelle hat eine eindeutige MAC-Adresse, die vom Framework programmiert werden kann.
- Die sekundäre STA-Schnittstelle kann dynamisch erstellt und gelöscht werden.
- Jede STA kann mit einer anderen SSID verbunden werden (entweder innerhalb desselben oder in einem anderen Band).
- Jeder STA kann mit derselben SSID verbunden sein (entweder innerhalb desselben oder eines anderen Bandes). Die beiden STAs dürfen nie mit derselben BSSID verbunden sein.
Wichtige Funktionen müssen pro Schnittstelle ausgeführt werden und auf der primären Schnittstelle verfügbar sein. Im Folgenden finden Sie eine Liste dieser wichtigen Funktionen:
Roaming muss mindestens auf der primären Schnittstelle unterstützt werden (mit
IWifiChip.setMultiStaPrimaryConnection()
festgelegt). Wenn Roaming auf beiden Schnittstellen unterstützt wird, dürfen Entscheidungen für eine Verbindung nicht mit der zweiten gleichzeitigen Verbindung kollidieren. Beispielsweise darf eine Schnittstelle nicht zur BSSID der anderen Verbindung wechseln.APF (und andere Offloads wie ARP und NS) müssen mindestens auf der primären Schnittstelle unterstützt werden, die mit
IWifiChip.setMultiStaPrimaryConnection()
festgelegt wird.Statistiken der Sicherungsschicht müssen pro Schnittstelle erfolgen.
Im Folgenden finden Sie empfohlene WLAN-Chipimplementierungen für verschiedene Parallelitätsszenarien:
Der WLAN-Chip muss es dem Framework ermöglichen,
IWifiChip.setMultiStaUseCase()
mit einer der folgenden Konstanten aufzurufen, um die aktuelle Funktion anzugeben:DUAL_STA_TRANSIENT_PREFER_PRIMARY
: Gibt die Funktion „Make-Before-Break“ an. Die Qualität der primären Verbindung muss Vorrang vor der sekundären Verbindung haben.DUAL_STA_NON_TRANSIENT_UNBIASED
: gibt die gleichzeitige lokale Verbindung und die Internetverbindung oder die Funktion Gleichzeitige eingeschränkte und Internetverbindungen an. Die Qualität beider Verbindungen muss gleich priorisiert werden.
Da zwei gleichzeitige STAs zu den Betriebsmodi MCC, SCC und DBS führen können, muss die Anbieterimplementierung die beste Funkkonfiguration auswählen, wenn das Framework
IWifiChip.setMultiStaUseCase()
aufruft, um die Funktion anzugeben. Im Folgenden finden Sie allgemeine Richtlinien:- 2 x 2 + 2 x 2 DBS wird bevorzugt, falls verfügbar.
- Vermeiden Sie nach Möglichkeit 1 x 1 + 1 x 1 DBS, da die Verbindungsqualität übermäßig stark beeinträchtigt wird. Verwenden Sie stattdessen den Kundencenter-Kontakt.
- Der MCC-Taktzyklus muss vom Treiber oder der Firmware für die verschiedenen Funktionen konfigurierbar sein. Das Framework legt den Kundencenter-Arbeitszyklus nicht direkt fest, fragt diese Informationen aber mithilfe von
StaLinkLayerIfaceStats.timeSliceDutyCycleInPercent
ab. Bei der Verwendung von MCC empfehlen wir die folgenden Taktzyklen zwischen der primären und der sekundären Verbindung:
DUAL_STA_TRANSIENT_PREFER_PRIMARY
: 70% primäre, 30% sekundäre.DUAL_STA_NON_TRANSIENT_UNBIASED
: 50% primär, 50% sekundär.