Cómo modificar el código fuente de la herramienta aapt de AndroidAgregue la página de inicio, el retorno y el menú a la barra de estado del sistema de la interfaz de Android y complete las funciones correspondientes del sistema. También tiene un efecto de resaltado y puede modificar la altura y el tamaño del texto de la barra de estado. Esto requiere modificar el SDK de Android para completarlo, yo uso eclair. Aquí están mis instrucciones. 1. Primero, complete el efecto de visualización de la interfaz. El archivo ./frameworks/base/services/java/com/android/server/status/StatusBarPolicy.java debe modificarse. Siga el método para agregar íconos como mBatteryIcon y agregue un ícono personalizado. Se debe especificar el nombre de la imagen. Recuerde modificar ./frameworks/base/core/res/values/arrays.xml, que define la ranura de los iconos y determina el orden en que se colocan los iconos. De esta manera, el botón icono que necesita se podrá mostrar en la barra de estado del sistema. 2. Determine si un evento táctil presionó un ícono. /frameworks/base/services/java/com/android/server/status/StatusBarView.java Primero, obtenga las coordenadas del evento actual en la función onTouchEvent y luego compare si está dentro del rango de un botón. Dado que el sistema ya ha definido el rango de statusBar, aquí solo necesitamos comparar las coordenadas horizontales. En segundo lugar, y el paso más crítico, ¿cómo obtener las coordenadas de los límites izquierdo y derecho de un ícono específico? Los íconos que se muestran en el lado izquierdo de la barra de estado del sistema son notificaciones y los íconos que se muestran en el lado derecho son íconos del sistema. En otras palabras, el ícono de la izquierda pertenece a mNotificationIcons y el ícono de la derecha pertenece a mStatusIcons. Offset = getViewOffset(mStatusIcons) aparece en el archivo StatusBarView.java para obtener las coordenadas horizontales del icono más a la izquierda de mStatusIcons. Utilice N = mStatusIcons.getChildCount() para obtener *** íconos del sistema, incluidos íconos con visibilidad falsa. Utilice mStatusIcons.getChildAt(N-i) para obtener la vista del icono, es decir, el icono i-ésimo desde la derecha. En este ejemplo, el botón Inicio es el segundo icono desde la derecha. 3. Defina el evento de respuesta del icono. El método utilizado aquí es agregar el evento de respuesta del icono a StatusBarView.java en ./frameworks/base/services/java/com/android/server/status/StatusBarPolicy.java para agregar la respuesta del icono. evento Envíe una transmisión a StatusBarPolicy para completar operaciones de eventos específicas. Cabe señalar que no solo la intención debe definirse en ./frameworks/base/core/java/android/content/Intent.java, sino que también se debe agregar la operación de filtrado de la intención en el constructor StatusBarPolicy, es decir, filter.addAction(Intent.ACTION_BACKICON_CHANGED). Por ejemplo, si se presiona la tecla de retorno, si el evento actual es action_up, se enviará un keyEvent al sistema con el keyCode KeyEvent.KEYCODE_BACK. Esto está tomado de .KEYCODE_BACK.
Aquí tomamos prestada la función sendKeyEvent en /frameworks/base/cmds/input/src/com/android/commands/input/Input.java, la copiamos directamente y modificamos los parámetros formales según sea necesario. El proceso no debe modificarse. Cabe señalar que cuando hace clic en la barra de estado (statusBar), puede abrir una lista de notificaciones. Cuando se muestra esta lista, la velocidad de respuesta de las tres teclas de retorno, menú y página de inicio será muy lenta. No ocultarlos en respuesta a los acontecimientos en este momento. Tres claves. El método específico es determinar si mService.mExpanded o mService.mTracking es verdadero en onTouchEvent () de StatusBarView y luego no responder. mService es un objeto StatusBarService. Ocultar las tres claves también se realiza mediante transmisión, pero la intención se envía desde StatusBarServie para mostrar cuando mExpandedVisible = false y ocultar cuando mExpandedVisible = true. La operación de resaltado de imagen también se completa aquí al mismo tiempo, que también se realiza mediante Broadcast. El proceso es el mismo, pero es necesario distinguir entre action_down y action_up. 4. Ajuste la altura de la barra de estado Si necesita mostrar un tamaño de pantalla más grande, la altura de la barra de estado también debe ampliarse y el tamaño de los iconos de arriba también debe ajustarse. Para la coordinación, también es necesario ajustar las fuentes utilizadas para mostrar la hora y la fuente utilizada para notificar la fecha. El método específico es el siguiente: a. Ajustar el tamaño del icono de la barra de estado: solo ajustar la etiqueta status_bar.xml textSize no parece funcionar, y también modificar el t.setTextSize(32) de ./base/services/java. /com/android/server/status/StatusBarIcon.java); la declaración puede tener éxito. No sé si es necesario modificar el valor de layout_height bajo la etiqueta lt;com.android.server.status.AnimatedImageViewgt; de status_bar.xml, los cambié todos. b. Ajustar la altura de la barra de estado: ./base/core/res/res/values/dimens.xml ¡Me costó encontrarlo! No sé si hay que modificarlo. El valor de windowTitleSize en las propiedades de la ventana de /base/core/res/res/values/themes.xml, lo cambié de todos modos. Ajuste el tamaño de fuente de la fecha de visualización de la notificación y modifique el valor de textSize en status_bar.xml. Está hecho aquí, veamos el efecto.