Android 11 ajoute une fonctionnalité permettant de prendre en charge la 5G dans vos applications. Cet article présente la fonctionnalité et vous 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 vitesse et de 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 mesure
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 rappelonCapabilitiesChanged()
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
etNET_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.