Ajouter des fonctionnalités 5G à votre application

Android 11 ajoute des fonctionnalités compatibles avec la 5G dans vos applications. Cet article décrit les fonctionnalités et explique comment l'ajout de fonctionnalités spécifiques à la 5G à votre application peut améliorer l'expérience utilisateur.

Concevoir des applications pour la 5G

Lorsque vous décidez comment utiliser la 5G, réfléchissez aux types d'expériences que vous essayez de créer. Voici quelques-unes des façons dont la 5G peut améliorer votre application:

  • Améliorez automatiquement les expériences actuelles grâce aux améliorations de vitesse et de latence de la 5G.
  • Améliorez l'expérience utilisateur, par exemple en diffusant des vidéos 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 ne coûtera pas à l'utilisateur, incluez les expériences normalement fournies uniquement via le Wi-Fi, telles que le téléchargement proactive de contenu généralement réservé au Wi-Fi sans compteur.
  • Proposez des expériences uniques à la 5G, qui ne fonctionnent qu'avec des vitesses élevées et une faible latence.

Fonctionnalité 5G

Android 11 introduit les modifications et améliorations de fonctionnalités suivantes:

Vérifier la facturation à l'usage

NET_CAPABILITY_TEMPORARILY_NOT_METERED est une fonctionnalité ajoutée dans Android 11 qui vous indique si le réseau que vous utilisez n'est pas facturé à l'usage, 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 n'est toujours pas facturé à l'usage, et s'applique à la fois aux connexions Wi-Fi et aux connexions mobiles.

La différence entre les deux options est NET_CAPABILITY_TEMPORARILY_NOT_METERED, qui 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, l'OS ne signalera pas cet indicateur. Pour les applications exécutées sous Android 10, cet indicateur peut être disponible, selon l'appareil sur lequel il s'exécute.

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

Les sections suivantes décrivent les étapes à suivre pour ajouter la vérification de la mesure à l'usage dans votre application.

Enregistrer un rappel réseau

Inscrivez-vous à un rappel réseau à l'aide de ConnectivityManager.registerDefaultNetworkCallback() pour entendre quand NetworkCapabilities change. 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 l'enregistrement et fournit à l'application des informations sur l'état actuel. Les rappels ultérieurs sont essentiels pour que les applications puissent prendre les mesures appropriées lorsque l'état passe d'une mesure non mesurée à mesurée, ou inversement.

Vérifier la facturation à l'usage

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 que le réseau n'est pas facturé à l'usage.

Facteurs supplémentaires

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

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

  • La capacité NET_CAPABILITY_NOT_METERED est permanente sur un réseau. Un réseau doté de cette capacité se déconnectera automatiquement s'il perd cette capacité (c'est-à-dire qu'il sera facturé à l'usage).

  • 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 moment où le réseau revient à son état facturé à l'usage (perte 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 le rappel. Vous pouvez vérifier si la connexion est un réseau 5G NR (autonome) ou NSA (non autonome).

Voici quelques utilisations de cet appel d'API:

  • afficher la marque 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 d'état à la vérification de la facturation à l'usage.

  • Effectuer le suivi des 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 réseau 5G. Remplacez la méthode onDisplayInfoChanged() pour déterminer le type de réseau utilisé à des fins d'affichage. Il existe une exception : si l'opérateur choisit d'afficher la 5G comme RAT pour son réseau mmWave, OVERRIDE_NETWORK_TYPE_NR_NSA est renvoyé.

Le tableau suivant présente les réseaux correspondant à ces valeurs:

Type renvoyé Réseau
OVERRIDE_NETWORK_TYPE_LTE_ADVANCED_PRO Advanced Pro LTE (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 déterminez la facturation à l'usage. Cet objet vous permet d'obtenir des estimations de la bande passante.

La fiabilité et la précision des méthodes d'estimation de la bande passante getLinkDownstreamBandwidthKbps() et getLinkUpstreamBandwidthKbps() s'améliorent dans Android 11 en raison des mises à niveau de la compatibilité avec le framework et des corrections de bugs de plate-forme/modem pour s'adapter à la 5G.

Les paramètres de bande passante par défaut ne fournissent des conseils qu'au démarrage de l'application. Cela devrait vous être utile dans le scénario "Démarrage en cas d'inactivité". Votre application doit mesurer ce qu'elle voit une fois que les utilisateurs ont commencé à interagir avec elle et ajuster son comportement de streaming de manière dynamique. Par exemple, vous pouvez choisir la résolution 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 le type et l'intensité de la connexion changent, ajustez le comportement de votre application en conséquence.