O Android 11 adiciona funcionalidade para ser compatível com 5G nos seus apps. Este tópico aborda a funcionalidade e fornece uma visão geral de como o acréscimo de funcionalidades específicas do 5G ao seu app pode melhorar a experiência do usuário.
Criar para 5G
Ao decidir como interagir com o 5G, pense nos tipos de experiências que você está tentando criar. Veja como o 5G pode melhorar seu app:
- Torne as experiências atuais mais rápidas e melhores com os aprimoramentos de velocidade e latência do 5G.
- Melhore a experiência do usuário com a exibição de vídeo em 4K ou o download de recursos de jogos de alta resolução.
- Depois de confirmar que o aumento do uso de dados não fornecerá custos ao usuário, inclua experiências normalmente fornecidas apenas por Wi-Fi, como o download proativo de conteúdo normalmente reservado para Wi-Fi ilimitado.
- Ofereça experiências exclusivas para o 5G que funcionam apenas com alta velocidade e baixa latência.
Funcionalidade 5G
O Android 11 traz as seguintes alterações e melhorias de funcionalidade:
Verificar a limitação
O
NET_CAPABILITY_TEMPORARILY_NOT_METERED
é um recurso adicionado no Android 11 que informa se a
rede que você está usando é ilimitada com base nas informações fornecidas pelas operadoras
de celular.
A nova sinalização é usada junto com NET_CAPABILITY_NOT_METERED
.
A sinalização existente indica se uma rede é sempre ilimitada e se aplica a conexões Wi-Fi e celulares.
A diferença entre as duas sinalizações é que NET_CAPABILITY_TEMPORARILY_NOT_METERED
pode mudar sem que o tipo de rede seja modificado. Apps voltados ao Android 11 podem usar a sinalização NET_CAPABILITY_TEMPORARILY_NOT_METERED
. Em dispositivos com Android 9 e versões anteriores, o SO não informará sobre a sinalização. Para apps executados no Android 10, essa sinalização pode estar disponível, dependendo do dispositivo em que está sendo executada.
Depois de determinar que a rede atual é ilimitada de forma temporária ou permanente, você pode exibir conteúdo de alta resolução (como vídeo em 4K), fazer upload de registros, fazer backup de arquivos e download proativo de conteúdo.
As seções a seguir abrangem as etapas para adicionar a verificação de limitação ao seu app.
Registrar um callback de rede
Registre um callback de rede usando ConnectivityManager.registerDefaultNetworkCallback()
para ouvir quando NetworkCapabilities
mudar. Você pode detectar mudanças em NetworkCapabilities
modificando o método onCapabilitiesChanged()
no NetworkCallback
.
registerDefaultNetworkCallback()
faz com que o callback seja acionado imediatamente quando registrado, fornecendo informações sobre o estado atual do app. Os callbacks futuros são essenciais para que os apps realizem as ações apropriadas quando o estado estiver mudando de ilimitado para limitado ou vice-versa.
Verificar a limitação
Use o objeto NetworkCapabilites
que você receber em um callback de rede para verificar a saída do código a seguir:
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 o valor for verdadeiro, você poderá tratar a rede como ilimitada.
Outras considerações
Ao trabalhar com essa funcionalidade, lembre-se do seguinte:
O uso da sinalização
NET_CAPABILITY_TEMPORARILY_NOT_METERED
requer a compilação do app no SDK do Android 11.O recurso
NET_CAPABILITY_NOT_METERED
é permanente em uma rede. Uma rede com esse recurso será desconectada automaticamente se perder o recurso (se tornar limitada).Por outro lado, o
NET_CAPABILITY_TEMPORARILY_NOT_METERED
pode mudar em uma rede sem causar a desconexão. Portanto, os apps precisam ouvir o callbackonCapabilitiesChanged()
para processar quando a rede retorna ao status limitado (perde o recursoNET_CAPABILITY_TEMPORARILY_NOT_METERED
).Uma rede não pode ter
NET_CAPABILITY_NOT_METERED
eNET_CAPABILITY_TEMPORARILY_NOT_METERED
ao mesmo tempo.
Detecção de 5G
A partir do Android 11, é possível detectar se o dispositivo está conectado a uma rede 5G usando uma chamada de API baseada em callback. Você pode verificar se a conexão é uma rede 5G NR (autônoma) ou NSA (não autônoma).
Alguns usos para esta chamada de API podem incluir:
Exibição da marca 5G no app para destacar que você está oferecendo uma experiência 5G exclusiva.
Ativar uma experiência 5G exclusiva no app somente quando ele estiver em uma rede 5G. Combine essa verificação de status com a verificação da limitação.
Acompanhar as conexões 5G para fins de análise.
Para testar a detecção de 5G sem um dispositivo 5G, você pode usar os recursos adicionados ao emulador do SDK do Android.
Detectar 5G
Chame TelephonyManager.listen()
, passando LISTEN_DISPLAY_INFO_CHANGED
para determinar se o usuário tem uma conexão de rede 5G. Modifique o método
onDisplayInfoChanged()
para determinar o tipo de rede usado para exibição. Uma exceção
é que, se a operadora optar por mostrar 5G como a RAT para a rede mmWave,
OVERRIDE_NETWORK_TYPE_NR_NSA
será retornado.
A tabela a seguir mostra as redes que correspondem aos valores:
Tipo de retorno | Rede |
---|---|
OVERRIDE_NETWORK_TYPE_LTE_ADVANCED_PRO |
LTE Advanced pro (5Ge) |
OVERRIDE_NETWORK_TYPE_NR_NSA |
NR (5G) para redes 5G Sub-6 |
OVERRIDE_NETWORK_TYPE_NR_NSA_MMWAVE |
(5G+/5G UW) para redes 5G mmWave |
Estimativa de largura de banda
A estimativa de largura de banda usa o objeto NetworkCapabilities
com o qual você trabalha ao determinar a limitação. É possível receber estimativas de largura de banda usando esse objeto.
A confiabilidade e a precisão dos métodos de estimativa de largura de banda getLinkDownstreamBandwidthKbps()
e getLinkUpstreamBandwidthKbps()
melhoraram no Android 11 devido a upgrades para compatibilidade com frameworks e correções de bugs de plataforma/modem para acomodar a rede 5G.
Os padrões de largura de banda oferecem orientação somente durante a inicialização do app. Isso ajudará você na situação de inicialização a partir do modo inativo. O app precisa medir o que vê depois que os usuários começam a interagir com o app e ajustar dinamicamente o comportamento de streaming. Por exemplo, você pode escolher a resolução do vídeo que será fornecida com base na estimativa da largura de banda na inicialização. Continue verificando as estimativas enquanto seus usuários usam o app. Quando o tipo de conexão e a intensidade mudarem, ajuste o comportamento do app.