Android 11 ajoute des fonctionnalités pour prendre en charge la 5G dans vos applications. Cette rubrique présente la fonctionnalité et vous explique comment l'ajout de fonctionnalités spécifiques à la 5G à votre application peut améliorer l'expérience utilisateur.
Développer pour la 5G
Lorsque vous décidez comment interagir avec la 5G, réfléchissez aux types d'expériences que vous essayez de créer. Voici quelques exemples de la façon dont la 5G peut améliorer votre application :
- Améliorer automatiquement les expériences actuelles en termes de rapidité et de qualité 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 en 4K ou en téléchargeant des éléments de jeu en haute résolution.
- Après avoir confirmé que l'augmentation de la consommation de données n'entraînera 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 faible latence.
Fonctionnalité 5G
Android 11 introduit les modifications et améliorations de fonctionnalités suivantes :
Vérifier la mesure
NET_CAPABILITY_TEMPORARILY_NOT_METERED
est une fonctionnalité ajoutée dans Android 11 qui vous indique si le réseau que vous utilisez est illimité en fonction des informations fournies par les opérateurs mobiles.
La nouvelle option est utilisée avec NET_CAPABILITY_NOT_METERED
.
L'indicateur existant indique si un réseau est toujours non facturé à l'usage. Il s'applique aux connexions Wi-Fi et mobiles.
La différence entre les deux indicateurs (NET_CAPABILITY_TEMPORARILY_NOT_METERED
) peut changer sans que le type de réseau 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 l'indicateur. Pour les applications exécutées sous Android 10, cet indicateur peut être disponible, selon l'appareil sur lequel il est exécuté.
Une fois que vous avez déterminé que le réseau actuel est temporairement ou définitivement non limité, vous pouvez afficher du contenu en résolution supérieure (comme des vidéos 4K), importer des journaux, sauvegarder des fichiers et télécharger du contenu de manière proactive.
Les sections suivantes expliquent comment 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 savoir 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 le rappel enregistré immédiatement lors de l'enregistrement, ce qui permet à l'application d'obtenir 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 non facturé à facturé ou inversement.
Vérifier si la connexion est limitée
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 non limité.
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 doté de cette fonctionnalité se déconnecte automatiquement s'il la perd (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 moment où le réseau revient à son état facturé à l'usage (perd 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 (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 lorsqu'un réseau 5G est disponible. Vous devez associer cette vérification de l'état à la vérification de la mesure.
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 Android SDK.
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 : 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 réseaux correspondant 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 lorsque vous déterminez la facturation à l'usage. Vous pouvez obtenir des estimations de la 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 l'assistance du framework et aux corrections de bugs de la plate-forme/du modem pour 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 dans le scénario de "démarrage à l'arrêt". Votre application doit mesurer ce qu'elle voit une fois que vos utilisateurs ont commencé à interagir avec l'application 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. Ajustez le comportement de votre application en fonction de l'évolution du type et de la puissance de leur connexion.