Moduł CellBroadcast zmniejsza powtarzalne wysiłki producentów OEM (co z kolei zmniejsza fragmentację w ekosystemie Androida i zapewnia spójne zachowanie użytkowników końcowych) oraz pomaga usprawnić testowanie operatorów i certyfikację pod kątem wymagań związanych z CellBroadcast (ponieważ kod nie może być modyfikowany przez producentów OEM ). Ten moduł można aktualizować, co oznacza, że może otrzymywać aktualizacje funkcji 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 dla bezprzewodowego alertu awaryjnego (WEA) 3.0, sprawdzanie duplikacji wiadomości i rozgłaszanie wiadomości do aplikacji. Jest to usługa przesyłania wiadomości ukierunkowana geograficznie i ogrodzona geograficznie jeden-do-wielu, zaprojektowana w celu dostarczania wiadomości do wielu użytkowników telefonów komórkowych na określonym obszarze w tym samym czasie. Usługa jest zdefiniowana przez komitet ETSI GSM, 3GPP i jest częścią standardów telekomunikacyjnych.
Aplikacja CellBroadcastReceiver to domyślna aplikacja systemowa, która obsługuje alarmy alarmowe i inne (takie jak alarmy bursztynowe i prezydenckie) i prezentuje informacje użytkownikom końcowym na podstawie przepisów przewoźnika i regionalnych.
Przepływ wiadomości CellBroadcast
Poniższy rysunek przedstawia przepływ komunikatów CellBroadcast.
Rysunek 1. Przepływ wiadomości CellBroadcastReceiver
Warstwa interfejsu radiowego (RIL) powiadamia
InBoundSMSHandler
o wiadomości SMS CDMA/GSM CellBroadcast.Platforma przekazuje wiadomość SMS CellBroadcast do modułu CBS w celu przeanalizowania i przetworzenia wiadomości przychodzącej.
Po przetworzeniu wiadomości CellBroadcastService przekazuje intencję do domyślnej systemowej aplikacji CellBroadcastReceiver.
Aplikacja CellBroadcastReceiver wyświetla komunikat użytkownikowi.
Format modułu
Usługa 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 z platformą przy użyciu tylko 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
Konfigurację można dostosować za pomocą nakładek zasobów środowiska wykonawczego (RRO) .
Konfiguracja uprawnień
Moduł CellBroadcast jest podpisany podpisem Google zamiast podpisu platformy, co oznacza, że moduł traci dostęp do uprawnień do podpisu. Zamiast tego system Android 11 definiuje nowe uprawnienie 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 ramach CellBroadcastService.
Platforma przyznaje uprawnienia uruchomieniowe android.permission.READ_CELL_BROADCASTS
domyślnej systemowej aplikacji SMS w celu uzyskania dostępu do historii alertów alarmowych.
Integracja modułu CellBroadcast
W tej sekcji opisano, jak zintegrować moduł 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 poziomu aplikacji Ustawienia, zmień następujące konfiguracje ustawień na nazwę 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 obsługi wiadomości, aby otworzyć historię wiadomości CellBroadcast. W aplikacji Android Messaging zostało to zintegrowane w Ustawienia > Zaawansowane > Alarm alarmowy . Aby zintegrować łącze we własnej aplikacji do obsługi wiadomości, zdefiniuj ścieżkę w aplikacji do obsługi wiadomości i skonfiguruj nazwę składnika modułu CellBroadcast jako com.android.cellbroadcastreceiver/com.android.cellbroadcastreceiver.CellBroadcastListActivity
.
Integracja ze skrzynką SMS
Możesz włączyć wyświetlanie komunikatów CellBroadcast w domyślnej aplikacji do obsługi wiadomości, zastępując następującą 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 implementacją referencyjną AOSP, zapoznaj się z tą SmsApplication.java
.
Uruchamianie aplikacji CellBroadcastReceiver
Aplikacja CellBroadcastReceiver ma następujące punkty uruchamiania.
Menu aplikacji Ustawienia.
Aplikacja (w tym aplikacje innych firm), na przykład aplikacja do obsługi wiadomości, która łączy się z historią wiadomości CellBroadcast.
(Opcjonalnie) Ikona uruchamiania z ekranu głównego systemu Android 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.
Rysunek 2. Menu ustawień aplikacji CellBroadcastReceiver
Rysunek 3. Ekran historii alarmów awaryjnych
Dodawanie ikon uruchamiania
Możesz włączyć dostęp do historii wiadomości CellBroadcast z poziomu uruchamiania aplikacji i za pomocą własnych ikon uruchamiania.
Aby umożliwić dostęp do historii wiadomości z poziomu uruchamiania aplikacji, zastąp następującą konfigurację za pomocą RRO.
<item type="bool" name="show_message_history_in_launcher" />
Aby zastąpić domyślną ikonę AOSP, zastąp następującą konfigurację za pomocą RRO.
<!-- Customize launcher icon for cellbroadcast history --> <item type="mipmap" name="ic_launcher_cell_broadcast" />
Włączenie 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 przy użyciu metody publicznej sendDialerSpecialCode
.
Wymagane informacje o obszarze: Kanał 50
Channel 50 to specjalny kanał dla operatorów do nadawania informacji związanych z obszarem (z wyjątkiem MTN w RPA). W przypadku tego kanału wiadomości rozgłaszane nie powodują wyskakującego okna dialogowego ani powiadomienia. Zamiast tego wiadomości rozgłoszeniowe pojawiają się w statusie 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 emisji. Aby to zaimplementować, wykonaj następujące czynności:
Zarejestruj transmisję
android.telephony.action.AREA_INFO_UPDATED
i zastąp nazwę pakietu odbiornikaconfig_area_info_receiver_packages
za pośrednictwem RRO.Powiązanie z
CellBroadcastService.CELL_BROADCAST_SERVICE_INTERFACE
.
Ponieważ aplikacje Settings i SysUI są poza zakresem modułu CellBroadcast, musisz wprowadzić zmiany w SystemUI lub aplikacji Settings, 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
. Dodatkowo:
Lista możliwych do nałożenia konfiguracji znajduje się w
overlayable.xml
.Przykładowa implementacja znajduje się w
RROSampleTestApp
w AOSP.
Jeśli w implementacji brakuje zasobów do tłumaczenia ciągów interfejsu użytkownika lub jeśli tłumaczenia nie spełniają Twoich oczekiwań, możesz nadpisać zasoby tłumaczeniowe za pomocą RRO lub współpracować z zespołem tłumaczeń Google, aby nadać tłumaczenia ciągów do modułu CellBroadcast. W przypadku zastąpienia zasobów tłumaczeniowych Google musi ujawnić te ciągi w overlayable.xml
, aby umożliwić zastępowanie. Jeśli potrzebujesz więcej konfiguracji do dostosowywania interfejsu użytkownika, skontaktuj się z grupą wsparcia CellBroadcast .
Migracja danych
Android 11 zawiera starszą aplikację CellBroadcast, która jest mechanizmem do przechowywania i migracji danych aplikacji (w tym ustawień użytkownika i historii alertów awaryjnych) dla urządzeń aktualizowanych do modułu CellBroadcast. Implementacje Androida korzystające z modułu CellBroadcast powinny zawierać starszą aplikację CellBroadcast w swojej kompilacji na potrzeby migracji danych. Jeśli Twoja implementacja korzysta z niestandardowego rozwiązania CellBroadcast, należy zdefiniować pakiet APK CellBroadcastContentProvider, aby zachować dane (możesz bezpiecznie usunąć starszy pakiet APK z transmisją komórkową w kolejnej wersji).
Na urządzeniach uaktualnionych do korzystania z modułu CellBroadcast moduł pobiera dane z aplikacji AOSP LegacyCellBroadcastApp lub ze zdefiniowanego przez producenta pakietu APK CellBroadcastContentProvider za pośrednictwem dobrze zdefiniowanego cellbroadcast-legacy
.
Korzystanie ze zdefiniowanego przez producenta pakietu APK CellBroadcastContentProvider
Podczas definiowania pakietu APK CellBroadcastContentProvider musi on być zgodny z tymi specyfikacjami.
Plik APK to plik bez nagłówka, który udostępnia tylko zawartość swojej bazy danych i
SharedPreferences
za pośrednictwem obiektuContentProvider
z uprawnieniamicellbroadcast-legacy
i nie jest dostępny dla aplikacji innych firm.Pakiet APK został opracowany i jest własnością producenta OEM, w którym producent OEM może nadal hostować swój ukryty schemat interfejsu API.
Aby przeprowadzić migrację SharedPreferences
do modułu CellBroadcast, pakiet APK CellBroadcastContentProvider musi obsługiwać metodę ContentProvider.call
) z następującymi parametrami:
- Urząd:
@SystemAPI CellBroadcast.LEGACY_CONTENT_URI
- Metoda:
@SystemAPI CellBroadcast.CALL_METHOD_GET_PREFERENCE
Arg:
@SystemAPI CellBroadcast.Preference
To jest lista obsługiwanych kluczy preferencji współdzielonych dla modułu CellBroadcast. Dane pochodzą z
SharedPreferences
dla metodyContentProvider.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:
- Urząd:
@SystemAPI CellBroadcast.LEGACY_CONTENT_URI
. Kolumny zapytań zawierają listę obsługiwanych właściwości wiadomości dla modułu CellBroadcast. Pobiera dane (z bazy danych) dla metodyContentProvider.query
.
Aby zapoznać się z implementacją referencyjną dla CellBroadcastContentProvider,
zapoznaj się z LegacyCellBroadcastContentProvider
.
Testowanie
Android Compatibility Test Suite (CTS) weryfikuje funkcjonalność zależnych od aplikacji systemowych interfejsów API. Możesz także uruchomić unit tests/testappsp
.
Jeśli producent OEM włączył tajny kod CMAS dla urządzenia, to urządzenie może obsługiwać tryb debugowania z następującymi funkcjami.
Alerty testowe są pogrupowane w kategorii Inne alerty z przełącznikiem wł./wył.
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.
Wiadomości wyświetlają wszystkie dostępne parametry, w tym numer seryjny, identyfikator wiadomości i datę ważności.
Aby włączyć tryb debugowania, wybierz *#*#CMAS#*#* na dialerze.
Kontakt
Aby uzyskać dodatkowe informacje lub pytania dotyczące modułu CellBroadcast, skontaktuj się z grupą wsparcia CellBroadcast .