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:
- 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";
- 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ę:
- Zweryfikuj powiadomienie o sygnale braku równowagi w urządzeniu telekomunikacyjnym.
- Sprawdź ograniczanie przekierowań ruchu w stanie braku równowagi i wyłączonej sieci Wi-Fi.
- Sprawdź, czy ruch sieciowy jest wyłączony, a interfejs powiadomień pojawia się w stanie braku równowagi.
- Sprawdź poprawność połączenia głosowego/funkcji VoLTE w stanie braku równowagi.
- Sprawdź, czy połączenia wideo są blokowane w stanie braku równowagi.
- 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.
- Sprawdź funkcje Wi-Fi, WFC i Bluetooth w stanie braku równowagi.
- 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.
- Sprawdź, czy przełączenie trybu samolotowego nie resetuje stanu ograniczania ruchu.
- Sprawdź, czy wymiana działającej karty SIM resetuje stan ruchu sieciowego.
- Sprawdź, czy ponowne włożenie niezbilansowanej karty SIM powoduje ponowne uruchomienie przekierowania ruchu i ponowne uzyskanie ograniczenia ruchu sieciowego.
- Sprawdź, czy ponowne uruchomienie telefonu ponownie aktywuje przekierowanie i przywraca interfejs ograniczania ruchu i powiadomień.
- Kliknij powiadomienie „captiveportal”. Sprawdź, czy ustanowiono ograniczone połączenie sieciowe, aby umożliwić użytkownikowi dodawanie kredytów.
- 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.
- 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.