I dispositivi Android senza saldo dati consentono il traffico di rete, richiedendo operatori e telecomunicazioni per implementare protocolli di mitigazione. Android implementa soluzione generica che consente a operatori e telecomunicazioni di indicare quando un dispositivo si è esaurito.
La piattaforma Android fornisce un'app dell'operatore predefinita con un comportamento predefinito per mitigazione del traffico basata su un segnale di rilevamento captive-portal. Offre inoltre per operatori e OEM l'opportunità di personalizzare il comportamento grande flessibilità.
Esempi e fonte
L'app dell'operatore predefinita si trova all'indirizzo platform/frameworks/base/packages/CarrierDefaultApp/.
Implementazione
L'app predefinita dell'operatore è configurata in modo da offrire un'esperienza migliore per operatori non configurati, pronti all'uso. Gli operatori possono utilizzare questo comportamento predefinito. Possono anche ignorare il comportamento predefinito aggiungendo mappature di indicatori e azioni a il file XML di configurazione dell'operatore. Possono decidere di non usare l'app predefinita Utilizzare invece 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 parametri indicatori:
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 è possibile mappare a
indicatori supportati. Questi criteri 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 una propria app autonoma, possono implementare il supporto di indicatori diversi da quelli menzionati in questo . Possono anche definire e configurare le proprie azioni.
Mappature predefinite delle azioni di indicatori
Per configurare le azioni predefinite:
- Definisci una chiave per gli indicatori supportati.
Le mappature tra indicatori e 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";
- Associa le azioni predefinite alle chiavi degli indicatori.
Gli ID delle azioni 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 ai segnali corrispondenti.
Esegui l'override delle azioni predefinite
Puoi definire azioni personalizzate per gli indicatori supportati nel file XML di configurazione dell'operatore
associando gli ID delle azioni alle chiavi dei segnali (definite in
CarrierConfigManager.java
). Ad esempio, il seguente mapping
disattiva gli APN a consumo e mostra una notifica dal 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 il valore predefinito azioni.
Convalida
Per questa funzionalità non sono previsti test CTS, CTS Verifier o GTS.
Utilizza questi test di convalida manuali per convalidare la caratteristica:
- Convalida la notifica di segnale di squilibrio del dispositivo di telecomunicazioni.
- Verifica la limitazione del reindirizzamento del traffico in caso di stato fuori equilibrio e Wi-Fi disattivata.
- Verifica che il traffico di rete sia disattivato e che venga visualizzata l'UI di notifica durante la disconnessione del saldo dovuto.
- Convalida chiamata vocale/funzione VoLTE in stato fuori equilibrio.
- Verifica che le videochiamate siano bloccate in stato di squilibrio.
- Quando il Wi-Fi è attivo, verifica che l'utente possa continuare la navigazione sul web e la navigazione il traffico non attiva il traffico di rete quando si trova in uno stato sbilanciato stato.
- Convalida le funzioni Wi-Fi, WFC e Bluetooth in caso di squilibrio stato.
- Disattiva il Wi-Fi. Verifica l'UI di notifica fuori equilibrio e quella ordinaria il traffico di navigazione non viene reindirizzato al sito web di registrazione per le telecomunicazioni. Verifica facendo clic sul link nella UI di notifica, il browser viene indirizzato alla sito web di registrazione.
- Verifica che l'attivazione/disattivazione della modalità aereo non reimposti la limitazione del traffico stato.
- Verifica che lo scambio di una SIM in servizio reimposti il traffico di rete stato.
- Verifica che il reinserimento della SIM fuori equilibrio riavvii il reindirizzamento del traffico e la limitazione del traffico di rete viene nuovamente applicata.
- Verifica che il riavvio dello smartphone riattivi il reindirizzamento e ripristini lo limitazione del traffico e UI di notifica.
- Tocca "captiveportal" notifica. Verificare una rete con limitazioni per consentire all'utente di aggiungere crediti.
- Verifica che il ricaricamento o la riattivazione del saldo della SIM causi l'attivazione della rete mobile il traffico da recuperare, il link Telco e nessuna notifica relativa al saldo da recuperare di distanza.
- Test di integrità dopo il recupero del servizio dati.
L'app predefinita fornisce alcuni esempi di test delle unità e uno script per eseguirli
(vedi tests/runtest.sh
). Quando implementi una versione personalizzata
devi eseguire il mirroring di queste personalizzazioni in test delle unità dedicati.