Difusión celular

El módulo CellBroadcast reduce los esfuerzos repetitivos de los OEM (lo que a su vez reduce la fragmentación en el ecosistema de Android y proporciona un comportamiento coherente a los usuarios finales) y ayuda a optimizar 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, geofencing para alertas de emergencia inalámbricas (WEA) 3.0, comprobaciones de duplicación de mensajes y transmisión de mensajes a aplicaciones. Es un servicio de mensajería de uno a muchos con orientación geográfica y delimitación geográfica 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 de sistema predeterminada que maneja alertas de emergencia y que no son de 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 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 de CellBroadcast al módulo CBS para analizar y procesar el mensaje entrante.

  3. Una vez que se procesa 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

CellBroadcastService y la aplicación CellBroadcastReceiver se incluyen en un solo archivo APEX ( com.google.android.cellbroadcast ), que está disponible para dispositivos con Android 11 o superior. El módulo incluye código en el 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 de 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 en el 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 total 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.

Integración del 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 de configuración con el nombre del paquete com.google.android.cellbroadcastreceiver .

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

Integración con aplicaciones de mensajería

Puede integrar un enlace de aplicación en las aplicaciones de mensajería para abrir el historial de mensajes de CellBroadcast. En la aplicación de mensajería de Android, esto se integró 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.google.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 extremo a extremo. Para obtener una implementación de referencia de AOSP, consulte este parche de 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 las aplicaciones de terceros), como una aplicación de mensajes que se vincula al 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

Adición de iconos de lanzamiento

Puede habilitar el acceso al historial de mensajes de CellBroadcast desde el iniciador de aplicaciones ya 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 marcación debe escuchar el código de marcación especial en forma de *#*# code #*#* y maneje el código usando el método público sendDialerSpecialCode .

Requisito de información de á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 difusión no generan un cuadro de diálogo emergente ni una notificación. En su lugar, los mensajes de difusión aparecen en el estado de SIM del menú Configuración o en la barra de estado (por ejemplo, mostrando un código postal).

La implementación de Android CellBroadcastService proporciona soporte para las siguientes API en el servicio de transmisión celular para las aplicaciones de configuración y SysUI para obtener 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.

  • Enlace a CellBroadcastService.CELL_BROADCAST_SERVICE_INTERFACE .

Debido a que las aplicaciones de configuración y SysUI están fuera del alcance del módulo CellBroadcast, debe implementar sus cambios en SystemUI o la aplicación de 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.google.android.cellbroadcastreceiver . Además:

  • Para obtener una lista de configuraciones superponibles, 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 interfaz de usuario o si las traducciones no cumplen con sus expectativas, puede anular los recursos de traducción mediante un RRO o trabajar con el equipo de traducción de Google para realizar traducciones de cadenas ascendentes 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 .

Migración de datos

Android 11 incluye una aplicación CellBroadcast heredada, que es un mecanismo para conservar y migrar los datos de la aplicación (incluidas las configuraciones de usuario y los historiales de alertas de emergencia) para los dispositivos que se actualizan al módulo CellBroadcast. Las implementaciones de Android que usan 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 usa una solución CellBroadcast personalizada, debe definir un APK de CellBroadcastContentProvider para conservar los datos (puede eliminar de forma segura el APK heredado de transmisión celular en una versión posterior).

En los dispositivos actualizados para usar el módulo CellBroadcast, el módulo obtiene datos de AOSP LegacyCellBroadcastApp o CellBroadcastContentProvider APK definido por el 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 encabezado que muestra solo el contenido de su base de datos y SharedPreferences a través de un objeto ContentProvider con la 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 de API oculto.

Para migrar SharedPreferences al módulo CellBroadcast, el APK de CellBroadcastContentProvider debe ser compatible con 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 ser compatible con el método ContentProvider.query con los siguientes parámetros:

  • Autoridad: @SystemAPI CellBroadcast.LEGACY_CONTENT_URI . Las columnas de consulta enumeran las propiedades de mensaje 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 .

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 funciones.

  • 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, incluidos 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 más detalles o preguntas sobre el módulo CellBroadcast, comuníquese con el grupo de soporte de CellBroadcast .