Ajouter des fonctionnalités 5G à votre application

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

Concevoir pour la 5G

Lorsque vous décidez de la manière d'utiliser la 5G, réfléchissez aux types d'expériences que vous essayez de créer. Voici quelques exemples d'amélioration de votre application grâce à la 5G :

  • 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 4K ou en téléchargeant des éléments de jeu de résolution supérieure.
  • Après avoir vérifié que l'augmentation de l'utilisation des données n'entraînera pas de frais pour l'utilisateur, incluez des expériences normalement fournies uniquement en Wi-Fi, comme le téléchargement proactif de contenus généralement réservés au Wi-Fi sans compteur.
  • Proposez des expériences uniques à la 5G qui ne fonctionnent qu'avec des débits élevés et une faible latence.

Fonctionnalité 5G

Android 11 introduit les modifications et améliorations suivantes :

Vérifier la facturation à l'usage

La NET_CAPABILITY_TEMPORARILY_NOT_METERED est une fonctionnalité ajoutée dans Android 11 qui vous indique si le réseau que vous utilisez est sans compteur, en fonction des informations fournies par les opérateurs de téléphonie mobile.

Le nouveau flag est utilisé avec NET_CAPABILITY_NOT_METERED. L'indicateur existant indique si un réseau est toujours sans compteur et s'applique aux connexions Wi-Fi et aux connexions au réseau mobile.

La différence entre les deux options 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'option NET_CAPABILITY_TEMPORARILY_NOT_METERED. Sur les appareils équipés d'Android 9 ou d'une version antérieure, l'OS ne signale pas l'indicateur. Pour les applications exécutées sur Android 10, cette option peut être disponible, selon l'appareil sur lequel elles sont exécutées.

Une fois que vous avez déterminé que le réseau actuel est temporairement ou définitivement sans compteur, vous pouvez afficher du contenu en plus haute résolution (comme une vidéo 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 facturation à l'usage à votre application.

Enregistrer un rappel réseau

Demandez à recevoir 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 l'enregistrement, ce qui fournit à l'application des informations sur l'état actuel. Les rappels futurs sont essentiels pour que les applications prennent les mesures appropriées lorsque l'état passe de "sans compteur" à "avec compteur" ou inversement.

Vérifier si la connexion est facturée à l'usage

Utilisez l'objet NetworkCapabilites que vous recevez dans un rappel réseau pour vérifier le résultat 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 traiter le réseau comme un réseau sans compteur.

Informations complémentaires

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

  • Pour utiliser l'option 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 doté de cette fonctionnalité se déconnecte automatiquement s'il perd cette fonctionnalité (devient limité).

  • En revanche, NET_CAPABILITY_TEMPORARILY_NOT_METERED peut changer sur un réseau sans déconnexion. 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 de la fonctionnalité NET_CAPABILITY_TEMPORARILY_NOT_METERED).

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

Détection 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 (autonome) ou NSA (non autonome).

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

  • Afficher la marque 5G dans votre application pour souligner que vous proposez une expérience 5G unique.

  • Activer une expérience 5G unique dans l'application uniquement lorsque l'utilisateur est connecté à un réseau 5G. Vous devez associer cette vérification d'état à la vérification de la facturation à l'usage.

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

Le tableau suivant présente les réseaux qui correspondent aux 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 que vous utilisez 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() sont améliorées dans Android 11 grâce aux mises à niveau de la compatibilité 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 pour le démarrage de l'application. Cela devrait vous aider à résoudre le problème de 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 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. Lorsque le type et la puissance de leur connexion changent, ajustez le comportement de votre application en conséquence.