Dispositivos Android sem saldo de dados permitem a passagem de tráfego de rede, exigindo as operadoras e empresas de telecomunicações para implementar 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 ficar sem equilíbrio.
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 portais cativos. Ele também oferece as 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 padrão da operadora está configurado para oferecer uma experiência melhor para operadoras não configuradas prontas para uso. As operadoras podem usar esse comportamento padrão. Eles também podem substituir o comportamento padrão adicionando mapeamentos de ação de indicador o arquivo XML de configuração da operadora. Ela pode decidir não usar o app padrão e Em vez disso, use privilégios UICC com o próprio app de operadora independente.
Introdução à implementação
Sinais
O framework do Android oferece suporte à configuração de ações para os seguintes sinais:
TelephonyIntents.ACTION_CARRIER_SIGNAL_REDIRECTED
TelephonyIntents.ACTION_CARRIER_SIGNAL_REQUEST_NETWORK_FAILED
Esses indicadores estão localizados
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
sinais compatíveis. Eles são definidos 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 o próprio app independente, é possível implementar compatibilidade com outros sinais além dos mencionados neste nesta seção. Eles também podem definir e configurar suas próprias ações.
Mapeamentos de ação de indicador padrão
Configure ações padrão seguindo este processo:
- Defina uma chave para os indicadores compatíveis.
Os mapeamentos de indicadores padrão para ações 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 para indicar chaves.
Os IDs de ações 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 sinais correspondentes.
Substituir ações padrão
Você pode definir ações personalizadas para indicadores compatíveis no 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 configurações ações.
Validação
Não há testes CTS, CTS Verifier ou GTS para esse recurso.
Use estes testes de validação manuais para validar o recurso:
- Valide a notificação de sinal de desequilíbrio do dispositivo da telecomunicações.
- Verificar a limitação de redirecionamento de tráfego durante o estado de desequilíbrio e Wi-Fi
- Verifique se o tráfego de rede está desativado e se a interface de notificação aparece ao sair do estado de equilíbrio.
- Valide a ligação/função VoLTE durante o estado desbalanceado.
- Verifique se a videochamada está bloqueada quando o dispositivo está desbalanceado.
- Com o Wi-Fi ativado, verifique se o usuário pode continuar a navegar na Web e em o tráfego não ativa o tráfego de rede enquanto está desbalanceado estado.
- Validar as funções de Wi-Fi, WFC e Bluetooth quando o dispositivo estiver desbalanceado estado.
- Desative o Wi-Fi. Verifique a interface de notificações de desequilíbrio o tráfego de navegação não é redirecionado para o site de registro da telecomunicações. Verificar clicar no link na interface de notificação leva o navegador para a telco site de inscrição.
- Verificar se alternar o modo avião não redefine a limitação de tráfego estado.
- Verificar se a troca de um chip em serviço redefine o tráfego de rede estado.
- Verificar se a reinserção do chip desbalanceado reinicia o redirecionamento de tráfego e recebe a limitação de tráfego de rede novamente.
- Verifique se a reinicialização do smartphone reativa o redirecionamento e retorna limitação de tráfego e interface de notificação.
- Toque no "Captiveportal" notificação. Verificar uma rede restrita é estabelecida para permitir que o usuário adicione créditos.
- Verifique se o reabastecimento ou a reativação do saldo do chip causa o problema na rede celular recuperar o tráfego, o link da Telco e nenhuma notificação de saldo. embora.
- 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
. Quando você implementa uma versão personalizada ou
espelhe essas personalizações em testes de unidade dedicados.