Dispositivos Android sem balanceamento de dados permitem a passagem de tráfego de rede, exigindo que as operadoras e empresas de telecomunicações implementem protocolos de mitigação. O Android implementa uma solução genérica que permite que as operadoras e empresas de telecomunicações indiquem quando um dispositivo está desbalanceado.
A plataforma Android oferece um app de operadora padrão com um comportamento padrão para mitigação de tráfego com base no sinal de detecção de portal cativo. Ela também oferece às operadoras e OEMs a oportunidade de personalizar o comportamento com baixo custo e grande flexibilidade.
Exemplos e origem
O app da operadora padrão está localizado em platform/frameworks/base/packages/CarrierDefaultApp/.
Implementação
O app da operadora padrão é configurado para oferecer uma experiência melhor para operadoras não configuradas. As operadoras podem usar esse comportamento padrão. Eles também podem substituir o comportamento padrão adicionando mapeamentos de ação de sinal ao arquivo XML de configuração da operadora. Eles podem decidir não usar o app padrão e usar privilégios da UICC com o próprio app independente da operadora.
Introdução à implementação
Sinais
O framework Android permite configurar ações para os seguintes indicadores parametrizados:
TelephonyIntents.ACTION_CARRIER_SIGNAL_REDIRECTED
TelephonyIntents.ACTION_CARRIER_SIGNAL_REQUEST_NETWORK_FAILED
Esses indicadores estão localizados em
frameworks/base/telephony/java/com/android/internal/telephony/TelephonyIntents.java
.
Ações permitidas
O app da operadora padrão define um conjunto de ações compatíveis que podem ser mapeadas para indicadores compatíveis. Elas são definidas em CarrierActionUtils.java
:
public static final int CARRIER_ACTION_ENABLE_METERED_APNS = 0; public static final int CARRIER_ACTION_DISABLE_METERED_APNS = 1; public static final int CARRIER_ACTION_DISABLE_RADIO = 2; public static final int CARRIER_ACTION_ENABLE_RADIO = 3; public static final int CARRIER_ACTION_SHOW_PORTAL_NOTIFICATION = 4; public static final int CARRIER_ACTION_SHOW_NO_DATA_SERVICE_NOTIFICATION = 5; public static final int CARRIER_ACTION_CANCEL_ALL_NOTIFICATIONS = 6;
Observação:se uma operadora implementar um app independente, ela poderá oferecer suporte a outros indicadores além dos mencionados nesta seção. Eles também podem definir e configurar as próprias ações.
Mapeamentos padrão de ação de sinal
Para configurar as ações padrão, siga este processo:
- Defina uma chave para os indicadores compatíveis.
Os mapeamentos padrão de indicador para ação são definidos em
CarrierConfigManager.java
. Cada um dos indicadores compatíveis tem uma chave:public static final String KEY_CARRIER_DEFAULT_ACTIONS_ON_REDIRECTION_STRING_ARRAY = "carrier_default_actions_on_redirection_string_array"; public static final String KEY_CARRIER_DEFAULT_ACTIONS_ON_DCFAILURE_STRING_ARRAY = "carrier_default_actions_on_dcfailure_string_array";
- Associe ações padrão a chaves de indicadores.
Os IDs de ação padrão estão associados às chaves de indicador:
sDefaults.putStringArray(KEY_CARRIER_DEFAULT_ACTIONS_ON_REDIRECTION_STRING_ARRAY, new String[]{ "1, 4" //1: CARRIER_ACTION_SHOW_PORTAL_NOTIFICATION // 4: CARRIER_ACTION_DISABLE_METERED_APNS });
O framework de telefonia mapeia essas ações para os indicadores correspondentes.
Substituir ações padrão
É possível definir ações personalizadas para indicadores compatíveis no arquivo XML de configuração da operadora associando IDs de ação às chaves de indicador (definidas em CarrierConfigManager.java
). Por exemplo, o mapeamento a seguir desativa APNs medidos e mostra uma notificação do portal no redirecionamento:
<string-array name="carrier_default_actions_on_redirection_string_array" num="2"> <item value="1" /> <item value="4" /> </string-array>
O framework de telefonia carrega essas configurações e substitui as ações padrão.
Validação
Não há testes do CTS, do CTS Verifier ou do GTS para esse recurso.
Use estes testes de validação manual para validar o recurso:
- Validar a notificação de sinal de dispositivo fora do limite da operadora de telecomunicações.
- Verifique a limitação do redirecionamento de tráfego durante o estado desequilibrado e com o Wi-Fi desativado.
- Verifique se o tráfego de rede está reduzido e se a interface de notificação aparece durante o estado de saldo negativo.
- Validar a função de chamada de voz/VoLTE durante um estado fora do limite.
- Verifique se as videochamadas estão bloqueadas quando a conta está sem saldo.
- Com o Wi-Fi ativado, verifique se o usuário pode continuar navegando na Web e se o tráfego de navegação não ativa o tráfego de rede enquanto está no estado desequilibrado.
- Valide as funções de Wi-Fi, WFC e Bluetooth durante o estado de desequilíbrio.
- Desative o Wi-Fi. Verifique a interface da notificação de saldo negativo e se o tráfego de navegação comum não está sendo redirecionado para o site de registro da operadora de telecomunicações. Verifique se clicar no link na interface de notificação leva o navegador ao site de registro da operadora de telecomunicações.
- Verifique se a alternância do modo avião não redefine o estado de limitação de tráfego.
- Verifique se a troca de um SIM em serviço redefine o estado do tráfego de rede.
- Verifique se a reinserção do chip fora do balanceamento reinicia o redirecionamento de tráfego e obtém novamente a limitação do tráfego de rede.
- Verifique se a reinicialização do smartphone reativa o redirecionamento e restaura a limitação de tráfego e a interface de notificação.
- Toque na notificação "captiveportal". Verifique se uma conexão de rede restrita foi estabelecida para permitir que o usuário adicione créditos.
- Verifique se a recarga ou a reativação do saldo do SIM faz com que o tráfego da rede celular se recupere e o link da operadora e a notificação de falta de saldo desapareçam.
- Teste de integridade após a recuperação do serviço de dados.
O app padrão oferece alguns exemplos de testes de unidade e um script para executá-los (consulte tests/runtest.sh
). Ao implementar uma versão ou um comportamento personalizado, reflita essas personalizações em testes de unidade dedicados.