Android 11 aggiunge funzionalità per supportare il 5G nelle tue app. Questo argomento illustra la funzionalità e fornisce una panoramica di come l'aggiunta di funzionalità specifiche per il 5G alla tua app possa migliorare l'esperienza utente.
Sviluppare per il 5G
Quando decidi come interagire con il 5G, pensa ai tipi di esperienze che stai cercando di creare. Ecco alcuni modi in cui il 5G può migliorare la tua app:
- Rendi automaticamente le esperienze attuali più veloci e migliori grazie ai miglioramenti della velocità e della 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 scarica in modo proattivo i contenuti in genere riservati al Wi-Fi non a consumo.
- Offri esperienze uniche per il 5G che funzionano solo con velocità elevate e bassa latenza.
Funzionalità 5G
Android 11 introduce le seguenti modifiche e miglioramenti delle funzionalità:
Controllare se la rete è a consumo
NET_CAPABILITY_TEMPORARILY_NOT_METERED
è una funzionalità aggiunta in Android 11 che indica se la
rete che stai utilizzando non è a consumo 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 non è mai a consumo e si applica a
entrambe le connessioni Wi-Fi e cellulari.
La differenza tra i due flag è
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
NET_CAPABILITY_TEMPORARILY_NOT_METERED flag. 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 è in esecuzione.
Una volta stabilito che la rete attuale non è a consumo in modo temporaneo o permanente 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 illustrano i passaggi per aggiungere il controllo della rete a consumo alla tua app.
Registrare un callback di rete
Registra un callback di rete utilizzando
ConnectivityManager.registerDefaultNetworkCallback()
per ricevere una notifica quando cambiano NetworkCapabilities. Puoi rilevare le modifiche a
NetworkCapabilities sostituendo il
onCapabilitiesChanged()
metodo 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 le azioni appropriate quando lo stato
passa da non a consumo a consumo o viceversa.
Controllare se la rete è a consumo
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:
Per utilizzare il flag
NET_CAPABILITY_TEMPORARILY_NOT_METERED, devi aver compilato l'app con l'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_METEREDpuò cambiare su una rete senza disconnettersi. Pertanto, le app devono ascoltare ilonCapabilitiesChanged()callback per gestire il momento in cui la rete torna allo stato a consumo (perde laNET_CAPABILITY_TEMPORARILY_NOT_METEREDfunzionalità).Una rete non può avere contemporaneamente
NET_CAPABILITY_NOT_METEREDeNET_CAPABILITY_TEMPORARILY_NOT_METERED.
Rilevamento del 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 stai offrendo un'esperienza 5G unica.
Attivare un'esperienza 5G unica nell'app solo quando si è su una rete 5G. Dovresti abbinare questo controllo dello stato al controllo della rete a consumo.
Tenere traccia delle connessioni 5G a fini 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. Sostituisci il
onDisplayInfoChanged()
metodo per determinare il tipo di rete utilizzata per la visualizzazione. Un'eccezione
è che se l'operatore sceglie di mostrare 5G come RAT per la sua rete mmWave,
OVERRIDE_NETWORK_TYPE_NR_NSA viene restituito.
La tabella seguente mostra le reti che corrispondono ai valori:
| Tipo di restituzione | Rete |
|---|---|
OVERRIDE_NETWORK_TYPE_LTE_ADVANCED_PRO |
LTE Advanced Pro (5Ge) |
OVERRIDE_NETWORK_TYPE_NR_NSA |
NR (5G) per reti 5G Sub-6 |
OVERRIDE_NETWORK_TYPE_NR_NSA_MMWAVE |
(5G+/5G UW) per reti 5G mmWave |
Stima della larghezza di banda
La stima della larghezza di banda utilizza l'oggetto NetworkCapabilities con cui lavori
quando determini se la rete è a consumo. Puoi ottenere stime della larghezza di banda utilizzando questo oggetto.
L'affidabilità e l'accuratezza 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.
Le impostazioni predefinite della larghezza di banda forniscono indicazioni solo sull'avvio dell'app. Questo dovrebbe aiutarti nello scenario "avvio inattivo". L'app deve misurare ciò che vede una volta che gli utenti hanno iniziato a interagire con l'app e regolare dinamicamente il comportamento di streaming. 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 la potenza della connessione cambiano, adatta di conseguenza il comportamento dell'app.