Ajouter des fonctionnalités 5G à votre application

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

Concevoir pour la 5G

Lorsque vous décidez de la façon d'utiliser la 5G, réfléchissez aux types d'expériences que vous essayez de créer. Voici quelques-uns des avantages de la 5G pour votre application:

  • Améliorez automatiquement et plus rapidement les expériences actuelles grâce aux améliorations apportées à la vitesse et à la latence de la 5G.
  • Améliorez l'expérience utilisateur, par exemple en diffusant des vidéos 4K ou en téléchargeant des composants de jeu avec une résolution plus élevée.
  • Après avoir vérifié que l'augmentation de la consommation de données ne coûtera pas à l'utilisateur, incluez les expériences qui ne sont normalement disponibles que via le Wi-Fi, telles que le téléchargement proactif généralement réservé au Wi-Fi sans compteur.
  • Offrez des expériences uniques à la 5G qui ne fonctionnent qu'avec des débits élevés et une faible latence.

Fonctionnalité 5G

Android 11 apporte les modifications et améliorations suivantes aux fonctionnalités:

Vérifier la facturation à l'usage

NET_CAPABILITY_TEMPORARILY_NOT_METERED est une fonctionnalité ajoutée à 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 de téléphonie mobile.

La nouvelle option est utilisée 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 mobiles.

La différence entre les deux options est que NET_CAPABILITY_TEMPORARILY_NOT_METERED peut changer sans que le type de réseau soit modifié. 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 cet indicateur. Pour les applications exécutées sous Android 10, cet indicateur peut être disponible en fonction de l'appareil sur lequel elle s'exécute.

Une fois que vous avez déterminé que le réseau actuel n'est pas facturé à l'usage (temporairement ou définitivement), vous pouvez afficher du contenu avec une résolution plus élevée (comme des vidéos 4K), des journaux de mise en ligne, des fichiers de sauvegarde et des téléchargements de contenu proactifs.

Les sections suivantes décrivent les étapes à suivre pour ajouter un contrôle de mesure à votre application.

Enregistrer un rappel réseau

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

registerDefaultNetworkCallback() entraîne le déclenchement immédiat du rappel enregistré, ce qui fournit des informations sur l'état actuel de l'application. Les rappels futurs sont essentiels pour que les applications puissent prendre les mesures appropriées lorsque l'état passe d'un état non facturé à un compteur ou inversement.

Vérifier la facturation à 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 considérer le réseau comme n'étant pas facturé à l'usage.

Facteurs supplémentaires

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

  • L'utilisation de l'indicateur NET_CAPABILITY_TEMPORARILY_NOT_METERED nécessite de 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 la perd (c'est-à-dire qu'il est 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() à gérer lorsque le réseau revient à son état facturé à l'usage (perte la fonctionnalité NET_CAPABILITY_TEMPORARILY_NOT_METERED).

  • Un réseau ne peut pas contenir à 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 le rappel. Vous pouvez vérifier si la connexion est un réseau 5G NR (autonome) ou NSA (non autonome).

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

  • Afficher le branding 5G dans votre application pour mettre en avant que vous offrez une expérience 5G unique

  • Activation d'une expérience 5G unique dans l'application uniquement sur 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 5G sans appareil 5G, vous pouvez utiliser les fonctionnalités ajoutées à Android SDK Emulator.

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. Seule 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 indique les réseaux correspondant 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 avec lequel vous travaillez pour déterminer la facturation à l'usage. Vous pouvez obtenir des estimations de bande passante en utilisant 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 en raison des mises à niveau de la compatibilité avec les frameworks et des corrections de bugs de plate-forme/modem pour la 5G.

Les bandes passantes par défaut ne fournissent des conseils qu'au démarrage de l'application. Cela devrait vous aider dans le scénario 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 au fur et à mesure que vos utilisateurs utilisent l'application. Ajustez le comportement de votre application en conséquence à mesure que le type de connexion et la force changent.