Interface do usuário de conectividade

No Android 12 ou versões mais recentes, os fabricantes de dispositivos podem adotar uma experiência de conectividade simplificada, que ajuda os usuários a entender melhor as conexões de rede, alternar entre provedores de Internet e resolver problemas de conectividade de rede. Essas mudanças na experiência do usuário em comparação com o Android 11 ou versões anteriores são refletidas na interface do usuário, na iconografia e nas mudanças de API para as Configurações rápidas e Configurações. Todas essas mudanças estão disponíveis no AOSP para que os fabricantes de dispositivos as ativem como estão ou as personalizem.

Visão geral da experiência de conectividade simplificada

Esta seção descreve as principais mudanças na interface do usuário da experiência de conectividade simplificada no AOSP a partir do Android 12.

Bloco "Internet" nas Configurações rápidas

O menu "Configurações rápidas" inclui um bloco de Internet que abre um painel em que os usuários podem alternar entre conexões Wi-Fi e de celular. O bloco "Internet" combina os blocos "Wi-Fi" e "Dados móveis" usados no Android 11 ou anterior.

Bloco "Internet" no menu "Configurações rápidas"

Figura 1. Bloco "Internet" nas Configurações rápidas

Seção "Chamadas e SMS" nas Configurações

O app Configurações inclui uma seção Chamadas e SMS em Rede e Internet que mostra o status de disponibilidade e as opções de chamadas por Wi-Fi.

Seção "Ligações e SMS" em "Configurações"

Figura 2. Seção "Ligações e SMS" em "Configurações"

Botão "Redefinir" em "Configurações"

No app Configurações, Rede e Internet > Internet inclui um botão de redefinição que permite que os usuários redefinam os modems de telefonia e Wi-Fi no dispositivo, o que pode ser útil ao resolver problemas de conectividade de rede.

Botão "Redefinir" nas configurações para resolver problemas de conectividade

Figura 3. Botão de redefinição para resolver problemas de conectividade

Implementação

Para ativar a experiência de conectividade simplificada no dispositivo, use a seguinte flag de configurações globais:

  • Nome: persist.sys.fflag.override.settings_provider_model
  • Tipo: booleano
  • Valor: defina como true para ativar o comportamento de simplificação da conectividade ou false para desativá-lo e usar o comportamento legado. A partir do Android 12, o caminho do código para false não é mais mantido ativamente.

Além disso, é possível configurar os seguintes modos da interface do usuário para operadoras individuais usando a configuração da operadora. As chaves de configuração são:

  • CarrierConfigManager#KEY_CARRIER_PROVISIONS_WIFI_MERGED_NETWORKS_BOOL: um booleano que indica se a operadora configura redes Wi-Fi que fazem parte da rede principal e são exibidas como parte da rede móvel. Isso funciona em conjunto com o método WifiNetworkSuggestion.Builder#setCarrierMerged(booleanisCarrierMerged).
  • CarrierConfigManager#KEY_USE_IP_FOR_CALLING_INDICATOR_BOOL: um booleano que indica se a conectividade de rede de dados (IP) é usada como uma condição complementar para bloquear a exibição do ícone sem chamada.
  • CarrierConfigManager#KEY_DISPLAY_CALL_STRENGTH_INDICATOR_BOOL: um booleano que indica se o ícone de intensidade da chamada é exibido na interface do sistema.

APIs do framework

Para desativar temporariamente as redes Wi-Fi próximas, use as seguintes APIs:

  • WifiManager#startRestrictingAutoJoinToSubscriptionId(int subscriptionId): permite que o usuário selecione uma rede de operadora sem desativar o Wi-Fi. Desativa todas as redes Wi-Fi visíveis por uma duração mínima de 30 minutos (controlada pela sobreposição config_wifiAllNonCarrierMergedWifiMinDisableDurationMinutes) e uma duração máxima de 6 horas (controlada pela sobreposição config_wifiAllNonCarrierMergedWifiMaxDisableDurationMinutes). As redes Wi-Fi são reativadas sempre que o Wi-Fi é ativado, o dispositivo é reinicializado, se o usuário seleciona uma rede Wi-Fi (nesse caso, a API stopRestrictingAutoJoinToSubscriptionId() é executada pelas Configurações) ou se a rede não estiver visível por 60 minutos.
  • WifiManager#stopRestrictingAutoJoinToSubscriptionId(): restaura a operação normal.

Para oferecer suporte ao botão de redefinição e à solução de problemas da interface do usuário, que é implementada na classe com.android.settingslib.connectivity.ConnectivitySubsystemsRecoveryManager, use as seguintes APIs:

  • WifiManager#restartWifiSubsystem(String reason): reinicia o subsistema Wi-Fi.
  • TelephonyManager#rebootRadio(): redefine o modem de rádio.

Trabalhar com várias operadoras

Se você adotar a experiência de conectividade simplificada para algumas operadoras, mas não para outras, esteja ciente do cenário de vários chips, em que um usuário usa dois chips, um de uma operadora parceira que optou pelas mudanças de interface e a outra não. Nesse cenário, decida qual IU os usuários vão ver e teste completamente o comportamento nos seus dispositivos.