Android 11 aggiunge funzionalità per supportare il 5G nelle tue app. Questo argomento tratta la funzionalità e offre una panoramica di come l'aggiunta di funzionalità specifiche per il 5G alla tua app può migliorare l'esperienza utente.
Sviluppa per il 5G
Quando decidi come utilizzare 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ù rapide e migliori grazie ai miglioramenti in termini di velocità e latenza del 5G.
- Migliora l'esperienza utente, ad esempio mostrando video 4K o scaricando asset di gioco ad alta risoluzione.
- Dopo aver verificato che l'aumento dell'utilizzo dei dati non comporta costi per l'utente, includi le esperienze normalmente fornite soltanto tramite Wi-Fi, come il download proattivo di contenuti generalmente riservati a reti Wi-Fi senza limiti.
- Fornisci esperienze uniche del 5G che funzionano solo con alta velocità e bassa latenza.
Funzionalità 5G
Android 11 introduce le seguenti modifiche e miglioramenti alle funzionalità:
Controlla il livello di misurazione
NET_CAPABILITY_TEMPORARILY_NOT_METERED
è una funzionalità aggiunta in Android 11 che indica se la rete in uso è illimitata 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 a consumo e si applica sia alle connessioni Wi-Fi sia alla rete cellulare.
La differenza tra i due flag è
NET_CAPABILITY_TEMPORARILY_NOT_METERED
potrebbe cambiare senza che venga modificato il tipo
di rete. Le app destinate ad Android 11 possono usare 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 eseguite su Android 10,
questo flag potrebbe essere disponibile a seconda del dispositivo.
Una volta stabilito che la rete attuale è temporaneamente o definitivamente illimitata, puoi mostrare contenuti a risoluzione più elevata (ad esempio video 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 del monitoraggio nella tua app.
Registra un callback di rete
Registrati per un callback di rete utilizzando
ConnectivityManager.registerDefaultNetworkCallback()
per sentire quando NetworkCapabilities
cambia. Puoi rilevare le modifiche a
NetworkCapabilities
eseguendo l'override del metodo
onCapabilitiesChanged()
in NetworkCallback
.
registerDefaultNetworkCallback()
fa sì che il callback registrato si attivi
immediatamente una volta registrato, fornendo all'app informazioni sullo stato attuale. I callback futuri sono fondamentali affinché le app intraprendano le azioni appropriate quando lo stato passa da non a consumo a a consumo o viceversa.
Controlla 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 trattare la rete come illimitata.
Considerazioni aggiuntive
Quando utilizzi questa funzionalità, tieni presente quanto segue:
L'utilizzo del flag
NET_CAPABILITY_TEMPORARILY_NOT_METERED
richiede che la tua app sia compilata in base all'SDK Android 11.La funzionalità
NET_CAPABILITY_NOT_METERED
è permanente su una rete. Una rete con questa funzionalità si disconnette automaticamente se perde la funzionalità (viene a consumo).Al contrario,
NET_CAPABILITY_TEMPORARILY_NOT_METERED
potrebbe cambiare su una rete senza disconnettersi. Di conseguenza, le app devono rimanere in ascolto del callbackonCapabilitiesChanged()
da gestire quando la rete torna allo stato a consumo (perde la funzionalitàNET_CAPABILITY_TEMPORARILY_NOT_METERED
).Una rete non può avere sia
NET_CAPABILITY_NOT_METERED
siaNET_CAPABILITY_TEMPORARILY_NOT_METERED
contemporaneamente.
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 (autonoma) o NSA (non autonoma).
Questa chiamata API può essere utilizzata per:
Mostrare il branding 5G nella tua app per evidenziare che stai offrendo un'esperienza 5G unica.
Attivazione di un'esperienza 5G unica nell'app solo quando si è connessi a una rete 5G. Devi associare questo controllo dello stato al controllo della misurazione.
Monitoraggio delle connessioni 5G a fini di analisi.
Per testare il rilevamento 5G senza un dispositivo 5G, puoi utilizzare le funzionalità aggiunti all'emulatore SDK Android.
Rileva il 5G
Chiama
TelephonyManager.listen()
,
trasmissione
LISTEN_DISPLAY_INFO_CHANGED
,
per determinare se l'utente ha una connessione di rete 5G. Sostituisci il metodo onDisplayInfoChanged()
per determinare il tipo di rete utilizzato per la visualizzazione. Un'eccezione è che se l'operatore sceglie di mostrare 5G come RAT per la rete mmWave, viene restituito OVERRIDE_NETWORK_TYPE_NR_NSA
.
La tabella seguente mostra le reti che corrispondono ai valori:
Tipo restituito | Rete |
---|---|
OVERRIDE_NETWORK_TYPE_LTE_ADVANCED_PRO |
LTE Pro avanzata (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
per determinare la misurazione della 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()
sono migliorate in Android 11 grazie agli upgrade al supporto del framework e alle correzioni di bug relativi a piattaforma/modem per il 5G.
Le impostazioni predefinite relative alla larghezza di banda forniscono indicazioni solo sull'avvio dell'app. Questo dovrebbe aiutarti con lo scenario di avvio in caso di inattività. L'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 video da fornire in base alla stima della larghezza di banda all'avvio. Continua a controllare le stime man mano che i tuoi utenti usano l'app; man mano che il tipo e la forza della connessione cambiano, regola il comportamento dell'app di conseguenza.