Personalizar o comportamento do dispositivo para usuários desbalanceados

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 de operadora padrão está localizado em platform/frameworks/base/packages/CarrierDefaultApp/.

Implementação

O app de operadora padrão é configurado para oferecer uma experiência melhor para operadoras não configuradas. As operadoras podem usar esse comportamento padrão. Elas também podem substituir o comportamento padrão adicionando mapeamentos de ação de sinal ao arquivo XML de configuração da operadora. Elas podem decidir não usar o app padrão e usar privilégios UICC com o próprio app de operadora independente.

Introdução à implementação

Indicadores

O framework do Android oferece suporte à configuração de 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 de 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 o próprio app independente, ela poderá implementar suporte para indicadores diferentes dos mencionados nesta seção. Elas também podem definir e configurar as próprias ações.

Mapeamentos de ação de indicador padrão

Configure as ações padrão seguindo este processo:

  1. Defina uma chave para indicadores compatíveis.

    Os mapeamentos de indicador para ação padrã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";
  2. Associe ações padrão a chaves de indicador.

    Os IDs de ação padrão sã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 tarifados e mostra uma notificação de 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 CTS, CTS Verifier ou GTS para esse recurso.

Use estes testes de validação manual para validar o recurso:

  1. Valide a notificação de indicador de dispositivo desbalanceado da empresa de telecomunicações.
  2. Verifique a limitação do redirecionamento de tráfego durante o estado desbalanceado e o Wi-Fi desativado.
  3. Verifique se o tráfego de rede está desativado e a interface de notificação aparece durante out of balance state.
  4. Valide a função de ligação/VoLTE durante o estado desbalanceado.
  5. Verifique se as chamadas de vídeo estão bloqueadas no estado desbalanceado.
  6. 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 estiver no estado desbalanceado.
  7. Valide as funções de Wi-Fi, WFC e Bluetooth durante o estado desbalanceado.
  8. Desative o Wi-Fi. Verifique a interface de notificação desbalanceada e se o tráfego de navegação comum não é redirecionado para o site de registro da empresa de telecomunicações. Verifique se clicar no link na interface de notificação leva o navegador ao site de registro da empresa de telecomunicações.
  9. Verifique se a ativação e desativação do modo avião não redefinem o estado de limitação de tráfego.
  10. Verifique se a troca de um SIM em serviço redefine o estado do tráfego de rede.
  11. Verifique se a reinserção do SIM desbalanceado reinicia o redirecionamento de tráfego e obtém a limitação de tráfego de rede novamente.
  12. Verifique se a reinicialização do smartphone reativa o redirecionamento e restaura a limitação de tráfego e a interface de notificação.
  13. Toque na notificação "captiveportal". Verifique se uma conexão de rede restrita é estabelecida para permitir que o usuário adicione créditos.
  14. Verifique se a recarga ou reativação do saldo do SIM faz com que o tráfego de rede móvel seja recuperado e o link da empresa de telecomunicações e a notificação de saldo desapareçam.
  15. 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 comportamento personalizado, espelhe essas personalizações em testes de unidade dedicados.