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 rappelonCapabilitiesChanged()
à 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
etNET_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.