Urządzenia z Androidem bez pakietu danych umożliwiają przesyłanie ruchu sieciowego, co wymaga od operatorów komórkowych i telekomunikacyjnych wdrożenia protokołów ograniczających. Android ma ogólne rozwiązanie, które umożliwia operatorom komórkowym i telekomunikacyjnym wskazywanie, kiedy na urządzeniu skończyły się środki.
Platforma Androida udostępnia domyślną aplikację operatora z domyślnym działaniem w zakresie ograniczania ruchu na podstawie sygnału wykrywania portalu przechwytującego. Daje też operatorom i producentom OEM możliwość dostosowywania działania urządzenia przy niskich kosztach i dużej elastyczności.
Przykłady i źródło
Domyślna aplikacja operatora znajduje się w lokalizacjiplatform/frameworks/base/packages/CarrierDefaultApp/.
Implementacja
Domyślna aplikacja przewoźnika jest skonfigurowana tak, aby zapewnić lepsze wrażenia w przypadku przewoźników, którzy nie mają skonfigurowanych usług. Operatorzy mogą korzystać z tego domyślnego działania. Mogą też zastąpić domyślne działanie, dodając mapowania sygnałów na działania do pliku XML konfiguracji operatora. Mogą zrezygnować z aplikacji domyślnej i zamiast tego korzystać z uprawnień UICC w połączeniu z własną, niezależną aplikacją operatora.
Wprowadzenie do implementacji
Signals
Platforma Androida umożliwia konfigurowanie działań w odniesieniu do tych sygnałów sparametryzowanych:
TelephonyIntents.ACTION_CARRIER_SIGNAL_REDIRECTEDTelephonyIntents.ACTION_CARRIER_SIGNAL_REQUEST_NETWORK_FAILED
Sygnały te znajdują się w frameworks/base/telephony/java/com/android/internal/telephony/TelephonyIntents.java.
Obsługiwane działania
Domyślna aplikacja operatora określa zestaw obsługiwanych działań, które można mapować na obsługiwane sygnały. 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 w niej obsługiwać sygnały inne niż wymienione w tej sekcji. Mogą też definiować i konfigurować własne działania.
Domyślne mapowania sygnałów na działania
Aby skonfigurować działania domyślne, wykonaj te czynności:
- Określ klucz dla obsługiwanych sygnałów.
Domyślne mapowania sygnałów na działania są zdefiniowane tutaj:
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 sygnałów.
Domyślne identyfikatory działań są powiązane z kluczami sygnałów:
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 });Platforma telefoniczna przypisuje te działania do odpowiednich sygnałów.
Zastępowanie działań domyślnych
Możesz zdefiniować działania niestandardowe dla obsługiwanych sygnałów w pliku XML konfiguracji operatora, przypisując identyfikatory działań do kluczy sygnałów (zdefiniowanych w CarrierConfigManager.java). Na przykład poniższe mapowanie wyłącza APN z pomiarem i wyświetla powiadomienie portalu po przekierowaniu:
<string-array name="carrier_default_actions_on_redirection_string_array" num="2">
<item value="1" />
<item value="4" />
</string-array>Platforma telefoniczna wczytuje te konfiguracje i zastępuje domyślne działania.
Weryfikacja
W przypadku tej funkcji nie ma testów CTS, CTS Verifier ani GTS.
Aby sprawdzić, czy funkcja działa prawidłowo, przeprowadź te testy weryfikacji ręcznej:
- Weryfikacja powiadomienia operatora o braku środków na urządzeniu.
- Sprawdź ograniczanie przekierowania ruchu w przypadku braku równowagi i wyłączonego Wi-Fi.
- Sprawdź, czy ruch sieciowy jest ograniczony i czy w przypadku braku środków wyświetla się interfejs powiadomień.
- Sprawdź funkcję połączeń głosowych/VoLTE w przypadku braku środków na koncie.
- Sprawdź, czy rozmowy wideo są blokowane, gdy konto jest nieaktywne.
- Gdy Wi-Fi jest włączone, sprawdź, czy użytkownik może nadal przeglądać internet, a ruch przeglądania nie powoduje włączenia ruchu sieciowego w stanie braku równowagi.
- Sprawdź funkcje Wi-Fi, WFC i Bluetooth w stanie nierównowagi.
- Wyłącz Wi-Fi. Sprawdź interfejs powiadomienia o braku środków i upewnij się, że zwykły ruch przeglądania nie jest przekierowywany do witryny rejestracyjnej operatora telekomunikacyjnego. Sprawdź, czy kliknięcie linku w interfejsie powiadomień powoduje przejście przeglądarki do witryny rejestracyjnej operatora telekomunikacyjnego.
- Sprawdź, czy włączenie i wyłączenie trybu samolotowego nie resetuje stanu ograniczania przepustowości.
- Sprawdź, czy wymiana aktywnej karty SIM resetuje stan ruchu sieciowego.
- Sprawdź, czy ponowne włożenie karty SIM z ujemnym saldem powoduje ponowne przekierowanie ruchu i ponowne ograniczenie przepustowości sieci.
- Sprawdź, czy ponowne uruchomienie telefonu przywraca przekierowanie oraz ograniczenie ruchu i interfejs powiadomień.
- Kliknij powiadomienie „captiveportal”. Sprawdź, czy nawiązano połączenie z siecią o ograniczonym dostępie, aby umożliwić użytkownikowi dodanie środków.
- Sprawdź, czy doładowanie lub ponowna aktywacja karty SIM powoduje przywrócenie ruchu w sieci komórkowej oraz zniknięcie linku do operatora i powiadomienia o braku środków.
- Test sprawdzający po przywróceniu usługi danych.
Domyślna aplikacja zawiera kilka przykładów testów jednostkowych i skrypt do ich uruchamiania (patrz tests/runtest.sh). Jeśli wdrażasz dostosowaną wersję lub zachowanie, powinieneś odzwierciedlić te dostosowania w odpowiednich testach jednostkowych.