Ajouter des fonctionnalités 5G à votre application

Android 11 ajoute une fonctionnalité permettant de prendre en charge la 5G dans vos applications. Cet article présente la fonctionnalité et explique comment ajouter des fonctionnalités spécifiques à la 5G à votre application pour améliorer l'expérience utilisateur.

Compiler pour la 5G

Lorsque vous décidez de la manière dont vous allez interagir avec la 5G, réfléchissez aux types d'expériences que vous essayez de créer. Voici quelques exemples d'améliorations que la 5G peut apporter à votre application:

  • Améliorez automatiquement les expériences actuelles grâce aux améliorations de la vitesse et de la latence de la 5G.
  • Améliorez l'expérience utilisateur, par exemple en affichant des vidéos en 4K ou en téléchargeant des éléments de jeu en haute résolution.
  • Après avoir vérifié que l'augmentation de la consommation de données n'entraîne pas de frais pour l'utilisateur, incluez des expériences normalement fournies uniquement via le Wi-Fi, comme le téléchargement proactif de contenus généralement réservés au Wi-Fi illimité.
  • Proposez des expériences uniques à la 5G qui ne fonctionnent qu'avec des débits élevés et une latence faible.

Fonctionnalités 5G

Android 11 introduit les modifications et améliorations fonctionnelles suivantes:

Vérifier la facturation

NET_CAPABILITY_TEMPORARILY_NOT_METERED est une fonctionnalité ajoutée dans Android 11 qui indique si le réseau que vous utilisez est illimité en fonction des informations fournies par les opérateurs mobiles.

Le nouvel indicateur est utilisé avec NET_CAPABILITY_NOT_METERED. L'indicateur existant indique si un réseau est toujours sans débit limité et s'applique aux connexions Wi-Fi et aux connexions mobiles.

La différence entre les deux indicateurs est que NET_CAPABILITY_TEMPORARILY_NOT_METERED peut changer sans que le type de réseau ne change. Les applications qui ciblent Android 11 peuvent utiliser l'indicateur NET_CAPABILITY_TEMPORARILY_NOT_METERED. Sur les appareils équipés d'Android 9 ou version antérieure, le système d'exploitation ne signale pas l'indicateur. Pour les applications exécutées sur Android 10, cet indicateur peut être disponible, en fonction de l'appareil sur lequel il s'exécute.

Une fois que vous avez déterminé que le réseau actuel n'est pas limité temporairement ou définitivement, vous pouvez afficher des contenus en haute résolution (comme des vidéos 4K), importer des journaux, sauvegarder des fichiers et télécharger des contenus de manière proactive.

Les sections suivantes décrivent la procédure à suivre pour ajouter la vérification de la mesure à votre application.

Enregistrer un rappel réseau

Enregistrez un rappel réseau à l'aide de ConnectivityManager.registerDefaultNetworkCallback() pour être informé des modifications de NetworkCapabilities. Vous pouvez détecter les modifications apportées à NetworkCapabilities en remplaçant la méthode onCapabilitiesChanged() dans votre NetworkCallback.

registerDefaultNetworkCallback() déclenche immédiatement le rappel enregistré lors de son enregistrement, fournissant à l'application des informations sur l'état actuel. Les futurs rappels sont essentiels pour que les applications prennent les mesures appropriées lorsque l'état passe de non mesuré à mesuré, ou inversement.

Vérifier la facturation

Utilisez l'objet NetworkCapabilites que vous recevez dans un rappel réseau pour vérifier la sortie du code suivant:

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)

Si la valeur est "true", vous pouvez considérer le réseau comme illimité.

Facteurs supplémentaires

Lorsque vous utilisez cette fonctionnalité, tenez compte des points suivants:

  • Pour utiliser l'indicateur NET_CAPABILITY_TEMPORARILY_NOT_METERED, vous devez avoir compilé votre application avec le SDK Android 11.

  • La capacité NET_CAPABILITY_NOT_METERED est permanente sur un réseau. Un réseau disposant de cette fonctionnalité se déconnecte automatiquement s'il la perd (il devient limité).

  • En revanche, NET_CAPABILITY_TEMPORARILY_NOT_METERED peut changer sur un réseau sans se déconnecter. Par conséquent, les applications doivent écouter le rappel onCapabilitiesChanged() pour gérer le retour du réseau à son état facturé à l'usage (perte de la fonctionnalité NET_CAPABILITY_TEMPORARILY_NOT_METERED).

  • Un réseau ne peut pas avoir à la fois NET_CAPABILITY_NOT_METERED et NET_CAPABILITY_TEMPORARILY_NOT_METERED.

Détection de la 5G

À partir d'Android 11, vous pouvez détecter si l'appareil est connecté à un réseau 5G à l'aide d'un appel d'API basé sur un rappel. Vous pouvez vérifier si la connexion est un réseau 5G NR (standalone) ou NSA (nonstandalone).

Voici quelques exemples d'utilisation de cet appel d'API:

  • Affichez le branding 5G dans votre application pour mettre en avant que vous proposez une expérience 5G unique.

  • Activation d'une expérience 5G unique dans l'application uniquement lorsque vous êtes connecté à un réseau 5G. Vous devez associer cette vérification de l'état à la vérification de la facturation.

  • Suivre les connexions 5G à des fins d'analyse

Pour tester la détection de la 5G sans appareil 5G, vous pouvez utiliser les fonctionnalités ajoutées à l'émulateur du SDK Android.

Détecter la 5G

Appelez TelephonyManager.listen() en transmettant LISTEN_DISPLAY_INFO_CHANGED pour déterminer si l'utilisateur dispose d'une connexion au réseau 5G. Forcez la méthode onDisplayInfoChanged() pour déterminer le type de réseau utilisé à des fins d'affichage. Une exception est que si l'opérateur choisit d'afficher 5G comme RAT pour son réseau mmWave, OVERRIDE_NETWORK_TYPE_NR_NSA est renvoyé.

Le tableau suivant indique les chaînes qui correspondent aux valeurs:

Type renvoyé Réseau
OVERRIDE_NETWORK_TYPE_LTE_ADVANCED_PRO LTE Advanced Pro (5Ge)
OVERRIDE_NETWORK_TYPE_NR_NSA NR (5G) pour les réseaux 5G Sub-6
OVERRIDE_NETWORK_TYPE_NR_NSA_MMWAVE (5G+/5G UW) pour les réseaux 5G mmWave

Estimation de la bande passante

L'estimation de la bande passante utilise l'objet NetworkCapabilities avec lequel vous travaillez pour déterminer la facturation à l'usage. Vous pouvez obtenir des estimations de bande passante à l'aide de cet objet.

La fiabilité et la précision des méthodes d'estimation de la bande passante getLinkDownstreamBandwidthKbps() et getLinkUpstreamBandwidthKbps() s'améliorent dans Android 11 grâce aux mises à niveau de la prise en charge du framework et aux corrections de bugs de la plate-forme/du modem pour prendre en charge la 5G.

Les valeurs par défaut de la bande passante ne fournissent des conseils que sur le démarrage de l'application. Cela devrait vous aider avec le scénario "démarrage à l'arrêt". Votre application doit mesurer ce qu'elle voit une fois que vos utilisateurs ont commencé à interagir avec elle et ajuster son comportement de streaming de manière dynamique. Par exemple, vous pouvez choisir la résolution de la vidéo à fournir en fonction de l'estimation de la bande passante au démarrage. Continuez à vérifier les estimations à mesure que vos utilisateurs utilisent l'application. À mesure que leur type de connexion et leur force changent, ajustez le comportement de votre application en conséquence.