¿Cómo implementar la reproducción de audio en línea de estaciones de radio mms en navegadores ios y Android de teléfonos móviles?
Desde una perspectiva de implementación, se divide en capa de visualización de GUI, envío/recepción, análisis de MMS, archivos adjuntos de MMS, datos de mensajes, etc. Estas clasificaciones corresponden a varios paquetes en el código fuente.
Navegación del código fuente
El código fuente de MMS se encuentra en android/packages/apps/Mms
Mms/src/com/android/mms contiene información relacionado con MMS El código, Mms/src/org/w3c/dom contiene una biblioteca de clases para analizar y mostrar el formato MMS. A continuación discutiremos los usos principales de algunos paquetes y clases en Mms/src/com/android/mms.
ui --- Capa de visualización GUI, utilizada para mostrar la lista de conversaciones, la lista de mensajes, la página de edición de mensajes, la edición de archivos adjuntos MMS, la visualización de MMS y la presentación de diapositivas. Responsable de la interacción directa con los usuarios. ConversationListAdapter.java --- El adaptador ConversationList se utiliza para vincular datos a la capa de visualización ConversationList. ConversationListItemData.java --- Una estructura de datos que representa cada elemento en ConversationList y contiene la información que se mostrará en ConversationList. ConversationList.java ------ Esta es la ventana de visualización Actividad de la lista de conversaciones, es una ListActivity, estas son las clases relacionadas con la lista de conversaciones, que se utilizan para mostrar, editar y administrar todas las conversaciones. ComposeMessageActivity.java---- es la actividad de la ventana principal que se utiliza para editar mensajes y mostrar todas las transacciones en el hilo de conversación. MessageListView se agregará en la parte superior y AttachmentEditor se agregará en la parte superior. Esta Actividad también es responsable de responder a aplicaciones externas y enviar Intentos de solicitud SENDTO o SEND. Si la aplicación externa quiere enviar mensajes, etc., esta Actividad responderá. MessageItem.java: datos abstractos que representan un mensaje, que contienen todo lo relacionado con el mensaje, como el asunto del mensaje, el contenido del mensaje, la dirección del mensaje entrante, el contenido del archivo adjunto, etc. Todos sus datos son internos al público *** y se puede acceder a ellos directamente. MessageListAdapter.java: se utiliza para vincular datos a la capa de visualización de la lista de mensajes (creada por ComposeMessageActivity, vinculada a MessageListView). MessageListView.java: se utiliza para mostrar la lista de mensajes, heredada de ListView, su ciclo de vida está controlado por ComposeMessageActivity y si se muestra también lo controla. MessageListItem.java: es el diseño utilizado para mostrar y controlar la visualización de cada mensaje en la lista de mensajes. AttachmentTypeSelectorAdapter.java: lista de archivos adjuntos admitidos para agregar archivos adjuntos, es un menú. AttachmentEditor.java--- se utiliza para mostrar los archivos adjuntos agregados al editar mensajes MMS. Su ciclo de vida está controlado por ComposeMessageActivity. Si se muestra, también está controlado por ComposeMessageActivity. Cuando hay un archivo adjunto MMS, se mostrará.
Es un administrador de diseño que administra los siguientes cuatro diseños y muestra dinámicamente una de las siguientes cuatro vistas según el tipo de archivo adjunto. AudioAttachmentView.java: se utiliza para mostrar archivos adjuntos de audio en Edit Messenger, hereda de Linear Layout. No se usa directamente en el código, pero se usa en archivos de diseño como administrador de diseño. ImageAttachmentView.java: se utiliza para mostrar archivos adjuntos de imágenes en Edit Messenger, se hereda de Linear Layout. No se usa directamente en el código, pero se usa en archivos de diseño como administrador de diseño. SlideshowAttachmentView.java: se utiliza para mostrar archivos adjuntos de diapositivas en Edit Messenger, hereda de Linear Layout. No se usa directamente en el código, pero se usa en archivos de diseño como administrador de diseño. VideoAttachmentView.java: se utiliza para mostrar archivos adjuntos de vídeo en Edit Messenger, se hereda de Linear Layout. No se usa directamente en el código, pero se usa en archivos de diseño como administrador de diseño. SlideshowActivity.java: se utiliza para reproducir diapositivas en pantalla completa, es decir, presentación de diapositivas, porque los mensajes MMS se crean y reproducen en forma de diapositivas, es decir, se reproducen una por una, con texto, imágenes, video y audio en cada diapositiva, cada diapositiva en cada segmento. tiene una duración de visualización. SlideshowEditActivity.java --- Administrar diapositivas en forma de lista, es decir, mostrar todas las diapositivas en la lista. Los usuarios pueden agregar una diapositiva o hacer clic para editar una diapositiva para crear y editar diapositivas. SlideshowEditor.java --- Se utiliza para editar diapositivas, como agregar elementos, eliminar elementos y reemplazar elementos, donde los elementos pueden ser imágenes, videos, audio y texto. También se puede utilizar para editar la diapositiva completa, como eliminar una diapositiva, ajustar la posición de la página en todas las diapositivas, etc. Es un contenedor para una diapositiva específica creada por SlideEditorActivity y utilizada para completar la edición de diapositivas. SlideshowPresenter.java: se utiliza para mostrar todas las diapositivas, es decir, reproducir todas las diapositivas. Creado y utilizado por SlideshowActivity. SlideViewInterface.java: define la interfaz para mostrar contenido en una diapositiva de una sola página, como configurar imágenes, configurar videos, configurar audio, reproducir video, reproducir audio, pausar, posicionamiento aleatorio, etc. Vistas de visualización de archivos adjuntos: AudioAttachmentView, ImageAttachmentView, SlideshowAttachmentView y VideoAttachmentView implementan esta interfaz, por lo que AttachmentEditor puede usar una interfaz unificada para controlar la reproducción de contenido sin preocuparse por cuál es el contenido. SlideEditorActivity.java: se utiliza para editar una diapositiva, como agregar audio, agregar video, agregar imágenes, agregar texto, etc. Simplemente proporciona una interfaz de usuario que permite a los usuarios operar varios botones para agregar elementos, reemplazar elementos o eliminar elementos. Las operaciones de diapositivas específicas se completan a través de SlideshowEditor, que es el principal responsable de interactuar con los usuarios. SlideListItemView.java: se utiliza para la gestión del diseño de cada elemento de la lista en SlideshowEditActivity, heredado de LinearLayout. Dado que el contenido de MMS no es fijo y pueden ser imágenes, audios, vídeos o diapositivas, esta clase se utiliza para procesar y mostrar miniaturas de MMS. MessagingPreferenceActivity.java: editor de información de configuración de Mms, utilizado para editar y cambiar la información de configuración, heredado de PreferenceActivity. Se encarga de interactuar con el usuario, mostrar y cambiar configuraciones.
Al inicio, MmsConfig lee la información de configuración de SharedPreference. En tiempo de ejecución, otras clases obtienen información de configuración de MmsConfig, que proporciona una gran cantidad de métodos de obtención para recuperar información de configuración. Presenter.java: clase abstracta para presentar archivos adjuntos. PresenterFactory.java: métodos de fábrica. RecipientsAdapter.java RecipientsEditor.java: se utiliza para mostrar el cuadro de edición del destinatario en la parte superior de la página de edición del mensaje. El cuadro de edición se puede completar automáticamente. Los datos completos los proporciona RecipientsAdapter. ViewInterface.java --- Representa la clase base Ver, que se utiliza para mostrar contenido mediante diapositivas o capturar miniaturas. Establece la altura y el ancho de la Vista. BasicSlideEditorView.java --- El diseño utilizado al editar una diapositiva específica, también utilizado en SlideEditorActivity.java. EditSlideDurationActivity.java: como sugiere el nombre, se utiliza para editar la duración de la vista de diapositivas de una página específica. ManageSimMessages.java: se utiliza en la configuración para administrar mensajes en SIM. Hay un elemento en Configuración para administrar la información en la parte superior de la tarjeta SIM. La opción "MMS" en Configuración puede establecer si el mensaje se almacena en la tarjeta SIM o en el teléfono. Al recibir un mensaje, SmsReceiverService verificará esta configuración y escribirá el mensaje recibido en la dirección correspondiente. ManageSimMessages también se mostrará en la lista. Información de la tarjeta SIM y proporciona dos menús: ManageSimMessages también muestra información de la tarjeta SIM en la lista y proporciona dos menús: Guardar mensaje en el teléfono y Eliminar NumberPickerButton.java --- Se usa para mostrar el botón para seleccionar un número. Este botón se usa en la configuración. . NumberPickerDialog.java --- Se usa para mostrar el cuadro de diálogo para seleccionar números. NumberPicker.java - Se usa para seleccionar números durante la configuración DeliveryReportActivity.java - Mostrar en forma de lista. Adaptador correspondiente DeliveryReportItem.java --- Datos correspondientes para cada elemento DeliveryReportListItem.java --- Diseño correspondiente para cada elemento
Datos: se utiliza para operar datos relacionados con la información que se está editando actualmente (como la lista de contactos). , conversación actual, mensaje actual). Responsable de administrar el mensaje que se está editando actualmente y la conversación actual, así como los contactos utilizados por el mensaje actual. Las clases se utilizan al editar información, y dado que la mayoría de ellas se utilizan para administrar datos que. no se pueden pasar directamente al editor como objetos, muchos de sus métodos son estáticos, lo que significa que estas clases son casi una sola clave: WorkingMessage.java: se utiliza para administrar el mensaje que se está editando actualmente, existe desde la creación, el borrador hasta el envío. Se crea un WorkingMessage cada vez que se abre una página que contiene un mensaje editado hasta que se cierra la página de edición. Conversation.java: se usa para administrar hilos de conversación, generalmente se usa para administrar la sesión actual, es decir, las sesiones entrantes y las sesiones en curso. También se utiliza para administrar la lista de sesiones, como consultar la lista de sesiones.
Contact.java --- se utiliza para representar información de contacto, administrar contactos y cargar información de contacto. También hay un caché correspondiente. Porque los datos de un contacto incluyen principalmente nombre, apellido, varios números de teléfono, varias direcciones, etc. Dado que Mms utiliza contactos directamente como contactos, toda la información se obtiene directamente de los contactos. Además, dado que la interacción de información también involucrará a los contactos, debido a que se puede usar una serie de números de teléfono directamente al enviar y recibir correos electrónicos, existe la necesidad de funciones como agregar contactos. Los contactos tienen muchas operaciones asincrónicas, como cargar información de contacto o actualizar la caché, que requieren operaciones asincrónicas para evitar bloquear a la persona que llama. ContactList.java: es una lista de contactos, heredada de ArrayListlt;Contactgt;. Se utiliza para administrar listas de contactos o administrar múltiples contactos. Dado que cada mensaje se puede enviar a varios contactos, es necesario utilizar una Lista de contactos para administrar estos destinatarios. Además, proporciona algunos métodos convenientes para almacenar y pasar contactos, como convertir múltiples contactos en cadenas o en una matriz de cadenas. RecipientIdCache.java: se utiliza para almacenar el ID y la dirección (número de teléfono) de un contacto. Cada vez que WorkingMessage actualiza este caché, ContactList prioriza los contactos en el caché.
ddom--Un conjunto de herramientas para analizar contenido MMS
drm--Un conjunto de herramientas para procesar archivos multimedia DRM
diseño--Para cumplir con elementos de diseño específicos reescritos según al modelo de requisitos
: define la estructura de datos adjuntos y el método de organización admitido por MMS. .Los contenidos que se pueden incluir en los mensajes MMS incluyen imágenes, vídeo, audio y texto. Estos pueden existir individualmente o combinados. Si se combinan, se convierte en una presentación de diapositivas. Los usuarios pueden crear archivos adjuntos que contengan una variedad de medios, gráficos y texto en sus diapositivas. Se pueden agregar videos, audio, imágenes y texto en la parte superior de cada diapositiva, pero generalmente solo se permite agregar una imagen o video en la parte superior de una diapositiva. Se puede agregar texto a todas las diapositivas y solo se puede agregar audio. sin vídeo. Mientras juegas, puedes establecer la duración de cada diapositiva, la velocidad de desplazamiento del texto y más. CarrierContentRestriction.java --- es un punto de control de archivos adjuntos MMS específico. Para archivos adjuntos no admitidos, o el tamaño del archivo adjunto excede el límite, o la resolución de la imagen es incorrecta, o la imagen excede el tamaño, se generarán excepciones: UnsupportedContentTypeException, ResolutionException, ExceedException. Excepción de tipo de contenido no compatible, excepción de tipo de contenido no compatible. ContentRestriction.java es una interfaz para verificar archivos adjuntos, que puede ser utilizada directamente por el mundo exterior. La implementación específica es CarrierContentRestrictionFactory.java es un método de fábrica para crear comprobaciones de archivos adjuntos. Esta fábrica se utiliza para crear un objeto ContentRestriction externamente y luego realizar comprobaciones internas de los archivos adjuntos utilizando los métodos de verificación definidos en él. SmilHelper.java es una clase de herramienta para analizar y procesar Smil en archivos adjuntos. La interfaz IModelChangedObserver.java se utiliza para monitorear los cambios en el contenido de los archivos adjuntos.
Model.java: la forma en que se organizan y administran los datos adjuntos de MMS es que cada archivo adjunto es una subclase de Model. No solo se utiliza para administrar los datos específicos del archivo adjunto, como Uri, tamaño, nombre de archivo, ubicación, etc. , pero también se puede utilizar en la GUI Mostrar archivos adjuntos y ver archivos adjuntos. LayoutModel.java: clase heredada del modelo que gestiona el diseño de los archivos adjuntos visuales. Se utiliza para gestionar elementos básicos como RegionModel. Se utiliza como ViewGroup o LinearLayout, RelativeLayout y algunos otros administradores de diseño para organizar y administrar diseños que son elementos básicos de las subclases RegionModel ImageModel, TextModel y VideoModel. En particular, se utiliza para controlar la posición de los accesorios visuales cuando se muestran en la pantalla. RegionModel representa una región en una diapositiva y es el elemento básico del diseño de la diapositiva. RegionMediaModel.java --- Heredado de MediaModel, utilizado para el control de diseño de la parte visual de los archivos adjuntos multimedia, utilizado principalmente para mostrar y controlar los archivos adjuntos al reproducir diapositivas. Sus subclases son ImageModel, TextModel y VideoModel. MediaModel.java --- Heredado de Model, representa la estructura de datos de los medios, administra datos adjuntos específicos y también se utiliza para administrar el control de visualización de archivos adjuntos, como visualización de imágenes, control de reproducción de audio y video. MediaModelFactory.java: se utiliza para analizar MediaModel a partir de archivos adjuntos de Pdu, es decir, convertir Pdu en datos adjuntos en Mms. ImageModel.java: heredado de RegionMediaModel, se utiliza para administrar archivos adjuntos de imágenes y controlar la visualización de archivos adjuntos de imágenes. VideoModel.java: heredado de RegionMediaModel, se utiliza para administrar archivos adjuntos de video y controlar la reproducción de archivos adjuntos de video. AudioModel.java---- Heredado de MediaModel, utilizado para administrar archivos adjuntos de audio y controlar la reproducción de archivos adjuntos de audio SlideModel.java---- Heredado de Model, utilizado para administrar un conjunto de archivos adjuntos que se muestran al usuario al mismo tiempo. Al igual que las partes de una diapositiva, cada SlideModel tiene una lista de modelos que se pueden almacenar en él, y estos modelos pueden contener texto, audio, imágenes o video, y los archivos adjuntos se mostrarán encima de estos archivos adjuntos al mismo tiempo. SlideshowModel.java: heredado de Model, utilizado para administrar todos los archivos adjuntos en mensajes MMS. Contiene una lista de SlideModels utilizados para guardar y controlar todos los archivos adjuntos en mensajes MMS. Además, se encarga de mostrar estos archivos adjuntos, organizar uno a uno los modelos de diapositivas y reproducirlos. También es responsable de convertir estos archivos adjuntos de formularios MMS (varios modelos) en Pdu adjuntos de Android y mostrar los modelos correspondientes de Pdu, porque Slideshow es un controlador de MMS a nivel de aplicación y los datos MMS que se pueden enviar y recibir son Pdu. java --- Heredado de RegionMediaModel, utilizado para administrar archivos adjuntos de texto y controlar la visualización de archivos adjuntos de texto, como el desplazamiento por tiempo
util --- Esta es una clase de herramienta que disfrutan todos los Mms *** *, Estas son clases de clave única o utilizadas directamente. Puede usar objetos sin crear objetos. AddressUtils.java --- Clase de utilidad sobre direcciones. Actualmente, Pdu puede enviar y recibir datos MMS. -- Clase de herramienta para direcciones Actualmente, solo se utiliza un método getFrom() para obtener la dirección del remitente.
DraftCache.java: se utiliza para identificar qué subprocesos de sesión tienen borradores y cuáles no, es decir, para administrar y consultar el estado del borrador de la sesión (borrador o no). Mantiene un HashSet que contiene todos los ID de subprocesos que contienen borradores. También tiene un HashSet que almacena OnDraftChangedListener, lo que significa que cuando cambia el estado del borrador del subproceso, DraftCache llamará al oyente correspondiente para notificar al diálogo del módulo correspondiente. cambió. Puede establecer el estado del borrador de una conversación a través de DraftCache.setDraftState(threadId, state; puede consultar si una conversación contiene un borrador a través de DraftCache.hasDraft(threadId); Recycler.java: es una clase de utilidad abstracta que define SmsRecycler y MmsRecycler para eliminar mensajes caducados o mensajes que exceden el límite de cantidad de mensajes. El uso es Recycler.getSmsRecycler.deleteOldMessages(context) o Recycler.getMmsRecycler.deleteOldMessages(context) SmileyParser.java- - - Convertir signos de puntuación en emoticones gráficos, como reemplazarlos con caritas sonrientes icónicas DownloadManager.java - ¿No lo estás? Engañado por él Como su nombre confunde, en realidad no es un administrador de descargas, ya que no es responsable de ningún trabajo relacionado con la descarga de archivos o la administración de archivos descargados. Es responsable de administrar la información de configuración relacionada con la descarga, como si se debe descargar automáticamente, y varias notificaciones durante el proceso de descarga, como barras de notificaciones y alertas de Toast. RateController.java SendingProgressTokenManager.java
transacción --- Es el paquete de nivel más bajo para Mms y no puede ser visto por los usuarios. Es responsable del procesamiento final del envío de información y del procesamiento inicial de la recepción de información. . Es el principal responsable de enviar y recibir información. Realmente no envía ni recibe información. Es el marco del sistema el responsable de recibir y enviar información. Este paquete solo se utiliza para enviar y recibir la capa de aplicación Mms. AbstractRetryScheme.java DefaultRetryScheme.java Estas dos clases implementan un mecanismo de reintento, porque el envío y la recepción de información está limitado por el entorno, como si no hay señal en el teléfono móvil o la conexión de red no tiene éxito. Las dos clases aquí están diseñadas para implementar este mecanismo de reintento. HttpUtils.java: la implementación de nivel más bajo de envío y recepción de MMSC, que es responsable de recibir y enviar MMSC al centro de servicio MMSC MMSC utilizando el protocolo HTTP. MessageSender.java: como sugiere el nombre, es una interfaz que encapsula el envío de mensajes. Tiene un solo método, sendMessage(). La capa de interfaz de usuario solo necesita llamar a la clase que implementa esta interfaz para enviar mensajes. MessagingNotification.java: es específicamente responsable de enviar notificaciones en la parte superior de la barra de estado, como mensajes nuevos recibidos, errores de envío o de recepción, etc. Lo utilizan la capa de interfaz de usuario y la capa inferior. Lo utilizan la capa de interfaz de usuario y la capa lógica subyacente. MmsMessageSender.java: heredado de MessageSender, utilizado específicamente para enviar mensajes MMS. No envía, pero realiza algunos trabajos de preparación y verificación de errores, y luego inicia TransactionService para realizar el trabajo relacionado con el envío.
NotificationTransaction.java: heredado de Transaction, responsable de recibir MMS y notificaciones de actualización (Notificación). Cuando hay un nuevo MMS, Frameworks primero enviará un mensaje de texto llamado NotificationIndication, que contiene información sobre el MMS (centro MMS, ubicación del contenido MMS (URL), etc.), y luego la aplicación irá al centro MMS para obtener la ubicación del contenido MMS. Esta NotificationTransaction se utiliza específicamente para manejar notificaciones MMS, obtendrá los datos MMS (Pdu) del centro MMS, los escribirá en la base de datos y luego actualizará la notificación. Tenga en cuenta que solo descargará mensajes MMS si están configurados en "recuperación automática"; de lo contrario, solo procesará la indicación de notificación MMS y no descargará los mensajes MMS. Observable.java-Inside define el objeto de observación, Transaction es su subclase y otras transacciones de entidad son objetos de observación. Hay una lista para guardar la referencia del observador. Cuando se completa la transacción o se produce una excepción, llamará a notifyObservers (). método para notificar el estado de Observador. Observer.java: Observer, TransactionService implementa esta interfaz. Es un observador de todas las transacciones y es responsable de monitorear el estado y los resultados de la transacción. Dado que todas las transacciones son asincrónicas, el patrón de observador se utiliza para notificar los resultados de la transacción. PrivilegedSmsReceiver.java: hereda del detector de eventos SmsReceiver utilizado para recibir mensajes de texto y es responsable de escuchar nuevos eventos de mensajes de texto android.provider.Telephony.Intents.ACTION("android.provider.Telephony.Intents.ACTION").ACTION( "android.provider.Telephony.SMS_RECEIVED"); cuando se recibe el Intent, significa que hay un nuevo mensaje de texto. Invocará a SmsReceiverServier para manejar mensajes SMS. ProgressCallbackEntity.java PushReceiver.java-A BroadcastReceiver está dedicado a recibir eventos MMS android.provider.Telephony.RECEIVED_ACTION.JAVA Si usa RECEIVED_ACTION("android.provider.Telephony.WAP_PUSH_RECEIVED"), primero realizará un procesamiento previo y luego iniciará el Servicio de transacciones. TransactionService crea una NotificationTransaction para manejar esta notificación MMS. ReadRecTransaction.java RetrieveTransaction.java: heredado de Transaction, se utiliza para recuperar activamente datos MMS. Cuando MMS está configurado para recuperación no automática, el usuario debe activarlo para obtenerlo. TransactionService creará un RetrieveTransaction para obtener datos MMS (Pdu), almacenarlos en la base de datos, actualizar notificaciones, etc. RetryScheduler.java SendTransaction.java: heredado de Transaction, utilizado para enviar datos MMS.
SimFullReceiver.java SmsMessageSender.java: contenedor para enviar SMS, heredado de MessageSender. Iniciará SmsReceiverService para enviar. SmsReceiver.java- es un BroadcastReceiver, no te asustes por su nombre, no se encarga de recibir notificaciones de nuevos mensajes de texto, pero se usa para enviar mensajes de texto, recibir solicitudes para enviar mensajes de texto y llamar a SmsReceiverService para manejar el envío. . Esto puede deberse a las reglas de nomenclatura de Android. A los cuatro componentes principales de Android les gusta agregar los nombres de sus propios componentes. Por ejemplo, ComposeMessageActivity es una actividad, TransactionService es un servicio y SmsReceiver aquí es un BroadcastReceiver, que no tiene nada que ver. ver con la recepción de SMS (recibir mensajes de texto). Por supuesto, este es un nombre completamente inapropiado. SmsReceiverService.java: este es un servicio que maneja específicamente la mensajería SMS. Lo inician SmsReceiver y PrivilegedSmsReceiver y no escucha los eventos de Intent. SmsRejectedReceiver.java SmsSingleRecipientSender.java: heredado de SmsMessageSender, llama a la interfaz de la capa de marco para enviar mensajes a un destinatario. Para la aplicación Mms, esta es la última parada para enviar mensajes de texto, lo que significa que para la aplicación, envía los mensajes de texto. TransactionBundle.java: la estructura de datos utilizada por Transaction para enviar datos a Transaction. Transaction.java: la clase base para varias transacciones, que define dos métodos getPdu() y sendPdu(). Estos dos métodos se utilizan para obtener datos MMS de MMSC y enviar datos a MMSC respectivamente. Es un contenedor de HttpUtils. TransactionService.java: es un servicio que recibe varias solicitudes de transacciones y procesa transacciones. Cada transacción abre un nuevo hilo para el procesamiento asincrónico, por lo que cuando se complete el procesamiento, notificará a TransactionService a través de un observador. Estos datos pueden ser facilitados por el solicitante. La parte solicitante puede proporcionar estos datos y, si se proporcionan, estos datos se utilizan; de lo contrario, los datos predeterminados se cargan desde la base de datos del teléfono, que están relacionados con la configuración del operador y APN. TransactionState.java: una estructura de datos utilizada para identificar el estado de cada transacción. Es muy simple. Simplemente marque el éxito o el fracaso del procesamiento para que lo utilice el observador de devolución de llamada de la transacción (TransactionService).
Hay muchos archivos en el directorio raíz com/android/mms, la mayoría de los cuales son excepciones de clase base definidas y algunas clases de **** públicas. MmsApp.java: la aplicación Mms realiza algunas inicializaciones necesarias cuando se inicia el proceso de solicitud, como configuración, descargas, contactos, conversaciones, analizador de emoticones y notificaciones. MmsConfig.java: gestiona algunas configuraciones comunes de MMS, como el tamaño máximo de MMS, el tamaño máximo de imagen de MMS, el número máximo de destinatarios, etc. Esta información de configuración se guarda en res/xml/mms_config.xml.
MmsApp llamará a MmsConfig.init() durante el proceso de inicialización, donde se llamará a loadMmsSettings para analizar mms_config.xml y obtener la información de configuración requerida. Otros módulos solo pueden acceder a esta información de configuración a través de MmsConfig. LogTag.java: controla la información de seguimiento de registros. Es muy conveniente controlar el nivel de salida del registro. Pero, de hecho, este LogTag no es muy útil en todo el código Mms.