Personalizzare il comportamento del dispositivo per gli utenti con un piano non in linea

I dispositivi Android senza saldo dati consentono il passaggio del traffico di rete, richiedendo ai carrier e alle telco di implementare protocolli di mitigazione. Android implementa una soluzione generica che consente agli operatori e alle telecomunicazioni di indicare quando un dispositivo ha esaurito il saldo.

La piattaforma Android fornisce un'app dell'operatore predefinita con un comportamento predefinito per la mitigazione del traffico in base all'indicatore di rilevamento di captive portal. Inoltre, offre ai carrier e agli OEM la possibilità di personalizzare il comportamento a basso costo e con grande flessibilità.

Esempi e origine

L'app dell'operatore predefinita si trova inplatform/frameworks/base/packages/CarrierDefaultApp/.

Implementazione

L'app dell'operatore predefinita è configurata per offrire un'esperienza migliore per gli operatori non configurati out of the box. Gli operatori possono utilizzare questo comportamento predefinito. Possono anche ignorare il comportamento predefinito aggiungendo mappature di indicatori e azioni al file XML di configurazione dell'operatore. Possono decidere di non utilizzare l'app predefinita e utilizzare i privilegi UICC con la propria app dell'operatore autonoma.

Introduzione all'implementazione

Segnali

Il framework Android supporta la configurazione delle azioni per i seguenti indicatori parametrici:

  • TelephonyIntents.ACTION_CARRIER_SIGNAL_REDIRECTED
  • TelephonyIntents.ACTION_CARRIER_SIGNAL_REQUEST_NETWORK_FAILED

Questi indicatori si trovano in frameworks/base/telephony/java/com/android/internal/telephony/TelephonyIntents.java.

Azioni supportate

L'app dell'operatore predefinita definisce un insieme di azioni supportate che possono essere mappate agli indicatori supportati. Questi valori sono definiti in 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;

Nota: se un operatore implementa la propria app autonoma, può implementare il supporto di indicatori diversi da quelli menzionati in questa sezione. Possono anche definire e configurare le proprie azioni.

Mappature di indicatori e azioni predefinite

Per configurare le azioni predefinite, segui questa procedura:

  1. Definisci una chiave per gli indicatori supportati.

    Le mappature degli indicatori alle azioni predefinite sono definite in CarrierConfigManager.java. Ciascuno degli indicatori supportati ha una chiave:

    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. Associa azioni predefinite ai tasti di segnalazione.

    Gli ID azione predefiniti sono associati alle chiavi degli indicatori:

    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
             });
    

    Il framework di telefonia mappa queste azioni agli indicatori corrispondenti.

Sostituire le azioni predefinite

Puoi definire azioni personalizzate per gli indicatori supportati nel file XML di configurazione dell'operatore associando gli ID azione alle chiavi degli indicatori (definiti in CarrierConfigManager.java). Ad esempio, la seguente mappatura disattiva gli APN con misurazione e mostra una notifica del portale al reindirizzamento:

<string-array name="carrier_default_actions_on_redirection_string_array" num="2">
            <item value="1" />
            <item value="4" />
</string-array>

Il framework di telefonia carica queste configurazioni e sostituisce le azioni predefinite.

Convalida

Non sono disponibili test CTS, CTS Verifier o GTS per questa funzionalità.

Utilizza questi test di convalida manuale per convalidare la funzionalità:

  1. Convalida la notifica del segnale di sbalanceamento del dispositivo dell'operatore di telefonia.
  2. Verifica la limitazione del reindirizzamento del traffico durante lo stato di sbilanciamento e con il Wi-Fi disattivato.
  3. Verifica che il traffico di rete sia ridotto e che l'interfaccia utente della notifica venga visualizzata durante lo stato di sbilanciamento.
  4. Convalida la funzione di chiamata vocale/VoLTE durante lo stato di saldi insufficienti.
  5. Verifica che le videochiamate siano bloccate in caso di saldi non in pari.
  6. Con il Wi-Fi attivo, verifica che l'utente possa continuare a navigare sul web e che il traffico di navigazione non attivi il traffico di rete quando lo stato è sbilanciato.
  7. Convalida le funzioni Wi-Fi, WFC e Bluetooth durante lo stato di sbilanciamento.
  8. Disattiva il Wi-Fi. Verifica l'interfaccia utente della notifica relativa al saldo negativo e che il normale traffico di navigazione non venga reindirizzato al sito web di registrazione dell'operatore di telecomunicazioni. Verifica che facendo clic sul link nell'interfaccia utente della notifica il browser venga indirizzato al sito web di registrazione dell'operatore.
  9. Verifica che l'attivazione/la disattivazione della modalità aereo non reimposta lo stato della limitazione del traffico.
  10. Verifica che la sostituzione di una SIM in servizio reimposta lo stato del traffico di rete.
  11. Verifica che il reinnesto della SIM con credito insufficiente riavvii il reindirizzamento del traffico e ottenga di nuovo il throttling del traffico di rete.
  12. Verifica che il riavvio dello smartphone riattivi il reindirizzamento e ripristini la limitazione del traffico e l'interfaccia utente di notifica.
  13. Tocca la notifica "captiveportal". Verifica che sia stata stabilita una connessione alla rete con limitazioni per consentire all'utente di aggiungere crediti.
  14. Verifica che il ricaricamento o la riattivazione del saldo della SIM provochi il recupero del traffico della rete cellulare e che il link all'operatore e la notifica relativa all'assenza di saldo scompaiano.
  15. Test di convalida dopo il recupero del servizio di dati.

L'app predefinita fornisce alcuni esempi di test di unità e uno script per eseguirli (vedi tests/runtest.sh). Quando implementi una versione o un comportamento personalizzato, devi rispecchiare queste personalizzazioni in test di unità dedicati.