Cómo programar en el teléfono móvil
1 Introducción Con el desarrollo de la tecnología de las comunicaciones y la popularización de los teléfonos móviles, las personas agregan constantemente nuevas funciones a los teléfonos móviles. Entre ellas, los teléfonos móviles pueden realizar funciones que generalmente solo están disponibles en las PC: descargar varias. programas Y el funcionamiento es una dirección importante para el desarrollo de los teléfonos móviles en la actualidad. Para ello se han propuesto diversas soluciones, entre las que sin duda la solución J2ME basada en JAVA es la más llamativa. Debido a sus funciones de red sólidas, abiertas e independientes de la plataforma, su orientación a objetos, su seguridad y otras características, el lenguaje JAVA se ha vuelto popular en todo el mundo con el desarrollo de Internet tan pronto como fue propuesto por SUN Company. convertirse en un idioma obligatorio para los desarrolladores de software en el extranjero. En particular, su ventaja multiplataforma de "escribir una vez, ejecutar en cualquier lugar" es de importancia aún mayor para el campo de la telefonía móvil. Debido a que actualmente existen muchos tipos de teléfonos móviles y varios fabricantes tienen sus propios estándares, cómo permitirles ejecutar programas del mismo estándar se ha convertido en un problema que debe resolverse. Después de adoptar el lenguaje JAVA, varios teléfonos móviles pueden ejecutar programas JAVA siempre que implementen la máquina virtual JAVA (JVM). Se puede decir que este método es la solución más ideal en las circunstancias actuales. J2ME (JAVA 2 Micro Edition) es JAVA para sistemas integrados. Es un entorno de ejecución de aplicaciones JAVA obtenido por SUN Company después de simplificar al máximo la versión estándar de JAVA J2SE. En el caso más simple, solo ocupa decenas de kB. Adecuado para su uso en teléfonos móviles, PDA y otros dispositivos. Si los fabricantes de teléfonos móviles implementan la especificación J2ME en sus teléfonos móviles, podrán descargar y ejecutar programas JAVA desde Internet, ampliando así enormemente las funciones del teléfono móvil. En vista del gran éxito de JAVA en Internet, tenemos motivos para creer que J2ME puede extender este éxito al campo de los dispositivos portátiles y proporcionar condiciones favorables para la integración de los teléfonos móviles e Internet en el futuro. La aparición de los teléfonos móviles JAVA también ha brindado nuevas oportunidades para la industria del software. Uno de los factores importantes relacionados con su promoción es si se pueden proporcionar suficientes recursos de software para los teléfonos móviles JAVA. Este artículo ofrece una breve introducción a la arquitectura J2ME y utiliza un ejemplo de programa específico para ilustrar las características y el proceso de desarrollo de los programas móviles JAVA. 2 Descripción general de J2ME J2ME es un entorno de ejecución de aplicaciones JAVA nuevo y muy pequeño. La arquitectura que define se utiliza principalmente para promover el uso de la tecnología JAVA en dispositivos portátiles. SUN proporcionará configuraciones adecuadas para dispositivos de diversos tamaños de hardware, incluidas máquinas virtuales, bibliotecas de clases principales y API. Actualmente, J2ME ha personalizado dos configuraciones: CLDC (Configuración de dispositivos limitados conectados) y CDC (Configuración de dispositivos conectados). Entre ellos, CLDC es una configuración proporcionada para dispositivos como teléfonos móviles cuyos recursos de CPU y memoria son mucho menores que los requeridos por JAVA estándar. Se obtiene reduciendo al máximo la versión estándar de JAVA. las bibliotecas tienen muchas a 100kB. Las configuraciones de CDC están destinadas principalmente a dispositivos de próxima generación con más recursos. La configuración CLDC proporciona un entorno para que varios dispositivos portátiles ejecuten programas JAVA, pero aún es difícil para los desarrolladores desarrollar programas en este entorno. En primer lugar, debido a que la biblioteca central CLDC proporciona una API de bajo nivel, no es adecuada para uso directo. uso en la creación de aplicaciones; en segundo lugar, las estructuras del sistema de los dispositivos portátiles varían ampliamente, lo que dificulta garantizar la portabilidad de la interfaz gráfica, la red y otras funciones de la aplicación. Por lo tanto, para mejorar aún más las funciones de J2ME, SUN permite a los proveedores de equipos proporcionar API avanzadas especializadas y métodos de gestión de programas, concretamente PROFILE, para sus propios equipos sobre la base de la implementación de CLDC para simplificar el desarrollo de aplicaciones y hacer que los programas sean más Eficiente. Buena portabilidad.
Al mismo tiempo, SUN también ha trabajado con más de 50 fabricantes de dispositivos móviles y desarrolladores de software de renombre para formular PROFILE--MIDP (Perfil de dispositivo de información móvil) específicamente para teléfonos móviles y otros dispositivos de información móviles, ya que MIDP proporciona una interfaz gráfica para. Por escrito, unifica las especificaciones de los programas de red e implementa métodos de gestión de programas dinámicos y seguros. Por lo tanto, ha recibido el apoyo de los principales fabricantes de teléfonos móviles como Nokia, Motorola y Siemens, y han lanzado teléfonos móviles JAVA basados en MIDP. Similar al APPLET, el programa MIDP también se llama MIDlet. Debe heredar una clase MIDlet específica para que el administrador de MIDlet pueda controlar su funcionamiento. Esta clase contiene tres métodos que los usuarios pueden sobrecargar: startApp, pausaApp y destroyApp, que se llaman cuando el MIDlet entra en estado de ejecución, deja de ejecutarse y sale. La interfaz gráfica del programa MIDP es mucho más simple que la interfaz AWT del JAVA estándar. Se divide en API de bajo nivel y API de alto nivel. La API de gráficos de bajo nivel permite a los desarrolladores controlar más directamente la visualización de la pantalla y la entrada del teclado. Se basa en la clase abstracta Canvas y generalmente se utiliza para escribir programas de juegos. Su portabilidad debe ser garantizada por los propios desarrolladores. La API de gráficos de alto nivel tiene buena portabilidad entre diferentes dispositivos, pero el margen para ajustes por parte de los desarrolladores es, en consecuencia, muy pequeño. Se basa en la clase abstracta Pantalla y tiene cuatro Alerta, Formulario, Lista y Cuadro de texto. subclases específicas, estas cuatro subclases representan cuadro de alerta, formulario, cuadro de lista y cuadro de entrada de texto, respectivamente. Además, la API de alto nivel también proporciona muchos componentes gráficos, incluidos Command, ChoiceGroup, DateFie1d, Gauge, ImageItem, StingItem, TextField, etc., todos los cuales se pueden agregar a A1ert y
Form. Algunos componentes gráficos también proporcionan métodos de procesamiento de eventos y respuestas a eventos similares a AWT. Los programas MIDP generalmente se comprimen en un archivo jar junto con varios archivos de recursos. Al publicar, también necesita un archivo de descripción con la extensión jad, que contiene el nombre, la versión, la ubicación del archivo jar y el tamaño del programa MIDP y otra información. Lo primero a lo que debe acceder un teléfono JAVA es el archivo de descripción, y luego el programa MIDP se instala en el teléfono según la información del archivo de descripción y luego se puede ejecutar. 3 Ejemplo de desarrollo El entorno operativo real del programa MIDP es un teléfono móvil JAVA, pero su desarrollo se realiza en una PC. Por lo tanto, el entorno de desarrollo generalmente proporciona un emulador para probar el programa. Varios fabricantes de teléfonos móviles tienen sus propios entornos de desarrollo y prueba. El programa de ejemplo que se presenta a continuación se depuró en la implementación MIDP de SUN. 3.1 Función del programa Este ejemplo contiene dos programas MIDP. Cuando se ejecuta el primer programa, se requiere que el usuario ingrese un nombre y seleccione un género. Luego, el programa envía un saludo al usuario según el género y la hora actual. Cuando se ejecuta el segundo programa, el usuario selecciona un nombre de imagen y luego muestra la imagen en la pantalla. Estos dos programas MIDP se describen en el mismo archivo de descripción.
3.2 Código fuente del programa y comentarios 3.2.1 El primer programa MIDP (sample.java) importa javax. microedición. midlet. MIDlet; importar javax. microedición. 1cdui. *;importar java. util. *; //Cualquier programa MIDP debe heredar la clase MIDlet para procesar comandos de botón, también debe implementar la interfaz CommandListener public class samplel extends MIDlet implements CommandListener{private TextBox input //Declarar el cuadro de entrada de texto private Form select; // Declarar el formulario, utilizado para colocar varios componentes gráficos Salida de alerta privada // Declarar el cuadro de alerta Comando cfl, cf2, ct, ca; // Declarar varios botones de comando ChoiceGroup sex // Declarar el cuadro de selección Mostrar display=null; // Declarar el objeto de visualización de pantalla public samplel(){input =new TextBox("Ingrese su nombre:", null, 8, TextField.ANY // Cree un cuadro de entrada de texto ct = new Command ("OK", Comando PANTALLA, 1) ; //Crear botón ctinput. addCommand(ct); //Agrega el botón a la entrada del cuadro de entrada de texto. setCommandListener(this); //Establecer clase de procesamiento de eventos del botón select=new Form("Seleccione el género:"); //Crear formulario String[]str={"Male", "Female"}; , ChoiceGroup. EXCLUSIVE, str, null); //Crea un botón de opción, selecciona. append(sex) //Agrega el cuadro de selección único al formulario cfl=new Command("OK", Command.SCREEN, 1 //Crea 2 botones cf1 y cf2cf2=new Command("Back", Command.BACK, 2);seleccionar. addCommand(cf1); //Agrega 2 botones al formulario select. addCommand(cf2);seleccionar. setCommandListener(this) //Establecer clase de procesamiento de eventos del botón output=new Alert("Saludos;", "Hola 1", null, null); //Crear salida del cuadro de alerta. setTimeout(Alert.FOREVER); //Establece el tiempo de espera para siempre ca=new Command("Exit", Command.EXIT, 1); //Crear botón ca output.addCommand(ca); box output.setCommandListener(this); //Establecer clase de procesamiento de eventos del botón} public void startApp() //Este método se llama cuando el MIDlet obtiene derechos de ejecución {if (display==null) display=Display·getDisplay(this); // Obtener el objeto de visualización de pantalla de este MIDlet desde la pantalla del sistema·setCurrent(input); //Mostrar la entrada del cuadro de entrada de texto en la pantalla
}public void pauseApp() {}//Este método esta en esto
public void destroyApp(boolean incondicional) se llama cuando el MIDlet pierde los derechos de ejecución
//Este método se llama cuando el MIDlet sale
{
input=null ; output= null; select=null;
}// El método commandAction es el método de procesamiento de eventos del botón definido en la interfaz CommandListener public void commandAction(Command c, Displayable d){if(c==ct). ) //Si se presiona El botón ct display.setCurrent(select); //Muestra el formulario select en la pantalla if(c==cfl) { //Si se presiona el botón cfl Calendar rightNow = Calendar.getInstance(); /Obtener la hora actual int ti =rightNow.get(Calendar.HOUR_OF_DAY);
//Obtener la hora actual (formato de 24 horas) indx=sex.getSelectedIndex();
//Obtener el número de elemento seleccionado por el usuario en el botón de opción String helo= null; String name=input·getString();//Obtener la cadena ingresada por el usuario en el cuadro de texto//Las siguientes cuatro oraciones construye diferentes valores basados en los valores de ti e indx String heloif(tigt;=12amp;indx==1)helo="Buenos días!" nombre "Señorita";if(tigt;=12amp;indx== 0 helo="Buenos días!" nombre "Sr." if(tilt;12amp;indx==1) helo="Buenas tardes!" nombre "Sra." ¡tarde!" nombre "Mr. ";output.setString(helo); //Agrega la cadena helodisplay·setCurrent(output) en el cuadro de alerta; //Muestra el resultado del cuadro de alerta en la pantalla}if(c==cf2 / /Si se presiona el botón cf2 display. setCurrent(input); //Muestra la entrada del cuadro de entrada de texto en la pantalla if(c==ca) { //A0 Si se presiona el botón ca, llame al método destroyApp para salir de destroyApp. (true); notifyDestroyed(); p>
}}
}3.2.2 El segundo programa MIDP (muestra2. java)importar javax. microedición. midlet. MIDlet; importar javax. microedición. 1cdui. *; muestra de clase pública2 extiende MIDlet implementsCommandListener
{formulario privado; lista de lista privada' //Declarar el cuadro de lista Comando cl=null Display display=null; , "Imagen 2", "Imagen 3"}; muestra pública2(){lista=nueva Lista("Lista de prueba, Elección.EXCLUSIVA, dd, nula); cl=nueva Co
mmand("OK", Command.SCREEN, 1); list.addCommand(cl); list.estCommandListener(this);}
public void startApp(){display=Display·getDisplay(this); display·setCurrent(1ist);}
public void pausaApp() {}public void destroyApp(boolean incondicional){ list=null }public void commandAction(Comando c, Mostrable d)
{ Image aa=null; //Declarar el objeto de imagen aaif(c==cl) { //El usuario presionó el botón cl int i=list·getSelectedIndex() //Obtener el número de elemento seleccionado por el usuario en el cuadro de lista intenta{//Crear un objeto de imagen. El archivo de imagen es tl.png, t2.png o t3.png. Debe comprimirse junto con la clase en el paquete jar aa=Image.createImage("/t". (new Integer(i l) ).toString() ".png");
}catch(Exception e){}Form f=new Form("Test"); //Crear formulario ff.append (aa); // Agregar visualización de imagen·setCurrent(f) al formulario; //Mostrar el formulario en la pantalla} }}
3.2.3 Contenido del archivo de descripción (sample.jad) MIDlet-1 Hola, samplel// Declara el primer programa MIDlet, el nombre para mostrar es Hola, el nombre de la clase es samplelMIDlet-2: Imagen, sample2// Declara el segundo programa MIDlet, el nombre para mostrar es Imagen, el nombre de la clase es sample2MIDlet; -Descripción: aplicación de muestra/ /Descripción de MIDlet MIDlet-Jar-Size: 11640//El número de bytes en el paquete Jar debe modificarse de acuerdo con la situación real: muestra. jar // La ubicación y el nombre del paquete Jar. Cuando se omite la ubicación, significa que está en la misma ubicación que el archivo jad. Nombre del MIDlet: MySamples // El nombre del proveedor del MIDlet: Sun Microsystems. // Nombre del proveedor MIDlet-Version: 1.0 // Proceso de desarrollo de la versión 3.3 de MIDlet (bajo la plataforma WindOWS 2000) (1) Descargue la versión MIDP2.0 (/prOducts/midp) del sitio web de la empresa SUN y extráigala a c:\midp2. 0fcs (2) Desde el sitio web de la empresa SUN Descargue la herramienta de desarrollo de versión estándar JAVA JDKl. 3.1, instalado en c:\jdkl. 3 (3) Cree un directorio de trabajo y guarde los tres archivos anteriores en el directorio (4) Busque otros tres archivos de imagen, conviértalos a formato png y use tl. png,t2. png,t3. El nombre png se almacena en el directorio de trabajo (5). Ingrese al modo MS-DOS, transfiéralo al directorio de trabajo y configure las siguientes variables de entorno: set MIDP_HOME=c:\xmidp2. Ofcsset PATH=c:\jdkl. 3\bin;c:\midp2. Ofcs\binset classpath=c:\midp2. Ofcs\clases
(6) Compilar 2 JA
Archivo VA: javac *.java(7) Utilice el siguiente comando para verificar previamente 2 clases: preverify-d. muestra1preverify-d. sample2(8) empaqueta los archivos relevantes en un paquete: jar-CVf sample. frasco *. pag(9) se ejecuta en el emulador: midp-C1asspath. muestra. muestra de descriptor jar
ple. Después de que jad complete la simulación, puedes poner una muestra. jadd y muestra. jad se coloca en un determinado sitio web y se prueba con el siguiente comando: midp-install http://lt; dirección de red y ruta gt;/sample. jad // Descargar e instalar midp-run 1 // Ejecutar, 1 representa el primer MIDlet instalado Nota: ① El servidor web del sitio web debe configurar el tipo MIME del archivo jadd en texto/Vnd. sol. j2me. app-descriptor, el tipo MIME del archivo jar se establece en applyOn/java-archive ② Si es muestra. jad y muestra. El frasco se coloca en diferentes lugares y luego se toma la muestra. El atributo MIDlet-Jar-URL en jad debe modificarse en consecuencia ③ Puede ingresar el comando midp y luego usar la interfaz gráfica para operar. 4 Conclusión MIDP API también proporciona la clase HttpConnection, que se puede utilizar para interactuar fácilmente con sitios web de Internet, escribiendo así potentes programas de red. Con la popularidad de los teléfonos móviles JAVA, existe una necesidad urgente de una gran cantidad de recursos de aplicaciones. Los principales fabricantes de teléfonos móviles también han proporcionado a los desarrolladores herramientas de desarrollo muy convenientes. Creo que el desarrollo de programas MIDP se volverá popular rápidamente. futuro.