Cella di trasmissione

Il modulo CellBroadcast riduce gli sforzi ripetitivi per gli OEM (che a sua volta riduce la frammentazione nell'ecosistema Android e fornisce un comportamento coerente agli utenti finali) e aiuta a semplificare i test e la certificazione degli operatori per i requisiti relativi a CellBroadcast (perché il codice non può essere modificato dagli OEM ). Questo modulo è aggiornabile, il che significa che può ricevere aggiornamenti alle funzionalità al di fuori del normale ciclo di rilascio di Android.

Formato del pacchetto

Il modulo CellBroadcast è costituito dal seguente servizio e app.

  • Il servizio CellBroadcastService supporta la decodifica SMS CellBroadcast, il geofencing per gli avvisi di emergenza wireless (WEA) 3.0, i controlli di duplicazione dei messaggi e la trasmissione di messaggi alle app. Si tratta di un servizio di messaggistica uno-a-molti con targeting geografico e georecintato progettato per recapitare messaggi a più utenti di telefoni cellulari, in un'area definita, contemporaneamente. Il servizio è definito dal comitato ETSI GSM, 3GPP , e fa parte degli standard di telecomunicazione.

  • L'app CellBroadcastReceiver è un'app di sistema predefinita che gestisce gli avvisi di emergenza e non di emergenza (come gli avvisi ambra e presidenziali) e presenta le informazioni agli utenti finali in base alle normative regionali e dell'operatore.

Flusso di messaggi CellBroadcast

La figura seguente mostra il flusso di messaggi CellBroadcast.

Flusso di messaggi CellBroadcastReceiver

Figura 1. Flusso di messaggi CellBroadcastReceiver

  1. Il livello di interfaccia radio (RIL) notifica InBoundSMSHandler un SMS CDMA/GSM CellBroadcast.

  2. Il framework inoltra l'SMS CellBroadcast al modulo CBS per analizzare ed elaborare il messaggio in arrivo.

  3. Una volta elaborato il messaggio, CellBroadcastService inoltra l'intento all'app CellBroadcastReceiver predefinita del sistema.

  4. L'app CellBroadcastReceiver visualizza il messaggio all'utente.

Formato del modulo

CellBroadcastService e l'app CellBroadcastReceiver sono inclusi in un singolo file APEX ( com.android.cellbroadcast ), disponibile per i dispositivi con Android 11 o versioni successive. Il modulo include il codice in package/app/CellBroadcastReceiver e migra le classi del framework esistenti in packages/modules/CellBroadcastService .

Dipendenze del modulo

Il modulo CellBroadcast interagisce con il framework utilizzando solo @SystemApi stabili (no API @hide ) e dipende dalle seguenti librerie statiche.

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

È possibile personalizzare la configurazione utilizzando gli overlay delle risorse di runtime (RRO) .

Configurazione dei permessi

Il modulo CellBroadcast è firmato con una firma di Google anziché con una firma della piattaforma, il che significa che il modulo perde l'accesso alle autorizzazioni di firma. Android 11 definisce invece il nuovo permesso di firma com.android.cellbroadcastservice.FULL_ACCESS_CELL_BROADCAST_HISTORY all'interno del modulo CellBroadcast; solo i pacchetti nel modulo possono ottenere l'autorizzazione poiché sono firmati con la stessa chiave. Questa autorizzazione consente all'app CellBroadcastReceiver di avere accesso completo al database all'interno di CellBroadcastService.

La piattaforma concede l'autorizzazione di runtime android.permission.READ_CELL_BROADCASTS all'app SMS di sistema predefinita per accedere alla cronologia degli avvisi di emergenza.

Integrazione del modulo CellBroadcast

Questa sezione descrive come integrare il modulo CellBroadcast.

Integrazione con Impostazioni

Puoi decidere dove integrare le impostazioni di CellBroadcast nell'app Impostazioni (gli utenti finali accedono alla pagina delle impostazioni di CellBroadcast da Impostazioni > App e notifiche > Avanzate > Avviso di emergenza ). Per avviare l'app CellBroadcastReceiver dall'app Impostazioni, modificare le seguenti configurazioni delle impostazioni con il nome del pacchetto com.android.cellbroadcastreceiver .

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

Integrazione con app di messaggistica

Puoi integrare un collegamento all'app nelle app di messaggistica per aprire la cronologia dei messaggi CellBroadcast. Nell'app Messaggistica Android, questo è stato integrato in Impostazioni > Avanzate > Avviso di emergenza . Per integrare un collegamento nella tua app di messaggistica, definisci il percorso nell'app di messaggistica e configura il nome del componente per il modulo CellBroadcast come com.android.cellbroadcastreceiver/com.android.cellbroadcastreceiver.CellBroadcastListActivity .

Integrazione con casella di posta SMS

Puoi abilitare la visualizzazione dei messaggi CellBroadcast nell'app di messaggistica predefinita sovrascrivendo la seguente configurazione utilizzando un overlay di risorse di runtime.

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

Poiché la concessione delle autorizzazioni non rientra nell'ambito del modulo CellBroadcast, è necessario concedere l'autorizzazione AppOpsManager.OP_WRITE_SMS al modulo CellBroadcast per fornire supporto end-to-end. Per un'implementazione di riferimento AOSP, fare riferimento a questa patch SmsApplication.java .

Avvio dell'app CellBroadcastReceiver

L'app CellBroadcastReceiver presenta i seguenti punti di avvio.

  • Il menu dell'app Impostazioni.

  • Un'app (incluse app di terze parti) come un'app di messaggistica che si collega alla cronologia dei messaggi CellBroadcast.

  • (Facoltativo) Un'icona di avvio dalla schermata iniziale di Android aggiunta dall'OEM. Per maggiori dettagli, vedere Aggiunta di un'icona di avvio .

Impostazioni dell'app CellBroadcastReceiver

Gli screenshot seguenti mostrano il menu delle impostazioni dell'app CellBroadcastReceiver.

Menu delle impostazioni dell'app CellBroadcastReceiver

Figura 2. Menu delle impostazioni dell'app CellBroadcastReceiver

Cronologia degli avvisi di emergenza

Figura 3. Schermata della cronologia degli avvisi di emergenza

Aggiunta di icone di avvio

Puoi abilitare l'accesso alla cronologia dei messaggi CellBroadcast dal programma di avvio delle app e tramite le tue icone di avvio.

  • Per abilitare l'accesso alla cronologia dei messaggi dall'icona di avvio delle app, sovrascrivi la seguente configurazione utilizzando un RRO.

    <item type="bool" name="show_message_history_in_launcher" />
    
  • Per sovrascrivere l'icona predefinita AOSP, sovrascrivere la seguente configurazione utilizzando un RRO.

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

Abilitazione del codice segreto CMAS

Per abilitare il codice segreto CMAS, *#*#CMAS#*#* ( *#*#2627#*#* sulla tastiera), un'app dialer deve ascoltare il codice dialer speciale sotto forma di *#*# code #*#* e gestire il codice utilizzando il metodo pubblico sendDialerSpecialCode .

Requisito informativo sulla zona: Canale 50

Il canale 50 è un canale speciale che consente agli operatori di trasmettere informazioni relative all'area (ad eccezione di MTN in Sud Africa). Per questo canale, i messaggi trasmessi non generano una finestra di dialogo o una notifica popup. Invece, i messaggi broadcast vengono visualizzati nello stato SIM del menu Impostazioni o nella barra di stato (ad esempio, visualizzando un codice postale).

L'implementazione Android CellBroadcastService fornisce supporto per le seguenti API nel servizio Cell Broadcast per le app Impostazioni e SysUI per ottenere le informazioni di trasmissione del Canale 50. Per implementare ciò, procedi come segue:

  • Registra la trasmissione android.telephony.action.AREA_INFO_UPDATED e sovrascrivi il nome del pacchetto ricevitore config_area_info_receiver_packages tramite un RRO.

  • Associa a CellBroadcastService.CELL_BROADCAST_SERVICE_INTERFACE .

Poiché le app Impostazioni e SysUI non rientrano nell'ambito del modulo CellBroadcast, devi implementare le modifiche nell'interfaccia SystemUI o nell'app Impostazioni per fornire supporto end-to-end. Per un'implementazione di riferimento, fare riferimento all'app Impostazioni CellBroadcastService .

Personalizzazione

Non è possibile modificare direttamente il codice sorgente del modulo CellBroadcast, ma è possibile utilizzare gli overlay delle risorse di runtime (RRO) per abilitare (o disabilitare) i parametri (ad esempio, è possibile personalizzare il colore delle notifiche e delle dimensioni nelle finestre di dialogo). Per sovrascrivere i valori predefiniti dei parametri utilizzati nel modulo CellBroadcast, modificare il nome del pacchetto di destinazione in com.android.cellbroadcastreceiver . Inoltre:

  • Per un elenco delle configurazioni sovrapponibili, fare riferimento a overlayable.xml .

  • Per un'implementazione di esempio, fare riferimento a RROSampleTestApp in AOSP.

Se nell'implementazione mancano le risorse di traduzione delle stringhe dell'interfaccia utente o se le traduzioni non soddisfano le tue aspettative, puoi sovrascrivere le risorse di traduzione utilizzando un RRO o collaborare con il team di traduzione di Google per eseguire l'upstream delle traduzioni delle stringhe nel modulo CellBroadcast. Se esegui l'override delle risorse di traduzione, Google deve esporre tali stringhe in overlayable.xml per consentire l'override. Se hai bisogno di più configurazioni per la personalizzazione dell'interfaccia utente, contatta il gruppo di supporto CellBroadcast .

Migrazione dei dati

Android 11 include un'app CellBroadcast legacy, ovvero un meccanismo per preservare e migrare i dati delle app (incluse le impostazioni utente e la cronologia degli avvisi di emergenza) per i dispositivi che eseguono l'aggiornamento al modulo CellBroadcast. Le implementazioni Android che utilizzano il modulo CellBroadcast devono includere l'app legacy CellBroadcast nella build per la migrazione dei dati. Se la tua implementazione utilizza una soluzione CellBroadcast personalizzata, dovresti definire un APK CellBroadcastContentProvider per conservare i dati (puoi rimuovere in sicurezza l'APK Cell Broadcast legacy in una versione successiva).

Sui dispositivi aggiornati per utilizzare il modulo CellBroadcast, il modulo recupera i dati da AOSP LegacyCellBroadcastApp o dall'APK CellBroadcastContentProvider definito dall'OEM tramite l'autorità cellbroadcast-legacy ben definita.

Utilizzando un APK CellBroadcastContentProvider definito dall'OEM

Quando si definisce un APK CellBroadcastContentProvider, l'APK deve seguire queste specifiche.

  • L'APK è un APK headless che mostra solo il contenuto del proprio database e SharedPreferences tramite un oggetto ContentProvider con l'autorità cellbroadcast-legacy e non è accessibile alle app di terze parti.

  • L'APK è sviluppato e di proprietà dell'OEM, dove l'OEM può continuare a ospitare il proprio schema API nascosto.

Per migrare SharedPreferences al modulo CellBroadcast, l'APK CellBroadcastContentProvider deve supportare il metodo ContentProvider.call ) con i seguenti parametri:

  • Autorità: @SystemAPI CellBroadcast.LEGACY_CONTENT_URI
  • Metodo: @SystemAPI CellBroadcast.CALL_METHOD_GET_PREFERENCE
  • Argomento: @SystemAPI CellBroadcast.Preference

    Questo è un elenco delle chiavi di preferenza condivise supportate per il modulo CellBroadcast. I dati provengono da SharedPreferences per il metodo ContentProvider.call .

Per migrare la cronologia dei messaggi al modulo CellBroadcast, l'APK CellBroadcastContentProvider deve supportare il metodo ContentProvider.query con i seguenti parametri:

  • Autorità: @SystemAPI CellBroadcast.LEGACY_CONTENT_URI . Le colonne della query elencano le proprietà dei messaggi supportate per il modulo CellBroadcast. Prende i dati (dal database) per il metodo ContentProvider.query .

Per un'implementazione di riferimento per CellBroadcastContentProvider, fare riferimento a LegacyCellBroadcastContentProvider .

Test

Android Compatibility Test Suite (CTS) verifica la funzionalità delle API di sistema dipendenti dall'app. È anche possibile eseguire unit tests/testappsp del modulo CellBroadcast.

Se l'OEM ha abilitato il codice segreto CMAS per un dispositivo, tale dispositivo può supportare la modalità debug con le seguenti funzionalità.

  • Gli avvisi di test sono raggruppati in Altri avvisi con un interruttore di attivazione/disattivazione.

  • La cronologia include tutti i messaggi ricevuti ma non visualizzati, ad esempio messaggi duplicati o messaggi in un'altra lingua.

  • I messaggi visualizzano tutti i parametri disponibili, incluso il numero di serie, l'ID del messaggio e la data di scadenza.

Per abilitare la modalità debug, comporre *#*#CMAS#*#* sul dialer.

Contatto

Per ulteriori dettagli o domande sul modulo CellBroadcast, contattare il gruppo di supporto CellBroadcast .