5G-Funktionen zu Ihrer App hinzufügen

Android 11 bietet Funktionen zur Unterstützung von 5G in Ihren Apps. In diesem Thema werden die Funktionen beschrieben und es wird erläutert, wie das Hinzufügen von 5G-spezifischen Funktionen zu deiner App die Nutzerfreundlichkeit verbessern kann.

Für 5G entwickeln

Wenn Sie entscheiden, wie Sie 5G nutzen möchten, sollten Sie sich überlegen, welche Arten von Erlebnissen Sie schaffen möchten. Hier sind einige Möglichkeiten, wie 5G Ihre App verbessern kann:

  • Aktuelle Funktionen werden dank der Geschwindigkeits- und Latenzverbesserungen von 5G automatisch schneller und besser.
  • Verbessern Sie die Nutzerfreundlichkeit, indem Sie beispielsweise 4K-Videos anzeigen oder höher auflösende Spiel-Assets herunterladen.
  • Nachdem du dich vergewissert hast, dass die erhöhte Datennutzung für den Nutzer keine Kosten verursacht, kannst du Funktionen einbinden, die normalerweise nur über WLAN verfügbar sind, z. B. das proaktive Herunterladen von Inhalten, die normalerweise nur über WLAN ohne Datenlimit verfügbar sind.
  • Biete 5G-spezifische Funktionen, die nur mit hohen Geschwindigkeiten und niedriger Latenz funktionieren.

5G-Funktionalität

Android 11 führt die folgenden Funktionsänderungen und -verbesserungen ein:

Getaktete Verbindung prüfen

NET_CAPABILITY_TEMPORARILY_NOT_METERED ist eine in Android 11 hinzugefügte Funktion, die anhand von Informationen von Mobilfunkanbietern angibt, ob das von dir verwendete Netzwerk ohne Datenlimit ist.

Das neue Flag wird zusammen mit NET_CAPABILITY_NOT_METERED verwendet. Das vorhandene Flag gibt an, ob ein Netzwerk immer ohne Datenlimit ist, und gilt sowohl für WLAN- als auch für Mobilfunkverbindungen.

Der Unterschied zwischen den beiden Flags besteht darin, dass sich NET_CAPABILITY_TEMPORARILY_NOT_METERED ändern kann, ohne dass sich der Netzwerktyp ändert. Apps, die auf Android 11 ausgerichtet sind, können das Flag NET_CAPABILITY_TEMPORARILY_NOT_METERED verwenden. Auf Geräten mit Android 9 und niedriger wird das Flag vom Betriebssystem nicht gemeldet. Bei Apps, die unter Android 10 ausgeführt werden, ist dieses Flag möglicherweise verfügbar, je nachdem, auf welchem Gerät die App ausgeführt wird.

Wenn du festgestellt hast, dass das aktuelle Netzwerk vorübergehend oder dauerhaft ohne Datenlimit ist, kannst du Inhalte mit höherer Auflösung (z. B. 4K-Videos) anzeigen, Logs hochladen, Dateien sichern und Inhalte proaktiv herunterladen.

In den folgenden Abschnitten werden die Schritte zum Hinzufügen der Prüfung auf getaktete Verbindungen zu Ihrer App beschrieben.

Netzwerk-Callback registrieren

Registrieren Sie sich mit ConnectivityManager.registerDefaultNetworkCallback() für einen Netzwerk-Callback, um zu erfahren, wenn sich NetworkCapabilities ändert. Sie können Änderungen an NetworkCapabilities erkennen, indem Sie die Methode onCapabilitiesChanged() in Ihrer NetworkCallback überschreiben.

registerDefaultNetworkCallback() bewirkt, dass der registrierte Callback sofort nach der Registrierung ausgelöst wird, sodass die App Informationen zum aktuellen Status erhält. Zukünftige Callbacks sind wichtig, damit die Apps entsprechende Maßnahmen ergreifen können, wenn sich der Status von „ohne Datenlimit“ zu „mit Datenlimit“ oder umgekehrt ändert.

Auf getaktete Verbindung prüfen

Verwenden Sie das NetworkCapabilites-Objekt, das Sie in einem Netzwerk-Callback erhalten, um die Ausgabe des folgenden Codes zu prüfen:

Kotlin

NetworkCapabilities.hasCapability(NET_CAPABILITY_NOT_METERED) ||
  NetworkCapabilities.hasCapability(NET_CAPABILITY_TEMPORARILY_NOT_METERED)

Java

NetworkCapabilities.hasCapability(NET_CAPABILITY_NOT_METERED) ||
  NetworkCapabilities.hasCapability(NET_CAPABILITY_TEMPORARILY_NOT_METERED)

Wenn der Wert „true“ ist, kannst du das Netzwerk als Netzwerk ohne Datenlimit behandeln.

Weitere Überlegungen

Beachten Sie bei der Verwendung dieser Funktion Folgendes:

  • Wenn Sie das Flag NET_CAPABILITY_TEMPORARILY_NOT_METERED verwenden, müssen Sie Ihre App mit dem Android 11 SDK kompiliert haben.

  • Die NET_CAPABILITY_NOT_METERED-Funktion ist in einem Netzwerk dauerhaft. Ein Netzwerk mit dieser Funktion wird automatisch getrennt, wenn es die Funktion verliert (getaktet wird).

  • Im Gegensatz dazu kann sich NET_CAPABILITY_TEMPORARILY_NOT_METERED in einem Netzwerk ohne Trennung der Verbindung ändern. Daher müssen Apps auf den Callback onCapabilitiesChanged() warten, um zu reagieren, wenn das Netzwerk wieder in den Status „getaktet“ wechselt (die Funktion NET_CAPABILITY_TEMPORARILY_NOT_METERED verliert).

  • Ein Netzwerk kann nicht gleichzeitig NET_CAPABILITY_NOT_METERED und NET_CAPABILITY_TEMPORARILY_NOT_METERED haben.

5G-Erkennung

Ab Android 11 kannst du mithilfe eines Callback-basierten API-Aufrufs erkennen, ob das Gerät mit einem 5G-Netzwerk verbunden ist. Sie können prüfen, ob es sich bei der Verbindung um ein 5G-NR-Netzwerk (eigenständig) oder ein NSA-Netzwerk (nicht eigenständig) handelt.

Dieser API-Aufruf kann unter anderem für Folgendes verwendet werden:

  • 5G-Branding in deiner App anzeigen, um hervorzuheben, dass du ein einzigartiges 5G-Erlebnis bietest.

  • Aktivierung einer einzigartigen 5G-Funktion in der App, die nur in einem 5G-Netzwerk verfügbar ist. Sie sollten diese Statusprüfung mit der Prüfung auf getaktete Verbindungen kombinieren.

  • 5G-Verbindungen für Analysezwecke im Blick behalten

Wenn Sie die 5G-Erkennung ohne 5G-Gerät testen möchten, können Sie die dem Android SDK-Emulator hinzugefügten Funktionen verwenden.

5G erkennen

Rufe TelephonyManager.listen() auf und übergib LISTEN_DISPLAY_INFO_CHANGED, um festzustellen, ob der Nutzer eine 5G-Netzwerkverbindung hat. Überschreiben Sie die Methode onDisplayInfoChanged(), um den Netzwerktyp zu bestimmen, der für die Anzeige verwendet wird. Eine Ausnahme ist, wenn der Mobilfunkanbieter 5G als RAT für sein mmWave-Netzwerk anzeigt. In diesem Fall wird OVERRIDE_NETWORK_TYPE_NR_NSA zurückgegeben.

In der folgenden Tabelle sind die Netzwerke aufgeführt, die den Werten entsprechen:

Rückgabetyp Netzwerk
OVERRIDE_NETWORK_TYPE_LTE_ADVANCED_PRO Advanced Pro LTE (5Ge)
OVERRIDE_NETWORK_TYPE_NR_NSA NR (5G) für 5G-Sub-6-Netzwerke
OVERRIDE_NETWORK_TYPE_NR_NSA_MMWAVE (5G+/5G UW) für 5G-mmWave-Netze

Bandbreitenschätzung

Für die Bandbreitenschätzung wird das NetworkCapabilities-Objekt verwendet, mit dem Sie auch die getaktete Verbindung ermitteln. Mit diesem Objekt können Sie Bandbreitenschätzungen abrufen.

Die Zuverlässigkeit und Genauigkeit der Methoden zur Bandbreitenschätzung getLinkDownstreamBandwidthKbps() und getLinkUpstreamBandwidthKbps() verbessern sich in Android 11 aufgrund von Upgrades der Framework-Unterstützung und Fehlerkorrekturen für Plattform/Modem, um 5G zu unterstützen.

Die Standardbandbreiten dienen nur als Richtwerte für den Start der App. Das sollte Ihnen beim Szenario „Start im inaktiven Zustand“ helfen. Ihre App sollte die Messwerte erfassen, sobald Nutzer mit der App interagieren, und das Streamingverhalten dynamisch anpassen. Sie können beispielsweise die Auflösung des Videos basierend auf der Bandbreitenschätzung beim Start auswählen. Prüfe die Schätzungen weiterhin, während Nutzer die App verwenden. Wenn sich der Verbindungstyp und die Signalstärke ändern, passe das Verhalten deiner App entsprechend an.