Red de conocimiento informático - Computadora portátil - Cómo modificar el código fuente de Android

Cómo modificar el código fuente de Android

Agregue 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 y usarlo con eclair. Las operaciones específicas son las siguientes.

1. Primero, complete el efecto de visualización de la interfaz.

El archivo necesita ser modificado

. /frameworks/base/services/java/com/android/server/status/StatusBarPolicy.java, siga el método para agregar un ícono personalizado como mBatteryIcon y especifique 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 el que se colocan los iconos.

De esta forma, el botón icono que necesitas podrá visualizarse en la barra de estado del sistema.

2.Determinar si un evento táctil presionó un icono

Archivos a modificar

./frameworks/base/services/java/com/android/server/ status/StatusBarView.java

Primero, en la función onTouchEvent, obtendremos las coordenadas del evento actual y luego compararemos si está dentro del rango de un botón. Dado que el sistema ya ha definido el alcance de la barra de estado, aquí solo necesita comparar las coordenadas horizontales.

En segundo lugar, este es también el paso más crítico. ¿Cómo obtener las coordenadas de los límites izquierdo y derecho de un icono 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. En el archivo StatusBarView.java, en apariencia offset = getViewOffset(mStatusIcons), obtiene la coordenada horizontal del icono más a la izquierda de mStatusIcons. Utilice N = mStatusIcons.getChildCount() para obtener *** cuántos iconos del sistema hay, incluidos los iconos con visibilidad falsa. mStatusIcons.getChildAt(N-i) para obtener la vista del icono, es decir, el i-ésimo icono desde la derecha. El desplazamiento getLeft()+de la vista de esta vista es la coordenada horizontal izquierda del icono, y el desplazamiento getRight()+correspondiente es la coordenada horizontal derecha del icono. En este caso, el botón Inicio es el segundo icono desde la derecha.

3. Definir eventos de respuesta de ícono

El método utilizado aquí es agregar el evento de respuesta de ícono a StatusBarView.java en

. /frameworks/base/services/java/com/android/server/status/StatusBarPolicy.java Envía 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 se copia directamente de la función sendKeyEvent en ./frameworks/base/cmds/input/src/com/android/commands/input/Input.java. Simplemente modifique el formulario del parámetro ligeramente según sea necesario.

Cabe señalar que al hacer clic en la barra de estado, puede abrir una lista de notificaciones. Cuando se muestra la lista, la velocidad de respuesta de los tres botones de retorno, menú y página de inicio será muy lenta. Para que no respondan a los eventos en este momento, oculte estos tres botones. 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. La ocultación de estas tres claves también se realiza mediante transmisión, pero la intención se envía desde StatusBarServie, mostrándose cuando mExpandedVisible = false y ocultándose cuando mExpandedVisible = true.

La acción de cambio de resaltado también se completa aquí, que también se realiza mediante Transmisión. El proceso es el mismo, pero debe distinguir entre action_down y action_up.

4. Ajusta la altura de la barra de estado

Si necesitas mostrar un tamaño de pantalla más grande y ampliar la altura de la barra de estado, también necesitas ajustar el tamaño de la barra de estado. icono encima de él. Para coordinar, la fuente de la visualización de la hora y la fuente de la fecha mostrada en la notificación también deben ajustarse a un tamaño mayor. Los métodos específicos son los siguientes:

a. Ajustar el tamaño del ícono de la barra de estado: solo ajustar la etiqueta status_bar.xml textSize no parece funcionar y modificar ./base/services/java/com. /android/server/status/StatusBarIcon al mismo tiempo.java t.setTextSize(32); No sabía si era necesario cambiar el valor de layout_height bajo la etiqueta en status_bar.xml, pero lo cambiamos de todos modos.

b. Ajustar la altura de la barra de estado: ./base/core/res/res/values/dimens.xml ¡Me costó encontrarlo! No sé si necesito cambiarlo. /base/core/res/res/values/themes.xml El valor de la propiedad de la ventana windowTitleSize debe cambiarse de todos modos.

c. Ajuste el tamaño de la fuente de la fecha de visualización de la notificación y modifique el valor textSize de en status_bar.xml.

Hasta ahora, todo el trabajo se ha completado, vea el efecto