Difusión celular

El módulo CellBroadcast reduce los esfuerzos repetitivos para los OEM (lo que a su vez reduce la fragmentación en todo el ecosistema de Android y proporciona un comportamiento consistente a los usuarios finales) y ayuda a agilizar las pruebas y la certificación de los operadores para los requisitos relacionados con CellBroadcast (porque los OEM no pueden modificar el código). ). Este módulo es actualizable, lo que significa que puede recibir actualizaciones de funcionalidad fuera del ciclo de lanzamiento normal de Android.

Formato de paquete

El módulo CellBroadcast consta del siguiente servicio y aplicación.

  • El servicio CellBroadcastService admite la decodificación de SMS de CellBroadcast, geocercas para alerta de emergencia inalámbrica (WEA) 3.0, comprobaciones de duplicación de mensajes y transmisión de mensajes a aplicaciones. Es un servicio de mensajería uno a muchos, geolocalizado y geocercado, diseñado para entregar mensajes a múltiples usuarios de teléfonos móviles, en un área definida, al mismo tiempo. El servicio está definido por el comité ETSI GSM, 3GPP , y forma parte de los estándares de telecomunicaciones.

  • La aplicación CellBroadcastReceiver es una aplicación predeterminada del sistema que maneja alertas de emergencia y de no emergencia (como alertas ámbar y presidenciales) y presenta la información a los usuarios finales según las regulaciones regionales y del operador.

Flujo de mensajes de CellBroadcast

La siguiente figura muestra el flujo de mensajes de CellBroadcast.

Flujo de mensajes de CellBroadcastReceiver

Figura 1. Flujo de mensajes de CellBroadcastReceiver

  1. La capa de interfaz de radio (RIL) notifica a InBoundSMSHandler sobre un SMS CDMA/GSM CellBroadcast.

  2. El marco reenvía el SMS CellBroadcast al módulo CBS para analizar y procesar el mensaje entrante.

  3. Una vez procesado el mensaje, CellBroadcastService reenvía la intención a la aplicación CellBroadcastReceiver predeterminada del sistema.

  4. La aplicación CellBroadcastReceiver muestra el mensaje al usuario.

Formato del módulo

La aplicación CellBroadcastService y CellBroadcastReceiver se incluyen en un único archivo APEX ( com.android.cellbroadcast ), que está disponible para dispositivos con Android 11 o superior. El módulo incluye código en package/app/CellBroadcastReceiver y migra las clases de marco existentes a packages/modules/CellBroadcastService .

Dependencias del módulo

El módulo CellBroadcast interactúa con el marco utilizando solo @SystemApi estable (sin API @hide ) y depende de las siguientes bibliotecas estáticas.

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

Puede personalizar la configuración mediante superposiciones de recursos en tiempo de ejecución (RRO) .

Configuración de permisos

El módulo CellBroadcast está firmado con una firma de Google en lugar de una firma de plataforma, lo que significa que el módulo pierde el acceso a los permisos de firma. En cambio, Android 11 define el nuevo permiso de firma com.android.cellbroadcastservice.FULL_ACCESS_CELL_BROADCAST_HISTORY dentro del módulo CellBroadcast; solo los paquetes del módulo pueden obtener el permiso ya que están firmados con la misma clave. Este permiso permite que la aplicación CellBroadcastReceiver tenga acceso completo a la base de datos dentro de CellBroadcastService.

La plataforma otorga el permiso de tiempo de ejecución android.permission.READ_CELL_BROADCASTS a la aplicación de SMS predeterminada del sistema para acceder al historial de alertas de emergencia.

Integrando el módulo CellBroadcast

Esta sección describe cómo integrar el módulo CellBroadcast.

Integración con la configuración

Puede decidir dónde integrar la configuración de CellBroadcast en la aplicación Configuración (los usuarios finales acceden a la página de configuración de CellBroadcast desde Configuración > Aplicaciones y notificaciones > Avanzado > Alerta de emergencia ). Para iniciar la aplicación CellBroadcastReceiver desde la aplicación Configuración, cambie las siguientes configuraciones con el nombre del paquete com.android.cellbroadcastreceiver .

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

Integración con aplicaciones de mensajería

Puede integrar un enlace de aplicación en aplicaciones de mensajería para abrir el historial de mensajes de CellBroadcast. En la aplicación de mensajería de Android, esto se ha integrado en Configuración > Avanzado > Alerta de emergencia . Para integrar un enlace en su propia aplicación de mensajería, defina la ruta en la aplicación de mensajería y configure el nombre del componente para el módulo CellBroadcast como com.android.cellbroadcastreceiver/com.android.cellbroadcastreceiver.CellBroadcastListActivity .

Integración con la bandeja de entrada de SMS

Puede habilitar la visualización de mensajes de CellBroadcast en la aplicación de mensajería predeterminada anulando la siguiente configuración mediante una superposición de recursos de tiempo de ejecución.

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

Debido a que otorgar permisos está fuera del alcance del módulo CellBroadcast, debe otorgar el permiso AppOpsManager.OP_WRITE_SMS al módulo CellBroadcast para brindar soporte de un extremo a otro. Para obtener una implementación de referencia de AOSP, consulte este parche SmsApplication.java .

Inicio de la aplicación CellBroadcastReceiver

La aplicación CellBroadcastReceiver tiene los siguientes puntos de inicio.

  • El menú de la aplicación Configuración.

  • Una aplicación (incluidas aplicaciones de terceros), como una aplicación de mensajes que enlaza con el historial de mensajes de CellBroadcast.

  • (Opcional) Un ícono de inicio desde la pantalla de inicio de Android agregado por el OEM. Para obtener más información, consulte Agregar un icono de inicio .

Configuración de la aplicación CellBroadcastReceiver

Las siguientes capturas de pantalla muestran el menú de configuración de la aplicación CellBroadcastReceiver.

Menú de configuración de la aplicación CellBroadcastReceiver

Figura 2. Menú de configuración de la aplicación CellBroadcastReceiver

Historial de alertas de emergencia

Figura 3. Pantalla de historial de alertas de emergencia

Agregar íconos de inicio

Puede habilitar el acceso al historial de mensajes de CellBroadcast desde el iniciador de aplicaciones y a través de sus propios íconos de inicio.

  • Para habilitar el acceso al historial de mensajes desde el iniciador de aplicaciones, anule la siguiente configuración mediante un RRO.

    <item type="bool" name="show_message_history_in_launcher" />
    
  • Para anular el icono predeterminado de AOSP, anule la siguiente configuración mediante un RRO.

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

Habilitación del código secreto CMAS

Para habilitar el código secreto CMAS, *#*#CMAS#*#* ( *#*#2627#*#* en el teclado de marcación), una aplicación de marcador debe escuchar el código de marcador especial en forma de *#*# code #*#* y maneja el código usando el método público sendDialerSpecialCode .

Requisito de información del área: Canal 50

El canal 50 es un canal especial para que los operadores transmitan información relacionada con el área (excepto MTN en Sudáfrica). Para este canal, los mensajes de transmisión no generan un cuadro de diálogo emergente ni una notificación. En cambio, los mensajes de difusión aparecen en el estado de la SIM del menú Configuración o en la barra de estado (por ejemplo, mostrando un código postal).

La implementación de Android CellBroadcastService brinda soporte para las siguientes API en el servicio de transmisión celular para que las aplicaciones Configuración y SysUI obtengan la información del Canal 50 de transmisión. Para implementar esto, haga lo siguiente:

  • Registre la transmisión android.telephony.action.AREA_INFO_UPDATED y anule el nombre del paquete del receptor config_area_info_receiver_packages a través de un RRO.

  • Vincular a CellBroadcastService.CELL_BROADCAST_SERVICE_INTERFACE .

Debido a que las aplicaciones Configuración y SysUI están fuera del alcance del módulo CellBroadcast, debe implementar sus cambios en SystemUI o la aplicación Configuración para brindar soporte de extremo a extremo. Para obtener una implementación de referencia, consulte la aplicación Configuración de CellBroadcastService .

Personalización

No puede modificar directamente el código fuente del módulo CellBroadcast, pero puede usar superposiciones de recursos de tiempo de ejecución (RRO) para habilitar (o deshabilitar) parámetros (por ejemplo, puede personalizar el color de las notificaciones y las dimensiones en los cuadros de diálogo). Para anular los valores predeterminados de los parámetros utilizados en el módulo CellBroadcast, cambie el nombre del paquete de destino a com.android.cellbroadcastreceiver . Además:

  • Para obtener una lista de configuraciones superpuestas, consulte overlayable.xml .

  • Para ver una implementación de ejemplo, consulte RROSampleTestApp en AOSP.

Si a la implementación le faltan recursos de traducción de cadenas de UI o si las traducciones no cumplen con sus expectativas, puede anular los recursos de traducción usando un RRO o trabajar con el equipo de traducción de Google para subir las traducciones de cadenas al módulo CellBroadcast. Si anula los recursos de traducción, Google debe exponer esas cadenas en overlayable.xml para permitir la anulación. Si necesita más configuraciones para la personalización de la interfaz de usuario, comuníquese con el grupo de soporte de CellBroadcast .

Migrar datos

Android 11 incluye una aplicación CellBroadcast heredada, que es un mecanismo para preservar y migrar datos de la aplicación (incluidas la configuración del usuario y los historiales de alertas de emergencia) para dispositivos que se actualizan al módulo CellBroadcast. Las implementaciones de Android que utilizan el módulo CellBroadcast deben incluir la aplicación CellBroadcast heredada en su compilación para la migración de datos. Si su implementación utiliza una solución CellBroadcast personalizada, debe definir un APK CellBroadcastContentProvider para conservar los datos (puede eliminar de forma segura el APK de transmisión celular heredado en una versión posterior).

En los dispositivos actualizados para usar el módulo CellBroadcast, el módulo obtiene datos de AOSP LegacyCellBroadcastApp o del APK CellBroadcastContentProvider definido por OEM a través de la autoridad cellbroadcast-legacy bien definida.

Uso de un APK de CellBroadcastContentProvider definido por OEM

Al definir un APK de CellBroadcastContentProvider, el APK debe seguir estas especificaciones.

  • El APK es un APK sin cabeza que muestra solo el contenido de su base de datos y SharedPreferences a través de un objeto ContentProvider con la autoridad cellbroadcast-legacy y no es accesible para aplicaciones de terceros.

  • El APK es desarrollado y es propiedad del OEM, donde el OEM puede continuar alojando su esquema API oculto.

Para migrar SharedPreferences al módulo CellBroadcast, el APK de CellBroadcastContentProvider debe admitir el método ContentProvider.call con los siguientes parámetros:

  • Autoridad: @SystemAPI CellBroadcast.LEGACY_CONTENT_URI
  • Método: @SystemAPI CellBroadcast.CALL_METHOD_GET_PREFERENCE
  • Arg: @SystemAPI CellBroadcast.Preference

    Esta es una lista de claves de preferencias compartidas admitidas para el módulo CellBroadcast. Los datos provienen de SharedPreferences para el método ContentProvider.call .

Para migrar el historial de mensajes al módulo CellBroadcast, el APK de CellBroadcastContentProvider debe admitir el método ContentProvider.query con los siguientes parámetros:

  • Autoridad: @SystemAPI CellBroadcast.LEGACY_CONTENT_URI . Las columnas de consulta enumeran las propiedades de mensajes admitidas para el módulo CellBroadcast. Toma datos (de su base de datos) para el método ContentProvider.query .

Para obtener una implementación de referencia para CellBroadcastContentProvider, consulte LegacyCellBroadcastContentProvider .

Pruebas

El conjunto de pruebas de compatibilidad de Android (CTS) verifica la funcionalidad de las API del sistema dependientes de la aplicación. También puede ejecutar unit tests/testappsp del módulo CellBroadcast.

Si el OEM ha habilitado el código secreto CMAS para un dispositivo, ese dispositivo puede admitir el modo de depuración con las siguientes características.

  • Las alertas de prueba se agrupan en Otras alertas con un interruptor de encendido/apagado.

  • El historial incluye todos los mensajes que se recibieron pero no se mostraron, como mensajes duplicados o mensajes en otro idioma.

  • Los mensajes muestran todos los parámetros disponibles, incluido el número de serie, el ID del mensaje y la fecha de vencimiento.

Para habilitar el modo de depuración, marque *#*#CMAS#*#* en el marcador.

Contacto

Para obtener más detalles o preguntas sobre el módulo CellBroadcast, comuníquese con el grupo de soporte de CellBroadcast .