Transmisión móvil

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 brinda el comportamiento de los usuarios finales) y ayuda a optimizar las pruebas de los operadores y certificación para cumplir con los requisitos relacionados con CellBroadcast (porque el código no puede modificados por OEM). Este módulo se puede actualizar, por lo que puede recibir actualizaciones para fuera del ciclo normal de lanzamiento de Android.

Formato del paquete

El módulo CellBroadcast consta de los siguientes servicios y apps.

  • El servicio CellBroadcastService admite la decodificación de SMS de CellBroadcast. geovallado para alertas de emergencia inalámbricas (WEA) 3.0, verificaciones de duplicación de mensajes, y transmitir mensajes a las aplicaciones. Se trata de una segmentación geográfica de uno a varios servicio de mensajería con geovallado diseñado para enviar mensajes a múltiples usuarios de teléfonos, en un área definida, al mismo tiempo. El servicio se define según el comité de GSM de la ETSI 3GPP y forma parte del estándares de telecomunicaciones.

  • La app CellBroadcastReceiver es una app predeterminada del sistema que controla alertas de emergencia y de emergencia (como alertas AMBER y alertas presidenciales) y presenta la información a los usuarios finales según el operador y la región reglamentaciones.

Flujo de mensajes de emisión móvil

En la siguiente figura, se 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 una conexión CDMA/GSM. SMS de emisión móvil.

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

  3. Una vez procesado el mensaje, CellBroadcastService reenvía el intent a la app CellBroadcastReceiver predeterminada del sistema.

  4. La app de CellBroadcastReceiver muestra el mensaje al usuario.

Formato del módulo

CellBroadcastService y app de CellBroadcastReceiver se incluyen en un único archivo APEX (com.android.cellbroadcast), que está disponible para los dispositivos que ejecutan Android 11 o una versión posterior El módulo incluye código en package/app/CellBroadcastReceiver y migra las clases del framework existentes a packages/modules/CellBroadcastService

Dependencias del módulo

El módulo CellBroadcast interactúa con el framework solo mediante el uso estable @SystemApi (sin APIs de @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

Puedes personalizar la configuración con superposiciones de recursos en el entorno de ejecución (RRO).

Configuración de permisos

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

La plataforma otorga al entorno de ejecución android.permission.READ_CELL_BROADCASTS permiso a la app de SMS predeterminada del sistema para acceder al historial de emergencias alertas.

Integrar el módulo CellBroadcast

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

Cómo realizar la integración con Configuración

Puedes decidir dónde integrar la configuración de CellBroadcast en la aplicación de 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). Cómo lanzar la app CellBroadcastReceiver desde la app de Configuración, cambia lo siguiente estableciendo parámetros de configuración 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>

Cómo realizar la integración con apps de mensajería

Puedes integrar el vínculo de una app en apps de mensajería para abrir CellBroadcast historial de mensajes. En la app de mensajería de Android, esto se integró en Configuración > Avanzado > Alerta de emergencia. Para integrar un vínculo en tu propia app de mensajería, definir la ruta en la app de mensajería y configurar el nombre de componente para el módulo CellBroadcast como com.android.cellbroadcastreceiver/com.android.cellbroadcastreceiver.CellBroadcastListActivity

Cómo realizar la integración con la bandeja de entrada de SMS

Para habilitar la visualización de mensajes de CellBroadcast en la aplicación de mensajería predeterminada, haz lo siguiente: y anula la siguiente configuración con una superposición de recursos en tiempo de ejecución.

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

Como otorgar permisos está fuera del alcance del módulo CellBroadcast, debes otorgar el permiso AppOpsManager.OP_WRITE_SMS a la emisión móvil para brindar asistencia de extremo a extremo. Para una implementación de referencia de AOSP, haz lo siguiente: consulta esta SmsApplication.java parche.

Inicia la app de CellBroadcastReceiver

La app de CellBroadcastReceiver tiene los siguientes puntos de inicio.

  • Menú de la app de Configuración

  • Una app (incluidas las de terceros), como una app de mensajes que vincule a Historial de mensajes de difusión móvil

  • Un ícono de inicio desde la pantalla principal de Android agregado por el OEM (opcional) Para obtener más información, consulta Agrega un ícono de lanzamiento.

Configuración de la app de CellBroadcastReceiver

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

Menú de configuración de la app de CellBroadcastReceiver

Figura 2: Menú de configuración de la app de CellBroadcastReceiver

Historial de alertas de emergencia

Figura 3: Pantalla del historial de alertas de emergencia

Agrega íconos de inicio

Puedes habilitar el acceso al historial de mensajes de CellBroadcast desde el selector de aplicaciones y a través de tus propios iconos de inicio.

  • Para habilitar el acceso al historial de mensajes desde el selector de aplicaciones, anula el la siguiente configuración con una RRO.

    <item type="bool" name="show_message_history_in_launcher" />
    
  • Para anular el ícono predeterminado de AOSP, anula la siguiente configuración con una RRO.

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

Habilitar el código secreto de CMAS

Para habilitar el código secreto del CMAS, *#*#CMAS#*#* (*#*#2627#*#* en el teclado), una app de Teléfono debe escuchar el código especial en forma de *#*#code#*#* y controlar el código con 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 (excepto MTN en Sudáfrica). Para este canal, transmitir mensajes no generan un diálogo ni una notificación. En cambio, transmite mensajes aparecen en el estado de SIM del menú de configuración o en la barra de estado (para (por ejemplo, mostrar un código postal).

La implementación de CellBroadcastService de Android proporciona compatibilidad con la las siguientes APIs en el servicio de emisión móvil para las apps de configuración y SysUI obtener la información del canal 50 de la transmisión. Para implementar esto, haz lo siguiente:

  • Registrar la transmisión android.telephony.action.AREA_INFO_UPDATED y anularla el nombre del paquete del receptor config_area_info_receiver_packages a través de una RRO.

  • Vincular a CellBroadcastService.CELL_BROADCAST_SERVICE_INTERFACE.

Debido a que la configuración y las apps de SysUI están fuera del alcance de CellBroadcast debes implementar los cambios en la IU del sistema o en la app de Configuración para para brindar asistencia de extremo a extremo. Para una implementación de referencia, consulta la Configuración de CellBroadcastService de la app.

Personalización

No puedes modificar directamente el código fuente del módulo CellBroadcast, pero pueden usar superposiciones de recursos de tiempo de ejecución (RRO) a habilitar (o inhabilitar) parámetros (por ejemplo, puedes personalizar el color de las notificaciones y dimensiones en los diálogos). Para anular los valores predeterminados de los parámetros utilizados en el módulo CellBroadcast, cambia el nombre del paquete de destino a com.android.cellbroadcastreceiver A su vez:

  • Para obtener una lista de las configuraciones que se pueden superponer, consulta overlayable.xml

  • Para ver un ejemplo de implementación, consulta RROSampleTestApp en el AOSP.

Si a la implementación le faltan recursos de traducción de cadenas de la IU o si las traducciones no cumplen con tus expectativas, puedes anular la traducción recursos con una RRO o trabajan con el equipo de traducción de Google traducciones de cadenas al módulo CellBroadcast. Si anulas la traducción recursos, Google debe exponer esas cadenas en overlayable.xml para permitir sobre la anulación. Si necesitas más configuraciones para la personalización de la IU, comunícate con el grupo de asistencia de CellBroadcast.

Migrar los datos

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

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

Cómo usar un APK de CellBroadcastContentProvider definido por el OEM

Cuando se define un APK de CellBroadcastContentProvider, el APK debe seguir estos pasos y las especificaciones del servicio.

  • El APK es un APK sin interfaz gráfica que solo muestra el contenido de su base de datos. y SharedPreferences a través de un ContentProvider objeto con la autoridad cellbroadcast-legacy, y no se puede acceder a apps de terceros.

  • El APK es desarrollado por el OEM y es propiedad de él, y el OEM puede continuar alojar su esquema de API oculto.

Para migrar SharedPreferences al módulo CellBroadcast, el elemento El APK de CellBroadcastContentProvider debe admitir la función 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 CellBroadcast módulo. Los datos provienen de SharedPreferences para la ContentProvider.call .

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

  • Autoridad: @SystemAPI CellBroadcast.LEGACY_CONTENT_URI. Columnas de consulta enumera las propiedades de mensaje admitidas para el módulo CellBroadcast. Recibir datos (de tu base de datos) para el método ContentProvider.query.

Para ver una implementación de referencia de CellBroadcastContentProvider,, consulta LegacyCellBroadcastContentProvider

Prueba

El conjunto de pruebas de compatibilidad (CTS) de Android verifica la funcionalidad del APIs del sistema que dependen de la app. También puedes ejecutar el módulo CellBroadcast unit tests/testappsp

Si el OEM habilitó el código secreto del CMAS para un dispositivo, ese El dispositivo puede admitir el modo de depuración con las siguientes funciones.

  • Las alertas de prueba se agrupan en Otras alertas con un botón de activación.

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

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

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

Contacto

Para obtener más información o preguntas acerca del módulo CellBroadcast, comunícate con el Grupo de compatibilidad de CellBroadcast.