5G-Funktionen für Ihre App

Android 11 bietet zusätzliche Funktionen zur Unterstützung von 5G in deinen Apps. In diesem Artikel erfahren Sie, welche Funktionen es gibt und wie Sie durch das Hinzufügen von 5G-spezifischen Funktionen in Ihrer App die Nutzerfreundlichkeit verbessern können.

Für 5G entwickeln

Überlegen Sie sich bei der Entscheidung, wie Sie 5G nutzen möchten, welche Art von Inhalten Sie realisieren möchten. Hier sind einige Möglichkeiten, wie Sie Ihre App mit 5G verbessern können:

  • Durch die verbesserte Geschwindigkeit und Latenz von 5G werden aktuelle Prozesse automatisch schneller und besser.
  • Verbessern Sie die Nutzerfreundlichkeit, indem Sie z. B. 4K-Videos anzeigen oder Spiele-Assets mit höherer Auflösung herunterladen.
  • Nachdem du bestätigt hast, dass die erhöhte Datennutzung für den Nutzer keine Kosten verursacht, füge Funktionen hinzu, die normalerweise nur über WLAN bereitgestellt werden, z. B. das proaktive Herunterladen von Inhalten, die normalerweise für kostenloses WLAN reserviert sind.
  • Bieten Sie einzigartige 5G-Funktionen, die nur mit hohen Geschwindigkeiten und niedrigen Latenzen funktionieren.

5G-Funktionalität

Mit Android 11 wurden die folgenden Funktionsänderungen und Verbesserungen eingeführt:

Zählerstand prüfen

NET_CAPABILITY_TEMPORARILY_NOT_METERED ist eine in Android 11 hinzugefügte Funktion, die dir auf der Grundlage von Informationen, die von Mobilfunkanbietern bereitgestellt werden, darüber informiert, ob das von dir verwendete Netzwerk kostenlos ist.

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

Der Unterschied zwischen den beiden Flags besteht darin, dass NET_CAPABILITY_TEMPORARILY_NOT_METERED sich ohne Änderung des Netzwerktyps ändern kann. 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 meldet das Betriebssystem die Markierung nicht. Bei Apps unter Android 10 ist dieses Flag möglicherweise verfügbar, je nachdem, auf welchem Gerät es ausgeführt wird.

Sobald Sie festgestellt haben, dass das aktuelle Netzwerk vorübergehend oder dauerhaft kostenlos ist, können Sie Inhalte mit höherer Auflösung (z. B. 4K-Video) anzeigen lassen, Protokolle hochladen, Dateien sichern und Inhalte proaktiv herunterladen.

In den folgenden Abschnitten wird beschrieben, wie Sie Ihrer App eine Metering-Prüfung hinzufügen.

Netzwerk-Callback registrieren

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

registerDefaultNetworkCallback() sorgt dafür, dass der registrierte Callback sofort ausgelöst wird, wenn er registriert wurde. Dadurch erhält die App Informationen zum aktuellen Status. Zukünftige Callbacks sind entscheidend, damit die Apps geeignete Maßnahmen ergreifen können, wenn sich der Status von „kostenlos“ zu „kostenpflichtig“ oder umgekehrt ändert.

Verbrauchsanzeige prüfen

Verwenden Sie das Objekt NetworkCapabilites, 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, können Sie das Netzwerk als „kostenlos“ behandeln.

Weitere Überlegungen

Beachten Sie bei der Arbeit mit dieser Funktion Folgendes:

  • Wenn du das Flag NET_CAPABILITY_TEMPORARILY_NOT_METERED verwenden möchtest, musst du deine App mit dem Android 11 SDK kompilieren.

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

  • Im Gegensatz dazu kann sich NET_CAPABILITY_TEMPORARILY_NOT_METERED in einem Netzwerk ändern, ohne die Verbindung zu trennen. Anwendungen müssen also darauf warten, dass der Callback onCapabilitiesChanged() verarbeitet wird, wenn das Netzwerk in seinen Zählerstatus zurückkehrt (verliert die NET_CAPABILITY_TEMPORARILY_NOT_METERED-Funktion).

  • Ein Netzwerk kann nicht gleichzeitig NET_CAPABILITY_NOT_METERED und NET_CAPABILITY_TEMPORARILY_NOT_METERED haben.

5G-Erkennung

Ab Android 11 kannst du einen Callback-basierten API-Aufruf verwenden, um zu erkennen, ob das Gerät mit einem 5G-Netzwerk verbunden ist. Sie können prüfen, ob die Verbindung ein 5G-NR-Netzwerk (eigenständiges Netzwerk) oder ein eigenständiges NSA-Netzwerk ist.

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

  • 5G-Branding in Ihrer App, um hervorzuheben, dass Sie die einzigartige 5G-Nutzung anbieten.

  • Das einzigartige 5G-Erlebnis in der App wird nur in einem 5G-Netzwerk aktiviert. Verbinden Sie diese Statusprüfung mit der Prüfung auf Zähldauer.

  • Behalten Sie den Überblick über 5G-Verbindungen zu Analysezwecken.

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

5G-Erkennung

Rufen Sie TelephonyManager.listen() auf und geben Sie LISTEN_DISPLAY_INFO_CHANGED ein, um festzustellen, ob der Nutzer eine 5G-Netzwerkverbindung hat. Überschreiben Sie die Methode onDisplayInfoChanged(), um den für Anzeigezwecke verwendeten Netzwerktyp zu bestimmen. Eine Ausnahme besteht darin, dass, wenn der Mobilfunkanbieter 5G als RAT für sein mmWave-Netzwerk anzeigt, OVERRIDE_NETWORK_TYPE_NR_NSA zurückgegeben wird.

In der folgenden Tabelle sehen Sie die Netzwerke, die diesen 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-Netzwerke

Bandbreitenschätzung

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

Die Zuverlässigkeit und Genauigkeit der Methoden zur Bandbreitenschätzung (getLinkDownstreamBandwidthKbps() und getLinkUpstreamBandwidthKbps()) wurde unter Android 11 verbessert, da die Framework-Unterstützung aktualisiert und Plattform-/Modem-Fehlerkorrekturen zur Unterstützung von 5G vorgenommen wurden.

Die Standardeinstellungen für die Bandbreite bieten nur Informationen zum App-Start. Dies sollte Ihnen beim „Start bei Inaktivität“ helfen. Ihre App sollte messen, was sie sieht, sobald Nutzer mit der App interagieren, und das Streamingverhalten dynamisch anpassen. Sie können beispielsweise die Auflösung des Videos auswählen, die basierend auf der Bandbreitenschätzung beim Start bereitgestellt werden soll. Prüfen Sie die Schätzungen, während Ihre Nutzer die App verwenden. Wenn sich ihr Verbindungstyp und ihre Stärke ändern, passen Sie das Verhalten der App entsprechend an.