Programación para sistemas en red IV. Estructura básica de un MIDlet

Documentos relacionados
Programación para sistemas en red IV. Formularios

Programando con J2ME. Rogelio Ferreira Escutia

Android y Java para Dispositivos Móviles

Programación para sistemas en red IV. Tomar información desde la pantalla

CAPÍTULO 3:J2ME Introducción

J2ME. CDC, CLDC y MIDP Java para dispositivos con capacidad limitada

Sebastián García Galán

Tópicos Selectos de Programación

INTRODUCCIÓN A LA PROGRAMACIÓN DE DISPOSITIVOS MÓVILES

Interfaz de usuario. Índice

Introducción a Java para MIDs - Ejercicios

Software de Comunicaciones I.T.T. Especialidad Telemática Escuela Politécnica Superior Universidad Carlos III de Madrid

J2ME (Java to Micro Edition)

Qué ofrece Autentia Real Business Solutions S.L?

Java TM MicroEdition -Conceptos Básicos-

Laboratorio. Instalación de Visual Studio Community. Back To Basics Instalando Visual Studio Community. Versión: 1.0.

J2ME Programando un cronómetro para nuestro celular

CAPÍTULO 3: J2ME Java 2 Platform Micro Edition (J2ME)

>> Programación de dispositivos móviles.

POO: Clases y objetos

Arquitecturas cliente/servidor

0DQXDOGHGHVDUUROORGH DSOLFDFLRQHVHQ-0( 9HUVLyQGHOGRFXPHQWR )HFKDGHOGRFXPHQWRGH0DU]RGH

Java, JavaME y el entorno Eclipse - Ejercicios

Federico Peinado

Universidad de los Andes Ingeniería de Sistemas y Computación

USO DE LOS OBJETOS JLABEL, JTEXTFIELD Y JBUTTON

18. Interfaces Declaración de una interfaz

Capítulo 5-2 J2ME: Componentes de Interfaces de Usuario

Pasos requeridos para establecer el manejo de eventos para un componente de GUI.

PROGRAMACIÓN EN JAVA. { una línea para definir, crear o ejecutar ; }

Desarrollo de aplicaciones de acceso a base de datos con JBuilder 7

Unidad Didáctica 3. Tipos genéricos. Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos

Introducción a Java. Fernando Cerezal López. 24 Noviembre 2005

Programación para sistemas en red IV. Manejo de gráficos

Universidad de Sevilla. Área de Ingeniería Telemática. Área de Ingeniería Telemática. Universidad de Sevilla. Fundamentos de Telemática

I. Introducción a la programación orientada a objetos y al lenguaje JAVA Colegio Reuven Feuerstein --Javier Navarro

Conocimientos previos

!"# $! "# % &'& $()! ( *

Desarrollando aplicaciones mediante Java Me

DESARROLLO DE APLICACIONES JAVA PARA

2. Indica cuál de las siguientes afirmaciones es cierta:

Userform ("INT") Capital Inicial C(4;0,18)= Tiempo. t= 4 C(4;0,18)= Interés. i= 18,0 %

Cómo crear una base de datos en Access con Visual Basic Autor: Jorge Alvarez

Java 2 Micro Edition

2. Tratamiento de objetos con JAVA

Centro de Bachillerato Tecnológico. Manual de prácticas. Visual Basic 6.0. Nivel Básico. Industrial y de servicios No. 231.

Herencia. Implementación en Java

Derechos de Acceso: COMPOSICION

PRESENTACIÓN DE LA ASIGNATURA E INTRODUCCIÓN A LA PROGRAMACIÓN VISUAL

Ingeniería del Software Separación entre Presentación y Lógica del Negocio

Seminario 2 Eclipse PROGRAMACIÓN 3. Septiembre Departamento de Lenguajes y Sistemas Informáticos Universidad de Alicante.

Herramientas Visuales de Programación

PROGRAMACIÓN DE JUEGOS PARA MÓVILES CON J2ME

Diseño de tipos Igualdad, representación, código, copia y relación de orden

Tema: Herencia en C#.

Guía de Soluciones para Posibles Incidencias Presentadas en el Portal IDSE. Guía de Usuario. Versión 1.1

Examen Teórico Convocatoria de Junio de 2012

Algoritmos y Estructuras de Datos Ingeniería en Informática, Curso 2º SEMINARIO DE C++ Sesión 2

SOFTWARE Microsoft Visual Studio 2005.NET FrameWork 2.0

Práctica B: Cree su primera aplicación

Desarrollo de aplicaciones para dispositivos móviles (5)

Tema: Clases y Objetos en C#. Parte II.

Programación Dirigida a Objetos. MATERIAL COMPLEMENTARIO Tema 5.- Herencia

Programació de jocs per mòbils amb J2ME.

Práctica A: Creación de un componente con servicio

Tema: Herencia en C#.

Programación J2ME con Netbeans. Interfaz gráfico para el tetris Septiembre de 2006

Patricio Olivares. 25 de abril de 2017

GUIA 3 PARTE II. Introducción a PL/SQL

Programación para sistemas en red IV. Conceptos básicos II

Introducción a Java. Dr. (c) Noé Alejandro Castro Sánchez

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

Conocimientos básicos de Java

Tutorial Java con acceso a datos

Identificar problemas y proponer soluciones integrando las tecnologías emergentes en Internet.

Tema 6: Clases. Índice

Taller de Programación de Dispositivos Móviles. José Miguel Rubio L. Oficina

Programación Orientada a Objetos en C++

Construir una Interfaz Gráfica

APÉNDICE K MANUAL DEL USUARIO

1. Conceptos básicos de POO 1

SIEMENS. Conexión de un operador a LOGO! 8 (WinCC Basic V11) Problema. Los cambios en el LOGO! programa

Capítulo 3. Introducción a la programación. Continuar

FACULTAD DE INGENIERÍA

Práctica 2: Eclipse como Entorno Integrado de Desarrollo e Introducción al manejo de excepciones.

Guía práctica de estudio 08: Polimorfismo

BENEMERITA UNIVERSIDADD AUTONOMA DE PUEBLA FACULTAD DE CIENCIAS DE LA COMPUTACIÓN LICENCIATURA EN CIENCIAS DE LA COMPUTACIÓN

UNIVERSIDAD NACIONAL DE INGENIERÍA Departamento de Lenguajes y Simulación Guía de laboratorio I

Curso de PHP. Pascual Gómez del Pino Página 1

Netbeans Introducción

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

MI PRIMER PROYECTO. Una vez que ingresas al entorno de desarrollo de NetBeans se observa:

Qué es Java? Un lenguaje de programación Un entorno de desarrollo Un entorno de aplicación Un entorno de despliegue Es similar en sintaxis de C + +.

INGRESAR DATOS CON UN CONTROL VISUAL EN JAVA. CLASE JTEXTFIELD Y MÉTODO GETTEXT. EJEMPLOS (CU00928C)

DEPARTAMENTO DE INGENIERÍA TELEMÁTICA UNIVERSIDAD CARLOS III DE MADRID PROGRAMACIÓN AVANZADA EN MIDP. Celeste Campo.

Threads o Hilos. Un thread en JAVA comienza como una instancia de java.lang.thread antes de convertirse en un hilo de ejecución.

Programación de Dispositivos Móviles Estructura de un programa en J2ME

PROGRAMACION EN VISUAL BASIC

Transcripción:

Estructura básica de un MIDlet Paquetes necesarias para la construcción de un MIDlet: - import javax.microedition.midlet.*; Paquete para usar el perfil MIDlet. - import javax.microedition.lcdui.*; Proporciona un conjunto de métodos y clases para la implementación de interfaces de usuario. Declaración de la clase principal: Cada MIDlet debe extender de javax.microedition.midlet.midlet. El constructor no tiene argumentos. Conceptualmente los MIDlets son similares a los applets. Pueden ser descargados. Ejecutan en el entorno del dispositivo. La siguiente es la sintaxis para la declaración de la clase principal public class NombreClase extends MIDlet implements CommandListener Como se puede notar, la clase debe heredar de la clase MIDlet, e implementar la clase CommandListener para lograr interactividad con el usuario. Métodos de un MIDlet: La clase MIDlet posee los siguientes métodos que representan cada uno de los estados de un MIDlet: startapp(). pauseapp(). destroyapp(). Para manejar las acciones de los diferentes comandos se utiliza el método commandaction().

Creación de un MIDlet: Crear un nuevo proyecto en KToolbar de J2ME Wireless Toolkit: - Clic File - Clic New Project - Poner un nombre al proyecto - Poner un nombre a la clase (debe ser el mismo nombre del proyecto) - Clic Create Project - Clic ok Escribir código en J2ME: El código J2ME, se debe escribir en cualquier editor de texto, luego se debe guardar en la carpeta: C:\WTK20\apps\NombreProyecto\src La clase principal se debe guardar con el mismo nombre del proyecto, y todas las clases deben tener la extensión.java Navegación en la pantalla de un MIDlet: Una aplicación MIDP, a excepción de las demasiado sencillas, siempre utilizará más de una pantalla, por lo que resulta necesario una herramienta que permita a los usuarios desplazarse de una pantalla a otra según lo requiera la propia MIDlet. El paquete javax.microedition.lcdui proporciona la clase Command, la cual captura la información de un evento. Un comando creado con la clase Command solamente contiene información sobre él mismo, no de la acción que realiza cuando está activado, la acción está definida en un objeto de la interfaz CommandListener asociado con la pantalla. A continuación se muestra como declarar un comando: Command micomando=new Command("Mio", Command.SCREEN,2); Los tres parámetros que el constructor de la clase Command debe incluir son los siguientes: -Etiqueta: Una cadena de caracteres usada para la presentación visual del comando. -Tipo: Especifica su intención, es decir, la acción que realizará el comando. Algunos tipos pueden ser: -Command.SCREEN. -Command.EXIT.

-Command.BACK. -Command.ITEM -Prioridad: Describe la importancia del comando con respecto a otros en pantalla. Una prioridad de 1 indica al comando más importante. Cuando una MIDlet se ejecuta, el dispositivo escoge el lugar de un comando basándose en su tipo (abajo y a la izquierda para salir, por ejemplo) y coloca los comandos similares con base en su valor de prioridad. Considérese una aplicación con los siguientes comandos: Command cerrar=new Command("Cerrar", Command.EXIT,1); Command micom=new Command("Info", Command.SCREEN,2); Command micom2=new Command("Comprar", Command.SCREEN,2); En este ejemplo, el manejador de la aplicación coloca el comando Cerrar en la pantalla y crea un menú para mantener Info y Comprar. Presionando la tecla correspondiente al menú, el usuario, es llevado a otra pantalla donde puede seleccionar alguna de las dos opciones. Eventos de alto nivel: Ejemplo de menú El manejo de eventos en la api de alto nivel se basa en un modelo de escucha o escuchante (listener, en inglés). Los objetos Screen y Canvas pueden tener "escuchantes" para comandos. Para que un objeto pueda ser un escuchante, debe implementar la interfaz CommandListener. Los comandos se agregan a un objeto con el método addcommand y se registra un escuchante con el método CommandListener. Ambos métodos pertenecen a la clase Displayable y son heredados por Screen y Canvas.

La interfaz CommandListener: Esta interfaz es para MIDlets que necesitan recibir eventos de alto nivel. Esta interfaz tiene un método que todo escuchante debe implementar, el método CommanAction. public void CommanAction(Command c, Displayable d) { El parámetro c es un objeto Command que identifica al comando que fue agregado al d (objeto Displayable) con el método addcommand. El parámetro d es el objeto visible (Form, Canvas, Screen) donde el evento ocurre. Dentro de las llaves ({ ) se introduce el código que se habrá de ejecutar al ocurrir un evento. public void commandaction(command c, Displayable s) { if (c == CmdSalir) { destroyapp(false); notifydestroyed(); En el trozo de código mostrado arriba se emplea una decisión if para identificar qué comando es el que ha sido activado, si se trata del comando CmdSalir se destruye la aplicación, es decir, se cierra y se notifica su destrucción. Primer MIDlet: Se iniciará con el clásico código fuente de una aplicación que lo único que hace es mostrar un mensaje en la pantalla, en este caso el mensaje es " Hola mundo!". import javax.microedition.lcdui.*; import javax.microedition.midlet.*; Se comienza por importar los paquetes que son obligatorios para cualquier MIDlet. Esto puede variar dependiendo de la finalidad de la clase a crear, pero para una clase que será la principal de su paquete, es forzoso el importar las clases del paquete javax.microedition.midlet y lcdui se requiere para las operaciones de entrada y salida de información. public class HolaMundo extends MIDlet implements CommandListener { Se inicia el código de la clase, la cual extiende (o hereda) la clase MIDlet, necesaria, como ya se dijo, para la creación de clases ejecutables, además se implementa la interfaz CommandListener, esta interfaz define una estructura de clase en la que se

deben declarar unos objetos llamados comandos, los cuales responderán a alguna acción del usuario. private Form Forma1; Se ha instanciando un objeto de la clase Form, que, como ya se vio, pertenece al paquete lcdui. Un objeto Form define una pantalla donde se agregarán objetos de entrada y salida de datos por teclado y pantalla, respectivamente. public HolaMundo() { Forma1 = new Form(" Hola mundo!"); Forma1.append(new StringItem(null, " Hola mundo!")); Forma1.addCommand(new Command("Salir", Command.EXIT, 1)); Forma1.setCommandListener(this); En la sección de arriba se describe el constructor de la clase, el cual debe llevar el mismo nombre que la clase, sin especificar tipo y de acceso público. En un constructor de clase se establecen los valores que han de tomar las variables, se crean las instancias de las clases, en fin, se define como habrá de presentarse, al arrancar, la aplicación al usuario. Al iniciar el constructor se instancia un objeto Form con título " Hola mundo!" y de nombre Forma1, enseguida, a esa misma forma se le agrega un elemento SringItem sin etiqueta (título o descripción) y con un contenido igual a " Hola mundo!", se agrega también, un comando, los comandos son las opciones que, en un teléfono celular, aparecen en la parte inferior de la pantalla y que el usuario puede seleccionar presionando las teclas que se encuentran debajo del texto; ese comando tiene por texto o etiqueta la palabra "Salir", es del tipo EXIT y de prioridad 1. En un comando, la prioridad indica la importancia de ese comando con respecto a otros en la pantalla, dicha prioridad puede ir de 1 a 10, siendo 1 el valor de prioridad más alto. public void startapp() { Display.getDisplay(this).setCurrent(Forma1); El método startapp es el que se ejecuta después del constructor, en el se encuentran las instrucciones que serán ejecutadas por la aplicación (es como el procedimiento main de las aplicaciones en C o Java). En el ejemplo, se utiliza un objeto Display que se encarga del control de la pantalla, un método getdisplay(this), el cual arroja como resultado la pantalla del dispositivo (como salida de datos para

la MIDlet this, la actual) y otro método setcurrent(forma1), que indica que lo que se ha de mostrar en la pantalla será lo contenido en Forma1. public void pauseapp() { public void destroyapp(boolean condicion) { public void commandaction(command c, Displayable s) { notifydestroyed(); Las funciones pauseapp y destroyapp, también son obligatorias de cualquier clase MIDP (sea la principal del proyecto o no), en pauseapp se pueden definir las acciones a tomar cuando la aplicación sea pausada por el usuario, por la misma aplicación o por otra; destroyapp indica lo que se realizará antes de cerrar la aplicación. El método commandaction define lo que se hará con los comandos de la MIDlet, como en el ejemplo sólo se tiene un comando basta con notificar la destrucción de la aplicación Para ver el funcionamiento del MIDlet creamos un nuevo proyecto en KToolbar de J2ME Wireless Toolkit con el nombre de HolaMundo, guardamos el código fuente anterior en un bloc de notas con el nombre de HolaMundo.java en la carpeta: C:\WTK20\apps\HolaMundo\src A continuación se muestra el código fuente completo:

import javax.microedition.lcdui.*; import javax.microedition.midlet.*; public class HolaMundo extends MIDlet implements CommandListener { private Form Forma1; public HolaMundo() { Forma1 = new Form(" Hola mundo!"); Forma1.append(new StringItem(null, " Hola mundo!")); Forma1.addCommand(new Command("Salir", Command.EXIT, 1)); Forma1.setCommandListener(this); public void startapp() { Display.getDisplay(this).setCurrent(Forma1); public void pauseapp() { public void destroyapp(boolean condicion) { public void commandaction(command c, Displayable s) { notifydestroyed(); Luego de realizar el procedimiento anterior, presionamos sobre J2ME Wireless Toolkit el botón build y luego presionamos el botón run. Taller: Interprete e implemente la clase Textbox, la cual se muestra a continuación. La clase Textbox La clase TextBox, genera objetos de pantalla completa, como Form,la diferencia es que TextBox únicamente permite la introducción de texto y el manejo de comandos. A continuación se presenta un ejemplo sencillo: import javax.microedition.midlet.*; import javax.microedition.lcdui.*; public class TextBoxDemo extends MIDlet implements CommandListener {

private Command CmdSalir; private Display display; private TextBox t = null; De esta primera parte sólo hay que resaltar la creación de un objeto TextBox de nombre t y valor nulo. public TextBoxDemo() { display = Display.getDisplay(this); CmdSalir = new Command("Salir", Command.EXIT, 2); t = new TextBox("Hola", "Esto es una prueba", 256, 0); t.addcommand(cmdsalir); t.setcommandlistener(this); En el constructor de la MIDlet se observa la designación del contenido de la pantalla (esta MIDlet), la creación de un comando de salida de prioridad 2, la instanciación de t con título "Hola", texto inicial "Esto es una prueba", longitud máxima de texto de 256 caracteres y tipo 0, los tipos son valores constantes que la clase TextBox interpreta para permitir la entrada de algunos caracteres e impedir la de otros, en el ejemplo el tipo 0 es la constante Textfield.ANY, que indica que se puede introducir cualquier carácter (también existen Textfield.NUMERIC, TextField.DECIMAL y TextField.PHONENUMBER, entre otras). Después de creado el objeto t, se le agrega el comando CmdSalir. public void startapp() { display.setcurrent(t); En el método startapp se indica que el elemento en pantalla será t. public void pauseapp() { public void destroyapp(boolean condicion) {

public void commandaction(command c, Displayable s) { if (c == CmdSalir) { destroyapp(false); notifydestroyed(); Cuando una MIDlet tiene más de un comando (aunque no es el caso de esta) se puede realizar una decisión con el parámetro c para definir las acciones a tomar en cada comando.