Android 11 aggiunge funzionalità per supportare il 5G nelle tue app. Questo argomento tratta la funzionalità e fornisce una panoramica di come l'aggiunta di funzionalità specifiche del 5G alla tua app può migliorare l'esperienza utente.
Creare per il 5G
Quando decidi come interagire con il 5G, pensa a quali tipi di esperienze vuoi creare. Ecco alcuni modi in cui il 5G può migliorare la tua app:
- Migliorare e velocizzare automaticamente le esperienze attuali grazie ai miglioramenti di velocità e latenza del 5G.
- Migliora l'esperienza utente, ad esempio mostrando video in 4K o scaricando asset di gioco a risoluzione più elevata.
- Dopo aver confermato che l'aumento dell'utilizzo dei dati non comporterà costi per l'utente, includi esperienze normalmente fornite solo tramite Wi-Fi, ad esempio il download proattivo di contenuti in genere riservati al Wi-Fi senza limiti.
- Offri esperienze uniche per il 5G che funzionano solo con alta velocità e bassa latenza.
Funzionalità 5G
Android 11 introduce le seguenti modifiche e miglioramenti alle funzionalità:
Controllare la misurazione
La
NET_CAPABILITY_TEMPORARILY_NOT_METERED
è una funzionalità aggiunta in Android 11 che indica se la
rete che stai utilizzando è senza limiti in base alle informazioni fornite dagli operatori
di telefonia mobile.
Il nuovo flag viene utilizzato insieme a
NET_CAPABILITY_NOT_METERED
.
Il flag esistente indica se una rete è sempre senza costi e si applica
sia alle connessioni Wi-Fi che a quelle cellulari.
La differenza tra i due flag è che
NET_CAPABILITY_TEMPORARILY_NOT_METERED
può cambiare senza che il tipo di rete
cambi. Le app che hanno come target Android 11 possono utilizzare il
flag NET_CAPABILITY_TEMPORARILY_NOT_METERED
. Sui dispositivi con Android 9 e versioni precedenti, il sistema operativo non segnalerà il flag. Per le app in esecuzione su Android 10,
questo flag potrebbe essere disponibile, a seconda del dispositivo su cui viene eseguito.
Una volta stabilito che la rete attuale è temporaneamente o definitivamente senza limiti di dati, puoi visualizzare contenuti a risoluzione più elevata (ad esempio video in 4K), caricare log, eseguire il backup dei file e scaricare in modo proattivo i contenuti.
Le sezioni seguenti descrivono i passaggi per aggiungere il controllo della misurazione all'app.
Registrare un callback di rete
Registrati per un callback di rete utilizzando
ConnectivityManager.registerDefaultNetworkCallback()
per sapere quando NetworkCapabilities
cambia. Puoi rilevare le modifiche a
NetworkCapabilities
eseguendo l'override del
metodo onCapabilitiesChanged()
nel tuo NetworkCallback
.
registerDefaultNetworkCallback()
fa sì che il callback registrato venga attivato
immediatamente al momento della registrazione, fornendo all'app informazioni sullo stato attuale. I callback
futuri sono fondamentali per consentire alle app di intraprendere l'azione appropriata quando lo stato
cambia da non a consumo a consumo o viceversa.
Verificare la misurazione
Utilizza l'oggetto NetworkCapabilites
che ricevi in un callback di rete per
controllare l'output del seguente codice:
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)
Se il valore è true, puoi considerare la rete come non a consumo.
Considerazioni aggiuntive
Quando utilizzi questa funzionalità, tieni presente quanto segue:
L'utilizzo del flag
NET_CAPABILITY_TEMPORARILY_NOT_METERED
richiede che tu abbia compilato la tua app in base all'SDK Android 11.La funzionalità
NET_CAPABILITY_NOT_METERED
è permanente su una rete. Una rete con questa funzionalità si disconnetterà automaticamente se la perde (diventa a consumo).Al contrario,
NET_CAPABILITY_TEMPORARILY_NOT_METERED
può cambiare su una rete senza disconnettersi. Pertanto, le app devono essere in ascolto del callbackonCapabilitiesChanged()
per gestire il momento in cui la rete torna allo stato a consumo (perde la funzionalitàNET_CAPABILITY_TEMPORARILY_NOT_METERED
).Una rete non può avere contemporaneamente
NET_CAPABILITY_NOT_METERED
eNET_CAPABILITY_TEMPORARILY_NOT_METERED
.
Rilevamento 5G
A partire da Android 11, puoi rilevare se il dispositivo è connesso a una rete 5G utilizzando una chiamata API basata su callback. Puoi verificare se la connessione è una rete 5G NR (standalone) o NSA (non-standalone).
Alcuni utilizzi di questa chiamata API possono includere:
Mostrare il brand 5G nella tua app per evidenziare che offri un'esperienza 5G unica.
Attivazione di un'esperienza 5G unica nell'app solo quando si è connessi a una rete 5G. Devi abbinare questo controllo dello stato al controllo della misurazione.
Monitoraggio delle connessioni 5G a scopo di analisi.
Per testare il rilevamento del 5G senza un dispositivo 5G, puoi utilizzare le funzionalità aggiunte all'emulatore dell'SDK Android.
Rilevare il 5G
Chiama
TelephonyManager.listen()
,
passando
LISTEN_DISPLAY_INFO_CHANGED
,
per determinare se l'utente ha una connessione di rete 5G. Esegui l'override del metodo
onDisplayInfoChanged()
per determinare il tipo di rete utilizzato a scopo di visualizzazione. Un'eccezione
è che se l'operatore sceglie di mostrare 5G come RAT per la propria rete mmWave,
viene restituito OVERRIDE_NETWORK_TYPE_NR_NSA
.
La tabella seguente mostra le reti corrispondenti ai valori:
Tipo di reso | Rete |
---|---|
OVERRIDE_NETWORK_TYPE_LTE_ADVANCED_PRO |
Advanced Pro LTE (5Ge) |
OVERRIDE_NETWORK_TYPE_NR_NSA |
NR (5G) per le reti 5G sub-6 |
OVERRIDE_NETWORK_TYPE_NR_NSA_MMWAVE |
(5G+/5G UW) per le reti 5G mmWave |
Stima della larghezza di banda
La stima della larghezza di banda utilizza l'oggetto NetworkCapabilities
con cui lavori
quando determini la misurazione. Puoi ottenere stime della larghezza di banda utilizzando questo oggetto.
L'affidabilità e la precisione dei metodi di stima della larghezza di banda
getLinkDownstreamBandwidthKbps()
e
getLinkUpstreamBandwidthKbps()
migliorano in Android 11 grazie agli upgrade del supporto del framework e
alle correzioni di bug della piattaforma/del modem per supportare il 5G.
I valori predefiniti della larghezza di banda forniscono indicazioni solo sull'avvio dell'app. Questo dovrebbe aiutarti con lo scenario di "avvio al minimo". La tua app deve misurare ciò che vede una volta che gli utenti hanno iniziato a interagire con l'app e regolare il comportamento di streaming in modo dinamico. Ad esempio, puoi scegliere la risoluzione del video da fornire in base alla stima della larghezza di banda all'avvio. Continua a controllare le stime man mano che gli utenti utilizzano l'app. Man mano che il tipo e l'intensità della connessione cambiano, adegua il comportamento dell'app di conseguenza.