Transmisja komórkowa

Moduł CellBroadcast ogranicza powtarzalne wysiłki producentów OEM (co z kolei zmniejsza fragmentację w ekosystemie Androida i zapewnia spójne zachowanie użytkownikom końcowym) oraz pomaga usprawnić testowanie i certyfikację operatorów pod kątem wymagań związanych z CellBroadcast (ponieważ producenci OEM nie mogą modyfikować kodu) ). Moduł ten można aktualizować, co oznacza, że ​​może otrzymywać aktualizacje funkcjonalności poza normalnym cyklem wydawniczym Androida.

Format pakietu

Moduł CellBroadcast składa się z następującej usługi i aplikacji.

  • Usługa CellBroadcastService obsługuje dekodowanie wiadomości SMS CellBroadcast, geofencing na potrzeby bezprzewodowego ostrzegania o zagrożeniach (WEA) 3.0, sprawdzanie duplikacji wiadomości i rozgłaszanie wiadomości do aplikacji. Jest to usługa przesyłania wiadomości typu „jeden do wielu”, geotargetowana i geoogrodzona, zaprojektowana w celu jednoczesnego dostarczania wiadomości do wielu użytkowników telefonów komórkowych na określonym obszarze. Usługa jest zdefiniowana przez komitet ETSI GSM, 3GPP , i stanowi część standardów telekomunikacyjnych.

  • Aplikacja CellBroadcastReceiver to domyślna aplikacja systemowa, która obsługuje alerty alarmowe i inne niż alarmowe (takie jak alerty bursztynowe i prezydenckie) oraz prezentuje informacje użytkownikom końcowym w oparciu o przepisy operatora i przepisy regionalne.

Przepływ komunikatów CellBroadcast

Poniższy rysunek przedstawia przepływ komunikatów CellBroadcast.

Przepływ komunikatów CellBroadcastReceiver

Rysunek 1. Przepływ komunikatów CellBroadcastReceiver

  1. Warstwa interfejsu radiowego (RIL) powiadamia InBoundSMSHandler o wiadomości SMS CDMA/GSM CellBroadcast.

  2. Struktura przekazuje wiadomość SMS CellBroadcast do modułu CBS w celu przeanalizowania i przetworzenia wiadomości przychodzącej.

  3. Po przetworzeniu wiadomości usługa CellBroadcastService przekazuje intencję do domyślnej aplikacji systemowej CellBroadcastReceiver.

  4. Aplikacja CellBroadcastReceiver wyświetla wiadomość użytkownikowi.

Format modułu

Usługi CellBroadcastService i aplikacja CellBroadcastReceiver są zawarte w jednym pliku APEX ( com.android.cellbroadcast ), który jest dostępny dla urządzeń z systemem Android 11 lub nowszym. Moduł zawiera kod w package/app/CellBroadcastReceiver i migruje istniejące klasy frameworka do packages/modules/CellBroadcastService .

Zależności modułów

Moduł CellBroadcast współdziała ze strukturą przy użyciu wyłącznie stabilnego @SystemApi (bez interfejsów API @hide ) i zależy od następujących bibliotek statycznych.

  • Androidx.legacy_legacy-support-v13
  • Androidx.recyclerview_recyclerview
  • Androidx.preference_preference
  • androidx.legacy_legacy-preference-v14
  • androidx.appcompat_appcompat

Możesz dostosować konfigurację za pomocą nakładek zasobów środowiska wykonawczego (RRO) .

Konfiguracja uprawnień

Moduł CellBroadcast jest podpisany podpisem Google zamiast podpisem platformy, co oznacza, że ​​moduł traci dostęp do uprawnień do podpisu. Zamiast tego Android 11 definiuje nowe uprawnienia do podpisu com.android.cellbroadcastservice.FULL_ACCESS_CELL_BROADCAST_HISTORY w module CellBroadcast; tylko pakiety w module mogą uzyskać pozwolenie, ponieważ są podpisane tym samym kluczem. To uprawnienie umożliwia aplikacji CellBroadcastReceiver pełny dostęp do bazy danych w CellBroadcastService.

Platforma przyznaje android.permission.READ_CELL_BROADCASTS uprawnienia uruchomieniowe domyślnej systemowej aplikacji SMS w celu uzyskania dostępu do historii alertów awaryjnych.

Integracja modułu CellBroadcast

W tej sekcji opisano sposób integracji modułu CellBroadcast.

Integracja z Ustawieniami

Możesz zdecydować, gdzie zintegrować ustawienia CellBroadcast w aplikacji Ustawienia (użytkownicy końcowi uzyskują dostęp do strony ustawień CellBroadcast, wybierając Ustawienia > Aplikacje i powiadomienia > Zaawansowane > Alert alarmowy ). Aby uruchomić aplikację CellBroadcastReceiver z aplikacji Ustawienia, zmień następujące konfiguracje ustawień, używając nazwy pakietu com.android.cellbroadcastreceiver .

<!-- Cell broacast receiver package name [DO NOT TRANSLATE] -->
<string name="cell_broadcast_receiver_package">
com.android.cellbroadcastreceiver</string>

Integracja z aplikacjami do przesyłania wiadomości

Możesz zintegrować łącze do aplikacji z aplikacjami do przesyłania wiadomości, aby otworzyć historię wiadomości CellBroadcast. W aplikacji Wiadomości na Androida funkcja ta została zintegrowana z Ustawieniami > Zaawansowane > Alarm awaryjny . Aby zintegrować łącze we własnej aplikacji do przesyłania wiadomości, zdefiniuj ścieżkę w aplikacji do przesyłania wiadomości i skonfiguruj nazwę komponentu modułu CellBroadcast jako com.android.cellbroadcastreceiver/com.android.cellbroadcastreceiver.CellBroadcastListActivity .

Integracja ze skrzynką odbiorczą SMS

Możesz włączyć wyświetlanie wiadomości CellBroadcast w domyślnej aplikacji do przesyłania wiadomości, zastępując poniższą konfigurację przy użyciu nakładki zasobów środowiska wykonawczego.

<item type="bool" name="enable_write_alerts_to_sms_inbox" />

Ponieważ nadawanie uprawnień wykracza poza zakres modułu CellBroadcast, należy przyznać uprawnienie AppOpsManager.OP_WRITE_SMS modułowi CellBroadcast, aby zapewnić kompleksową obsługę. Aby zapoznać się z referencyjną implementacją AOSP, zobacz tę poprawkę SmsApplication.java .

Uruchamianie aplikacji CellBroadcastReceiver

Aplikacja CellBroadcastReceiver ma następujące punkty uruchamiania.

  • Menu aplikacji Ustawienia.

  • Aplikacja (w tym aplikacje innych firm), taka jak aplikacja do obsługi wiadomości, która łączy się z historią wiadomości CellBroadcast.

  • (Opcjonalnie) Ikona uruchamiania na ekranie głównym Androida dodana przez producenta OEM. Aby uzyskać szczegółowe informacje, zobacz Dodawanie ikony uruchamiania .

Ustawienia aplikacji CellBroadcastReceiver

Poniższe zrzuty ekranu przedstawiają menu ustawień aplikacji CellBroadcastReceiver.

Menu ustawień aplikacji CellBroadcastReceiver

Rysunek 2. Menu ustawień aplikacji CellBroadcastReceiver

Historia alertów awaryjnych

Rysunek 3. Ekran historii alertów awaryjnych

Dodanie ikon uruchamiania

Możesz włączyć dostęp do historii wiadomości CellBroadcast z poziomu programu uruchamiającego aplikacje lub za pomocą własnych ikon uruchamiania.

  • Aby umożliwić dostęp do historii wiadomości z poziomu programu uruchamiającego aplikacje, zastąp poniższą konfigurację za pomocą RRO.

    <item type="bool" name="show_message_history_in_launcher" />
    
  • Aby zastąpić domyślną ikonę AOSP, zastąp poniższą konfigurację za pomocą RRO.

    <!-- Customize launcher icon for cellbroadcast history -->
    <item type="mipmap" name="ic_launcher_cell_broadcast" />
    

Włączanie tajnego kodu CMAS

Aby włączyć tajny kod CMAS, *#*#CMAS#*#* ( *#*#2627#*#* na klawiaturze), aplikacja dialera musi nasłuchiwać specjalnego kodu dialera w postaci *#*# code #*#* i obsłuż kod za pomocą metody publicznej sendDialerSpecialCode .

Wymagania dotyczące informacji o obszarze: kanał 50

Kanał 50 to specjalny kanał dla przewoźników, służący do nadawania informacji obszarowych (z wyjątkiem MTN w Republice Południowej Afryki). W przypadku tego kanału rozgłaszane wiadomości nie powodują wyskakującego okna dialogowego ani powiadomienia. Zamiast tego wiadomości rozsyłane są wyświetlane w stanie karty SIM w menu Ustawienia lub na pasku stanu (na przykład wyświetlając kod pocztowy).

Implementacja Android CellBroadcastService zapewnia obsługę następujących interfejsów API w usłudze transmisji komórkowej dla aplikacji Ustawienia i SysUI w celu uzyskania informacji o kanale 50 transmisji. Aby to zaimplementować, wykonaj następujące czynności:

  • Zarejestruj transmisję android.telephony.action.AREA_INFO_UPDATED i zastąp nazwę pakietu odbiornika config_area_info_receiver_packages poprzez RRO.

  • Powiąż z CellBroadcastService.CELL_BROADCAST_SERVICE_INTERFACE .

Ponieważ aplikacje Ustawienia i SysUI wykraczają poza zakres modułu CellBroadcast, należy wprowadzić zmiany w SystemUI lub aplikacji Ustawienia, aby zapewnić kompleksową obsługę. Implementację referencyjną można znaleźć w aplikacji Ustawienia CellBroadcastService .

Dostosowywanie

Nie można bezpośrednio modyfikować kodu źródłowego modułu CellBroadcast, ale można użyć nakładek zasobów środowiska wykonawczego (RRO), aby włączyć (lub wyłączyć) parametry (na przykład można dostosować kolor powiadomień i wymiary w oknach dialogowych). Aby zastąpić domyślne wartości parametrów używanych w module CellBroadcast, zmień nazwę pakietu docelowego na com.android.cellbroadcastreceiver . Ponadto:

  • Listę konfiguracji z możliwością nakładania można znaleźć w pliku overlayable.xml .

  • Przykładową implementację można znaleźć w artykule RROSampleTestApp w AOSP.

Jeśli w implementacji brakuje zasobów do tłumaczenia ciągów znaków interfejsu użytkownika lub jeśli tłumaczenia nie spełniają Twoich oczekiwań, możesz zastąpić zasoby tłumaczeniowe za pomocą RRO lub współpracować z zespołem tłumaczy Google, aby przesłać tłumaczenia ciągów znaków do modułu CellBroadcast. Jeśli zastąpisz zasoby tłumaczeniowe, Google musi udostępnić te ciągi w overlayable.xml , aby umożliwić zastąpienie. Jeśli potrzebujesz więcej konfiguracji w celu dostosowania interfejsu użytkownika, skontaktuj się z grupą wsparcia CellBroadcast .

Migracja danych

System Android 11 zawiera starszą aplikację CellBroadcast, która stanowi mechanizm umożliwiający przechowywanie i migrację danych aplikacji (w tym ustawień użytkownika i historii alertów awaryjnych) w przypadku urządzeń uaktualniających się do modułu CellBroadcast. Implementacje systemu Android korzystające z modułu CellBroadcast powinny uwzględniać w swojej kompilacji starszą aplikację CellBroadcast na potrzeby migracji danych. Jeśli Twoja implementacja korzysta z niestandardowego rozwiązania CellBroadcast, powinieneś zdefiniować plik APK CellBroadcastContentProvider w celu zachowania danych (możesz bezpiecznie usunąć starszy pakiet APK z transmisją komórkową w kolejnej wersji).

Na urządzeniach zaktualizowanych do korzystania z modułu CellBroadcast moduł pobiera dane z aplikacji AOSP LegacyCellBroadcastApp lub zdefiniowanego przez producenta OEM pakietu APK CellBroadcastContentProvider za pośrednictwem dobrze zdefiniowanego urzędu cellbroadcast-legacy .

Korzystanie z pakietu APK CellBroadcastContentProvider zdefiniowanego przez producenta OEM

Definiując plik APK CellBroadcastContentProvider, plik APK musi być zgodny z tymi specyfikacjami.

  • Plik APK to bezgłowy plik APK, który wyświetla jedynie zawartość swojej bazy danych i SharedPreferences za pośrednictwem obiektu ContentProvider z uprawnieniami cellbroadcast-legacy i nie jest dostępny dla aplikacji innych firm.

  • Plik APK jest opracowywany i stanowi własność producenta OEM, który może w dalszym ciągu hostować swój ukryty schemat API.

Aby przeprowadzić migrację SharedPreferences do modułu CellBroadcast, pakiet APK CellBroadcastContentProvider musi obsługiwać metodę ContentProvider.call ) z następującymi parametrami:

  • Organ: @SystemAPI CellBroadcast.LEGACY_CONTENT_URI
  • Metoda: @SystemAPI CellBroadcast.CALL_METHOD_GET_PREFERENCE
  • Arg: @SystemAPI CellBroadcast.Preference

    To jest lista obsługiwanych kluczy preferencji wspólnych dla modułu CellBroadcast. Dane pochodzą z SharedPreferences dla metody ContentProvider.call .

Aby przeprowadzić migrację historii wiadomości do modułu CellBroadcast, pakiet APK CellBroadcastContentProvider musi obsługiwać metodę ContentProvider.query z następującymi parametrami:

  • Organ: @SystemAPI CellBroadcast.LEGACY_CONTENT_URI . Kolumny zapytania zawierają listę obsługiwanych właściwości wiadomości dla modułu CellBroadcast. Pobiera dane (z Twojej bazy danych) dla metody ContentProvider.query .

Aby zapoznać się z referencyjną implementacją CellBroadcastContentProvider, zobacz LegacyCellBroadcastContentProvider .

Testowanie

Pakiet testów zgodności systemu Android (CTS) weryfikuje funkcjonalność systemowych interfejsów API zależnych od aplikacji. Możesz także uruchomić unit tests/testappsp .

Jeśli producent OEM włączył tajny kod CMAS dla urządzenia, urządzenie to może obsługiwać tryb debugowania z następującymi funkcjami.

  • Alerty testowe są pogrupowane w sekcji Inne alerty z przełącznikiem włączania/wyłączania.

  • Historia obejmuje wszystkie wiadomości, które zostały odebrane, ale nie zostały wyświetlone, np. zduplikowane wiadomości lub wiadomości w innym języku.

  • Komunikaty wyświetlają wszystkie dostępne parametry, w tym numer seryjny, identyfikator komunikatu i datę ważności.

Aby włączyć tryb debugowania, wybierz *#*#CMAS#*#* na dialerze.

Kontakt

Aby uzyskać więcej informacji lub zadać pytania dotyczące modułu CellBroadcast, skontaktuj się z grupą wsparcia CellBroadcast .