Dostosowywanie zachowania urządzenia dla użytkowników, którzy nie mają salda

Urządzenia z Androidem bez salda danych umożliwiają ruch sieciowy, co wymaga od operatorów i operatorów telekomunikacyjnych wdrożenia protokołów łagodzących. Android wdraża ogólne rozwiązanie, które pozwala operatorom i operatorom telekomunikacyjnym sygnalizować, kiedy w urządzeniu zabrakło równowagi.

Platforma Android udostępnia domyślną aplikację operatora z domyślnym zachowaniem ograniczającym ruch w oparciu o sygnał wykrycia portalu przechwytującego. Zapewnia także przewoźnikom i producentom OEM możliwość dostosowania zachowań przy niskich kosztach i dużej elastyczności.

Przykłady i źródło

Domyślna aplikacja operatora znajduje się pod platform/frameworks/base/packages/CarrierDefaultApp/ .

Realizacja

Domyślna aplikacja operatora jest skonfigurowana tak, aby od razu zapewniać lepszą obsługę nieskonfigurowanym operatorom. Przewoźnicy mogą używać tego domyślnego zachowania. Mogą także zastąpić domyślne zachowanie, dodając mapowania sygnału-akcji do pliku XML konfiguracji przewoźnika. Mogą zdecydować, że nie będą korzystać z aplikacji domyślnej i zamiast tego korzystać z uprawnień UICC w ramach własnej, niezależnej aplikacji operatora.

Wprowadzenie do wdrożenia

Sygnały

Framework Android obsługuje konfigurowanie akcji dla następujących sparametryzowanych sygnałów:

  • TelephonyIntents.ACTION_CARRIER_SIGNAL_REDIRECTED
  • TelephonyIntents.ACTION_CARRIER_SIGNAL_REQUEST_NETWORK_FAILED

Sygnały te znajdują się w frameworks/base/telephony/java/com/android/internal/telephony/TelephonyIntents.java .

Obsługiwane akcje

Domyślna aplikacja operatora definiuje zestaw obsługiwanych działań, które można przypisać do obsługiwanych sygnałów. Są one zdefiniowane w 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;

Uwaga: jeśli operator wdroży własną, samodzielną aplikację, może wdrożyć obsługę sygnałów innych niż wymienione w tej sekcji. Mogą także definiować i konfigurować własne działania.

Domyślne mapowania sygnału i działania

Skonfiguruj działania domyślne, wykonując następujący proces:

  1. Zdefiniuj klucz dla obsługiwanych sygnałów.

    Domyślne odwzorowania sygnału na działanie są zdefiniowane w CarrierConfigManager.java . Każdy z obsługiwanych sygnałów ma klucz:

    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. Powiąż domyślne działania z kluczami sygnalizacyjnymi.

    Do klawiszy sygnałowych przypisane są domyślne identyfikatory akcji:

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

    Struktura telefonii odwzorowuje te działania na odpowiednie sygnały.

Zastępowanie działań domyślnych

Możesz zdefiniować niestandardowe akcje dla obsługiwanych sygnałów w pliku XML konfiguracji przewoźnika, powiązując identyfikatory akcji z kluczami sygnałowymi (zdefiniowanymi w CarrierConfigManager.java ). Na przykład poniższe mapowanie wyłącza mierzone APN i wyświetla powiadomienie portalu o przekierowaniu:

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

Struktura telefonii ładuje te konfiguracje i zastępuje akcje domyślne.

Walidacja

Dla tej funkcji nie ma testów CTS, CTS Verifier ani GTS.

Użyj tych ręcznych testów sprawdzających, aby zweryfikować funkcję:

  1. Zweryfikuj powiadomienie o sygnale braku równowagi w urządzeniu telekomunikacyjnym.
  2. Sprawdź ograniczanie przekierowań ruchu w stanie braku równowagi i wyłączonej sieci Wi-Fi.
  3. Sprawdź, czy ruch sieciowy jest wyłączony, a interfejs powiadomień pojawia się w stanie braku równowagi.
  4. Sprawdź poprawność połączenia głosowego/funkcji VoLTE w stanie braku równowagi.
  5. Sprawdź, czy połączenia wideo są blokowane w stanie braku równowagi.
  6. Przy włączonej sieci Wi-Fi sprawdź, czy użytkownik może kontynuować przeglądanie Internetu i czy ruch związany z przeglądaniem nie powoduje włączenia ruchu sieciowego w stanie braku równowagi.
  7. Sprawdź funkcje Wi-Fi, WFC i Bluetooth w stanie braku równowagi.
  8. Wyłącz Wi-Fi. Sprawdź interfejs powiadamiania o braku salda i czy zwykły ruch przeglądania nie jest przekierowywany do witryny internetowej rejestracji telekomunikacyjnej. Sprawdź, czy kliknięcie łącza w interfejsie powiadomień powoduje przejście przeglądarki do witryny rejestracji firmy telekomunikacyjnej.
  9. Sprawdź, czy przełączenie trybu samolotowego nie resetuje stanu ograniczania ruchu.
  10. Sprawdź, czy wymiana działającej karty SIM resetuje stan ruchu sieciowego.
  11. Sprawdź, czy ponowne włożenie niezbilansowanej karty SIM powoduje ponowne uruchomienie przekierowania ruchu i ponowne uzyskanie ograniczenia ruchu sieciowego.
  12. Sprawdź, czy ponowne uruchomienie telefonu ponownie aktywuje przekierowanie i przywraca interfejs ograniczania ruchu i powiadomień.
  13. Kliknij powiadomienie „captiveportal”. Sprawdź, czy ustanowiono ograniczone połączenie sieciowe, aby umożliwić użytkownikowi dodawanie kredytów.
  14. Sprawdź, czy uzupełnienie salda karty SIM lub reaktywacja powoduje przywrócenie ruchu w sieci komórkowej oraz zniknięcie łącza telekomunikacyjnego i powiadomienia o braku salda.
  15. Test poprawności po odzyskaniu usługi danych.

Domyślna aplikacja udostępnia kilka przykładów testów jednostkowych i skrypt do ich uruchomienia (zobacz tests/runtest.sh ). Implementując dostosowaną wersję lub zachowanie, należy odzwierciedlić te dostosowania w dedykowanych testach jednostkowych.