SlideShare una empresa de Scribd logo
Disección del  midlet  HolaMundo  en J2ME Jorge Iván Meza Martínez < [email_address] > http://www.jorgeivanmeza.com/ http://educacion.misservicios.net/
Contenido ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Introducción En el presente capítulo se estudiará paso a paso el midlet mas simple posible: el  HolaMundo  cuya única funcionalidad será la de presentar un saludo en la pantalla del dispositivo móvil. El lector probablemente no se encuentre familiarizado aún con algunas de las clases del API de J2ME utilizadas en el ejemplo, sin embargo serán introducidas en esta sección y retomadas en capítulos posteriores para su ampliación. La implementación de este  midlet  servirá también como insumo necesario para el desarrollo de los capítulos siguientes.
Importación del API Para que el código a desarrollarse tenga acceso al API, tanto de CLDC como el de MIDP es necesario se realice de manera explícita la importación de estas librerías ( package  en Java). import  javax.microedition.lcdui.*; import  javax.microedition.midlet.*;
Un  midlet  básico Un midlet es una clase Java que hereda de la superclase  MIDlet  la cual es abstracta y esto le obliga a implementar los métodos requeridos para realizar la gestión para el paso entre estados (ver capítulo  Midlets con J2ME ). public class  HolaMundoMidlet  extends  MIDlet { protected   void  startApp()  {} protected   void  pauseApp()  {} protected   void  destroyApp( boolean  tipo)  {} }
Acceso a la pantalla El acceso a la pantalla del dispositivo móvil se realiza a través de una referencia al objeto  Display .  Esta referencia es útil a lo largo de la vida del  midlet  motivo por el cual se almacena esta referencia como un atributo de instancia. private  Display pantalla;
Caja de texto Para mostrar el texto al usuario de la manera mas simple se utilizará un objeto de tipo  TextBox  el cual es un formulario que permite desplegar un mensaje al usuario y realizar su correspondiente edición. Se guardará una referencia a este  TextBox  como un atributo de instancia para futura manipulación. private  TextBox saludo;
Comando  aceptar Los comandos asignan acciones a los botones de opción del dispositivo móvil que el usuario puede elegir para modificar el comportamiento de la aplicación.  Para este ejemplo se requiere un comando que le permita al usuario aceptar el despliegue del mensaje de saludo y continuar con el cliclo de vida de la aplicación. Como es necesario tener identificados los comandos para futuras comparaciones durante el manejo de eventos, se debe guardar una referencia a este como atributo de instancia. private  Command aceptarCmd;
Constructor para el  midlet El constructor de la clase deberá entonces crear las instancias del  TextBox   y del  Command  mencionados anteriormente. El primero de ellos se crea especificándole un título, un mensaje inicial, una longitud máxima y una restricción de entrada (ninguna para este caso), mientras que el segundo requiere de un texto, un tipo y una prioridad. public  HolaMundoMidlet() { saludo =  new  TextBox( &quot;Saludo&quot; ,  &quot;Hola Mundo J2ME!&quot; , 256, 0); aceptarCmd =  new  Command( &quot;Aceptar&quot; , Command.SCREEN, 1); }
Resúmen #1 import  javax.microedition.lcdui.*; import  javax.microedition.midlet.*; public class  HolaMundoMidlet  extends  MIDlet { private  Display pantalla; private  TextBox saludo; private  Command aceptarCmd; public  HolaMundoMidlet() { saludo =  new  TextBox( &quot;Saludo&quot; ,  &quot;Hola Mundo J2ME!&quot; , 256, 0); aceptarCmd =  new  Command( &quot;Aceptar&quot; , Command.SCREEN, 1); } protected   void  startApp()  {} protected   void  pauseApp()  {} protected   void  destroyApp( boolean  tipo)  {} }
Método  startApp() Recuérdese que este método es ejecutado cuando se desea que el  midlet  pase de estado  paused  a estado  active , por lo que podrá ser ejecutado en múltiples ocasiones. En este método se deberá hacer acopio de los recursos necesarios para la ejecución de la aplicación, en especial, los liberados durante la invocación del método  pauseApp() . Como primer paso se debe tomar la referencia a la pantalla del dispositivo para posteriormente poder manipularla. pantalla = Display.getDisplay( this );
Método  startApp() A continuación se relaciona el comando  aceptarCmd  con el formulario  saludo  previamente construídos. El comando se agrega al formulario. saludo.addCommand(aceptarCmd); Se define quien va a ser el manejador de eventos ( listener : quien escucha) de comando para el formulario: el  midlet  mismo para este caso. saludo.setCommandListener((CommandListener)  this ); Como actividad final de este método, se presenta el formulario en la pantalla manipulando el objeto  pantalla . pantalla.setCurrent(saludo);
Resúmen #2 protected   void  startApp()  { pantalla = Display.getDisplay( this ); saludo.addCommand(aceptarCmd); saludo.setCommandListener((CommandListener)  this ); pantalla.setCurrent(saludo); }
Problema:  CommandListener La siguiente línea, introducida en el método  startApp()  le indica al  midlet  que él mismo ( this ) va a ser el oídor ( listener ) de eventos de comando del formulario  saludo . saludo.setCommandListener((CommandListener)  this ); Para que esto pueda ser una realidad, el  midlet  deberá estar capacitado para manejar este tipo de eventos, para esto deberá entonces implementar la interfaz  CommandListener  y como consecuencia implementar el método  commandAction(Command, Displayable)  incluído en ella.
Resúmen #3 En términos generales las modificaciones realizadas a la clase  HolaMundoMidlet  hacen que tome esta apariencia. public class  HolaMundoMidlet  extends   MIDlet   implements   CommandListener { // ... public   void  commandAction( Command  c,  Displayable  d) {} }
Manejo de eventos del  Command Se desea que cuando el usuario presione el comando  aceptarCmd  que vienen incluído en  saludo  se termine entonces la aplicación. Como el método  commandAction()  va a ser llamado siempre que sucedan eventos de comando de manera indistinta del objeto en que se generaron, el primer paso es determinar si efectivamente provienen del comando  aceptarCmd . if (c ==  aceptarCmd ) { // ... }
Manejo de eventos del  Command Ahora, teniendo la certeza de que el evento se generó por el comando apropiado, procedemos a indicarle al  midlet  que termine su ejecución. public   void  commandAction( Command  c,  Displayable  d) { if (c ==  aceptarCmd ) { destroyApp( true ); notifyDestroyed (); } }
Método  pauseApp() Acordes con la regla que se sugirió para la implementación de este método, en él se liberan todos los recursos que no son críticos para el  midlet  durante su estado  paused  y que además, van a ser reservados nuevamente cuando se ejecute el método  startApp()  para pasar al estado  active  de nuevo. protected   void  pauseApp()  { pantalla   =  null ; }
Método  destroyApp(boolean) Este método particularmente simple no cuenta con ningún recurso que deba ser liberado o asegurado durante la terminación del  midlet , por esto se deja vacía la implementación del método que recuérdese, es de cualquier manera obligatoria. protected   void  destroyApp( boolean  tipo)  {}
Resúmen #4 (final) import  javax.microedition.lcdui.*; import  javax.microedition.midlet.*; public class  HolaMundoMidlet  extends  MIDlet  implements  CommandListener { private  Display  pantalla ; private  TextBox  saludo ; private  Command  aceptarCmd ; public  HolaMundoMidlet() { saludo  =  new  TextBox( &quot;Saludo&quot; ,  &quot;Hola Mundo J2ME!&quot; , 256, 0);   aceptarCmd  =  new  Command( &quot;Aceptar&quot; , Command.SCREEN, 1); } protected   void  startApp()  { pantalla  = Display.getDisplay( this ); saludo .addCommand(aceptarCmd); saludo .setCommandListener((CommandListener)  this ); pantalla .setCurrent( saludo ); } // Continúa ...
Resúmen #4 (final) // Continúa ... protected   void  pauseApp()  { pantalla  =  null ; } protected   void  destroyApp( boolean  tipo)  {} public   void  commandAction(Command c, Displayable d) { if (c ==  aceptarCmd ) { destroyApp( true ); notifyDestroyed(); } } }
Fin de la implementación Con esto se finaliza el proceso de implementación del  midlet  de ejemplo y se deberá continuar con los procesos de compilación, preverificación y despliegue de la aplicación ( midlet  binario) en el dispositivo móvil.
Fin de la presentación. Creative Commons (CC)

Más contenido relacionado

Destacado

Los MIDlets
Los MIDletsLos MIDlets
Los MIDlets
CESAR A. RUIZ C
 
Generación del midlet HolaMundo utilizando las herramientas de línea de comando
Generación del midlet HolaMundo utilizando las herramientas de línea de comandoGeneración del midlet HolaMundo utilizando las herramientas de línea de comando
Generación del midlet HolaMundo utilizando las herramientas de línea de comando
Jorge Iván Meza Martínez
 
Desarrollo De Aplicaciones Moviles
Desarrollo De Aplicaciones MovilesDesarrollo De Aplicaciones Moviles
Desarrollo De Aplicaciones Moviles
Roberto Perales
 
Aplicaciones Moviles
Aplicaciones MovilesAplicaciones Moviles
Aplicaciones Moviles
Sara1277
 
Desarrollo de aplicaciones moviles
Desarrollo de aplicaciones movilesDesarrollo de aplicaciones moviles
Desarrollo de aplicaciones moviles
Roberto Perales
 
Aplicaciones móviles (diapositivas)
Aplicaciones móviles (diapositivas)Aplicaciones móviles (diapositivas)
Aplicaciones móviles (diapositivas)
asegundos
 
Diapositivas flujo de efectivo
Diapositivas flujo de efectivoDiapositivas flujo de efectivo
Diapositivas flujo de efectivo
Jeore27
 
Aplicaciones Moviles
Aplicaciones MovilesAplicaciones Moviles
Aplicaciones Moviles
Fuibebesuerox
 

Destacado (10)

Los MIDlets
Los MIDletsLos MIDlets
Los MIDlets
 
Generación del midlet HolaMundo utilizando las herramientas de línea de comando
Generación del midlet HolaMundo utilizando las herramientas de línea de comandoGeneración del midlet HolaMundo utilizando las herramientas de línea de comando
Generación del midlet HolaMundo utilizando las herramientas de línea de comando
 
Desarrollo De Aplicaciones Moviles
Desarrollo De Aplicaciones MovilesDesarrollo De Aplicaciones Moviles
Desarrollo De Aplicaciones Moviles
 
J2me midlet1
J2me  midlet1J2me  midlet1
J2me midlet1
 
Aplicaciones Moviles
Aplicaciones MovilesAplicaciones Moviles
Aplicaciones Moviles
 
Aplicaciones móviles
Aplicaciones móvilesAplicaciones móviles
Aplicaciones móviles
 
Desarrollo de aplicaciones moviles
Desarrollo de aplicaciones movilesDesarrollo de aplicaciones moviles
Desarrollo de aplicaciones moviles
 
Aplicaciones móviles (diapositivas)
Aplicaciones móviles (diapositivas)Aplicaciones móviles (diapositivas)
Aplicaciones móviles (diapositivas)
 
Diapositivas flujo de efectivo
Diapositivas flujo de efectivoDiapositivas flujo de efectivo
Diapositivas flujo de efectivo
 
Aplicaciones Moviles
Aplicaciones MovilesAplicaciones Moviles
Aplicaciones Moviles
 

Similar a Disección del midlet Hola Mundo en J2ME

Programación en Java: Applets
Programación en Java: AppletsProgramación en Java: Applets
Programación en Java: Applets
Ronny Parra
 
Applets
AppletsApplets
Appletsjent46
 
Unidad jme-02--ingbarcia-final
Unidad jme-02--ingbarcia-finalUnidad jme-02--ingbarcia-final
Unidad jme-02--ingbarcia-finalOrlando Barcia
 
Manual de aplicaciones moviles
Manual de aplicaciones moviles Manual de aplicaciones moviles
Manual de aplicaciones moviles Jael Vazquez
 
Manual de aplicaciones moviles
Manual de aplicaciones moviles Manual de aplicaciones moviles
Manual de aplicaciones moviles Jael Vazquez
 
Manual de aplicaciones moviles
Manual de aplicaciones moviles Manual de aplicaciones moviles
Manual de aplicaciones moviles Jael Vazquez
 
Manual de aplicaciones moviles
Manual de aplicaciones movilesManual de aplicaciones moviles
Manual de aplicaciones movilesJael Vazquez
 
Taller envio de sms por código 2012
Taller envio de sms por código 2012Taller envio de sms por código 2012
Taller envio de sms por código 2012Orlando Barcia
 
Planteamiento de-ejercicios-2011
Planteamiento de-ejercicios-2011Planteamiento de-ejercicios-2011
Planteamiento de-ejercicios-2011
Orlando Barcia
 
Custom Renders Xamarin.Forms
Custom Renders Xamarin.FormsCustom Renders Xamarin.Forms
Custom Renders Xamarin.Forms
Vicente Gerardo Guzman Lucio
 
1TAP Tema 1-GUI.pptx
1TAP Tema 1-GUI.pptx1TAP Tema 1-GUI.pptx
1TAP Tema 1-GUI.pptx
ATM_SSI
 
Java ME (Micro Edition)
Java ME (Micro Edition) Java ME (Micro Edition)
Java ME (Micro Edition)
Anderson Rubio
 
Clase
ClaseClase
Taller de programación
Taller de programaciónTaller de programación
Taller de programaciónRafa Perez
 
Tutorial Como calcular el sueldo
Tutorial Como calcular el sueldoTutorial Como calcular el sueldo
Tutorial Como calcular el sueldo
Emiliano Gonzalez Mendez
 
Tutorial de como hacer operaciones fáciles en eclipse
Tutorial de como hacer operaciones fáciles en eclipseTutorial de como hacer operaciones fáciles en eclipse
Tutorial de como hacer operaciones fáciles en eclipse
yamary sanchez
 
Interfaces Usuario 3
Interfaces Usuario 3Interfaces Usuario 3
Interfaces Usuario 3Milaly
 

Similar a Disección del midlet Hola Mundo en J2ME (20)

9 impl
9 impl9 impl
9 impl
 
Programación en Java: Applets
Programación en Java: AppletsProgramación en Java: Applets
Programación en Java: Applets
 
Applets
AppletsApplets
Applets
 
Applets
AppletsApplets
Applets
 
Unidad jme-02--ingbarcia-final
Unidad jme-02--ingbarcia-finalUnidad jme-02--ingbarcia-final
Unidad jme-02--ingbarcia-final
 
Manual de aplicaciones moviles
Manual de aplicaciones moviles Manual de aplicaciones moviles
Manual de aplicaciones moviles
 
Manual de aplicaciones moviles
Manual de aplicaciones moviles Manual de aplicaciones moviles
Manual de aplicaciones moviles
 
Manual de aplicaciones moviles
Manual de aplicaciones moviles Manual de aplicaciones moviles
Manual de aplicaciones moviles
 
Manual de aplicaciones moviles
Manual de aplicaciones movilesManual de aplicaciones moviles
Manual de aplicaciones moviles
 
Taller envio de sms por código 2012
Taller envio de sms por código 2012Taller envio de sms por código 2012
Taller envio de sms por código 2012
 
Planteamiento de-ejercicios-2011
Planteamiento de-ejercicios-2011Planteamiento de-ejercicios-2011
Planteamiento de-ejercicios-2011
 
Custom Renders Xamarin.Forms
Custom Renders Xamarin.FormsCustom Renders Xamarin.Forms
Custom Renders Xamarin.Forms
 
Todas las apps
Todas las appsTodas las apps
Todas las apps
 
1TAP Tema 1-GUI.pptx
1TAP Tema 1-GUI.pptx1TAP Tema 1-GUI.pptx
1TAP Tema 1-GUI.pptx
 
Java ME (Micro Edition)
Java ME (Micro Edition) Java ME (Micro Edition)
Java ME (Micro Edition)
 
Clase
ClaseClase
Clase
 
Taller de programación
Taller de programaciónTaller de programación
Taller de programación
 
Tutorial Como calcular el sueldo
Tutorial Como calcular el sueldoTutorial Como calcular el sueldo
Tutorial Como calcular el sueldo
 
Tutorial de como hacer operaciones fáciles en eclipse
Tutorial de como hacer operaciones fáciles en eclipseTutorial de como hacer operaciones fáciles en eclipse
Tutorial de como hacer operaciones fáciles en eclipse
 
Interfaces Usuario 3
Interfaces Usuario 3Interfaces Usuario 3
Interfaces Usuario 3
 

Más de Jorge Iván Meza Martínez

Presentación grupo de investigación UAM, 201203
Presentación grupo de investigación UAM, 201203Presentación grupo de investigación UAM, 201203
Presentación grupo de investigación UAM, 201203Jorge Iván Meza Martínez
 
Mercadeo en la era de la web 2.0, UniQuindio 20110517
Mercadeo en la era de la web 2.0, UniQuindio 20110517Mercadeo en la era de la web 2.0, UniQuindio 20110517
Mercadeo en la era de la web 2.0, UniQuindio 20110517Jorge Iván Meza Martínez
 
GridUAM, presentación del proyecto - 20110128
GridUAM, presentación del proyecto - 20110128GridUAM, presentación del proyecto - 20110128
GridUAM, presentación del proyecto - 20110128Jorge Iván Meza Martínez
 
Charla introducción a processing - 2010/09
Charla introducción a processing - 2010/09Charla introducción a processing - 2010/09
Charla introducción a processing - 2010/09
Jorge Iván Meza Martínez
 
Presentación introducción taller cluster 2010/07
Presentación introducción taller cluster 2010/07Presentación introducción taller cluster 2010/07
Presentación introducción taller cluster 2010/07Jorge Iván Meza Martínez
 
Historia breve de un compromiso de seguridad - Instalación de RedHat 8.0
Historia breve de un compromiso de seguridad - Instalación de RedHat 8.0Historia breve de un compromiso de seguridad - Instalación de RedHat 8.0
Historia breve de un compromiso de seguridad - Instalación de RedHat 8.0Jorge Iván Meza Martínez
 
Instalacion Básica De Drupal 6
Instalacion Básica De Drupal 6Instalacion Básica De Drupal 6
Instalacion Básica De Drupal 6
Jorge Iván Meza Martínez
 
Buscador de Talento Amigo - Presentación
Buscador de Talento Amigo - PresentaciónBuscador de Talento Amigo - Presentación
Buscador de Talento Amigo - Presentación
Jorge Iván Meza Martínez
 
Práctica: distribución de midlets mediante OTA con J2ME - parte I
Práctica: distribución de midlets mediante OTA con J2ME - parte IPráctica: distribución de midlets mediante OTA con J2ME - parte I
Práctica: distribución de midlets mediante OTA con J2ME - parte I
Jorge Iván Meza Martínez
 
Generación del midlet HolaMundo utilizando EclipseME
Generación del midlet HolaMundo utilizando EclipseMEGeneración del midlet HolaMundo utilizando EclipseME
Generación del midlet HolaMundo utilizando EclipseME
Jorge Iván Meza Martínez
 
Introducción a Kohana Framework
Introducción a Kohana FrameworkIntroducción a Kohana Framework
Introducción a Kohana Framework
Jorge Iván Meza Martínez
 
Introducción a la plataforma J2ME
Introducción a la plataforma J2MEIntroducción a la plataforma J2ME
Introducción a la plataforma J2ME
Jorge Iván Meza Martínez
 
Desarrollo de Mi Primer Mapplet
Desarrollo de Mi Primer MappletDesarrollo de Mi Primer Mapplet
Desarrollo de Mi Primer Mapplet
Jorge Iván Meza Martínez
 
Introducción al desarrollo de Google Mapplets
Introducción al desarrollo de Google MappletsIntroducción al desarrollo de Google Mapplets
Introducción al desarrollo de Google Mapplets
Jorge Iván Meza Martínez
 

Más de Jorge Iván Meza Martínez (15)

Presentación grupo de investigación UAM, 201203
Presentación grupo de investigación UAM, 201203Presentación grupo de investigación UAM, 201203
Presentación grupo de investigación UAM, 201203
 
Presentación GridUAM 201112
Presentación GridUAM 201112Presentación GridUAM 201112
Presentación GridUAM 201112
 
Mercadeo en la era de la web 2.0, UniQuindio 20110517
Mercadeo en la era de la web 2.0, UniQuindio 20110517Mercadeo en la era de la web 2.0, UniQuindio 20110517
Mercadeo en la era de la web 2.0, UniQuindio 20110517
 
GridUAM, presentación del proyecto - 20110128
GridUAM, presentación del proyecto - 20110128GridUAM, presentación del proyecto - 20110128
GridUAM, presentación del proyecto - 20110128
 
Charla introducción a processing - 2010/09
Charla introducción a processing - 2010/09Charla introducción a processing - 2010/09
Charla introducción a processing - 2010/09
 
Presentación introducción taller cluster 2010/07
Presentación introducción taller cluster 2010/07Presentación introducción taller cluster 2010/07
Presentación introducción taller cluster 2010/07
 
Historia breve de un compromiso de seguridad - Instalación de RedHat 8.0
Historia breve de un compromiso de seguridad - Instalación de RedHat 8.0Historia breve de un compromiso de seguridad - Instalación de RedHat 8.0
Historia breve de un compromiso de seguridad - Instalación de RedHat 8.0
 
Instalacion Básica De Drupal 6
Instalacion Básica De Drupal 6Instalacion Básica De Drupal 6
Instalacion Básica De Drupal 6
 
Buscador de Talento Amigo - Presentación
Buscador de Talento Amigo - PresentaciónBuscador de Talento Amigo - Presentación
Buscador de Talento Amigo - Presentación
 
Práctica: distribución de midlets mediante OTA con J2ME - parte I
Práctica: distribución de midlets mediante OTA con J2ME - parte IPráctica: distribución de midlets mediante OTA con J2ME - parte I
Práctica: distribución de midlets mediante OTA con J2ME - parte I
 
Generación del midlet HolaMundo utilizando EclipseME
Generación del midlet HolaMundo utilizando EclipseMEGeneración del midlet HolaMundo utilizando EclipseME
Generación del midlet HolaMundo utilizando EclipseME
 
Introducción a Kohana Framework
Introducción a Kohana FrameworkIntroducción a Kohana Framework
Introducción a Kohana Framework
 
Introducción a la plataforma J2ME
Introducción a la plataforma J2MEIntroducción a la plataforma J2ME
Introducción a la plataforma J2ME
 
Desarrollo de Mi Primer Mapplet
Desarrollo de Mi Primer MappletDesarrollo de Mi Primer Mapplet
Desarrollo de Mi Primer Mapplet
 
Introducción al desarrollo de Google Mapplets
Introducción al desarrollo de Google MappletsIntroducción al desarrollo de Google Mapplets
Introducción al desarrollo de Google Mapplets
 

Último

Desarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdfDesarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdf
AlejandraCasallas7
 
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
DanielErazoMedina
 
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptxleidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
Leidyfuentes19
 
Conceptos básicos de programación 10-5.pdf
Conceptos básicos de programación 10-5.pdfConceptos básicos de programación 10-5.pdf
Conceptos básicos de programación 10-5.pdf
ValeriaAyala48
 
Estructuras básicas_ conceptos básicos de programación.pdf
Estructuras básicas_  conceptos básicos de programación.pdfEstructuras básicas_  conceptos básicos de programación.pdf
Estructuras básicas_ conceptos básicos de programación.pdf
ItsSofi
 
maestria-motores-combustion-interna-alternativos (1).pdf
maestria-motores-combustion-interna-alternativos (1).pdfmaestria-motores-combustion-interna-alternativos (1).pdf
maestria-motores-combustion-interna-alternativos (1).pdf
JimmyTejadaSalizar
 
Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024
Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024
Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024
CesarPazosQuispe
 
Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...
Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...
Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...
espinozaernesto427
 
Posnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativaPosnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativa
Fernando Villares
 
Diagrama de flujo basada en la reparacion de automoviles.pdf
Diagrama de flujo basada en la reparacion de automoviles.pdfDiagrama de flujo basada en la reparacion de automoviles.pdf
Diagrama de flujo basada en la reparacion de automoviles.pdf
ManuelCampos464987
 
Desarrollo de Habilidades de Pensamiento.
Desarrollo de Habilidades de Pensamiento.Desarrollo de Habilidades de Pensamiento.
Desarrollo de Habilidades de Pensamiento.
AlejandraCasallas7
 
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTALINFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
CrystalRomero18
 
Diagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestreDiagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestre
rafaelsalazar0615
 
Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5
JulyMuoz18
 
Estructuras Básicas_ Conceptos Basicos De Programacion.pdf
Estructuras Básicas_ Conceptos Basicos De Programacion.pdfEstructuras Básicas_ Conceptos Basicos De Programacion.pdf
Estructuras Básicas_ Conceptos Basicos De Programacion.pdf
IsabellaRubio6
 
MANUAL DEL DECODIFICADOR DVB S2. PARA VSAT
MANUAL DEL DECODIFICADOR DVB  S2. PARA VSATMANUAL DEL DECODIFICADOR DVB  S2. PARA VSAT
MANUAL DEL DECODIFICADOR DVB S2. PARA VSAT
Ing. Julio Iván Mera Casas
 
Inteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdfInteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdf
Emilio Casbas
 
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdfTRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
thomasdcroz38
 
Estructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas_Tecnología_Grado10-7.pdfEstructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas_Tecnología_Grado10-7.pdf
cristianrb0324
 
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdfDESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
marianabz2403
 

Último (20)

Desarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdfDesarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdf
 
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
 
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptxleidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
 
Conceptos básicos de programación 10-5.pdf
Conceptos básicos de programación 10-5.pdfConceptos básicos de programación 10-5.pdf
Conceptos básicos de programación 10-5.pdf
 
Estructuras básicas_ conceptos básicos de programación.pdf
Estructuras básicas_  conceptos básicos de programación.pdfEstructuras básicas_  conceptos básicos de programación.pdf
Estructuras básicas_ conceptos básicos de programación.pdf
 
maestria-motores-combustion-interna-alternativos (1).pdf
maestria-motores-combustion-interna-alternativos (1).pdfmaestria-motores-combustion-interna-alternativos (1).pdf
maestria-motores-combustion-interna-alternativos (1).pdf
 
Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024
Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024
Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024
 
Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...
Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...
Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...
 
Posnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativaPosnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativa
 
Diagrama de flujo basada en la reparacion de automoviles.pdf
Diagrama de flujo basada en la reparacion de automoviles.pdfDiagrama de flujo basada en la reparacion de automoviles.pdf
Diagrama de flujo basada en la reparacion de automoviles.pdf
 
Desarrollo de Habilidades de Pensamiento.
Desarrollo de Habilidades de Pensamiento.Desarrollo de Habilidades de Pensamiento.
Desarrollo de Habilidades de Pensamiento.
 
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTALINFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
 
Diagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestreDiagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestre
 
Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5
 
Estructuras Básicas_ Conceptos Basicos De Programacion.pdf
Estructuras Básicas_ Conceptos Basicos De Programacion.pdfEstructuras Básicas_ Conceptos Basicos De Programacion.pdf
Estructuras Básicas_ Conceptos Basicos De Programacion.pdf
 
MANUAL DEL DECODIFICADOR DVB S2. PARA VSAT
MANUAL DEL DECODIFICADOR DVB  S2. PARA VSATMANUAL DEL DECODIFICADOR DVB  S2. PARA VSAT
MANUAL DEL DECODIFICADOR DVB S2. PARA VSAT
 
Inteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdfInteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdf
 
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdfTRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
 
Estructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas_Tecnología_Grado10-7.pdfEstructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas_Tecnología_Grado10-7.pdf
 
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdfDESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
 

Disección del midlet Hola Mundo en J2ME

  • 1. Disección del midlet HolaMundo en J2ME Jorge Iván Meza Martínez < [email_address] > http://www.jorgeivanmeza.com/ http://educacion.misservicios.net/
  • 2.
  • 3. Introducción En el presente capítulo se estudiará paso a paso el midlet mas simple posible: el HolaMundo cuya única funcionalidad será la de presentar un saludo en la pantalla del dispositivo móvil. El lector probablemente no se encuentre familiarizado aún con algunas de las clases del API de J2ME utilizadas en el ejemplo, sin embargo serán introducidas en esta sección y retomadas en capítulos posteriores para su ampliación. La implementación de este midlet servirá también como insumo necesario para el desarrollo de los capítulos siguientes.
  • 4. Importación del API Para que el código a desarrollarse tenga acceso al API, tanto de CLDC como el de MIDP es necesario se realice de manera explícita la importación de estas librerías ( package en Java). import javax.microedition.lcdui.*; import javax.microedition.midlet.*;
  • 5. Un midlet básico Un midlet es una clase Java que hereda de la superclase MIDlet la cual es abstracta y esto le obliga a implementar los métodos requeridos para realizar la gestión para el paso entre estados (ver capítulo Midlets con J2ME ). public class HolaMundoMidlet extends MIDlet { protected void startApp() {} protected void pauseApp() {} protected void destroyApp( boolean tipo) {} }
  • 6. Acceso a la pantalla El acceso a la pantalla del dispositivo móvil se realiza a través de una referencia al objeto Display . Esta referencia es útil a lo largo de la vida del midlet motivo por el cual se almacena esta referencia como un atributo de instancia. private Display pantalla;
  • 7. Caja de texto Para mostrar el texto al usuario de la manera mas simple se utilizará un objeto de tipo TextBox el cual es un formulario que permite desplegar un mensaje al usuario y realizar su correspondiente edición. Se guardará una referencia a este TextBox como un atributo de instancia para futura manipulación. private TextBox saludo;
  • 8. Comando aceptar Los comandos asignan acciones a los botones de opción del dispositivo móvil que el usuario puede elegir para modificar el comportamiento de la aplicación. Para este ejemplo se requiere un comando que le permita al usuario aceptar el despliegue del mensaje de saludo y continuar con el cliclo de vida de la aplicación. Como es necesario tener identificados los comandos para futuras comparaciones durante el manejo de eventos, se debe guardar una referencia a este como atributo de instancia. private Command aceptarCmd;
  • 9. Constructor para el midlet El constructor de la clase deberá entonces crear las instancias del TextBox y del Command mencionados anteriormente. El primero de ellos se crea especificándole un título, un mensaje inicial, una longitud máxima y una restricción de entrada (ninguna para este caso), mientras que el segundo requiere de un texto, un tipo y una prioridad. public HolaMundoMidlet() { saludo = new TextBox( &quot;Saludo&quot; , &quot;Hola Mundo J2ME!&quot; , 256, 0); aceptarCmd = new Command( &quot;Aceptar&quot; , Command.SCREEN, 1); }
  • 10. Resúmen #1 import javax.microedition.lcdui.*; import javax.microedition.midlet.*; public class HolaMundoMidlet extends MIDlet { private Display pantalla; private TextBox saludo; private Command aceptarCmd; public HolaMundoMidlet() { saludo = new TextBox( &quot;Saludo&quot; , &quot;Hola Mundo J2ME!&quot; , 256, 0); aceptarCmd = new Command( &quot;Aceptar&quot; , Command.SCREEN, 1); } protected void startApp() {} protected void pauseApp() {} protected void destroyApp( boolean tipo) {} }
  • 11. Método startApp() Recuérdese que este método es ejecutado cuando se desea que el midlet pase de estado paused a estado active , por lo que podrá ser ejecutado en múltiples ocasiones. En este método se deberá hacer acopio de los recursos necesarios para la ejecución de la aplicación, en especial, los liberados durante la invocación del método pauseApp() . Como primer paso se debe tomar la referencia a la pantalla del dispositivo para posteriormente poder manipularla. pantalla = Display.getDisplay( this );
  • 12. Método startApp() A continuación se relaciona el comando aceptarCmd con el formulario saludo previamente construídos. El comando se agrega al formulario. saludo.addCommand(aceptarCmd); Se define quien va a ser el manejador de eventos ( listener : quien escucha) de comando para el formulario: el midlet mismo para este caso. saludo.setCommandListener((CommandListener) this ); Como actividad final de este método, se presenta el formulario en la pantalla manipulando el objeto pantalla . pantalla.setCurrent(saludo);
  • 13. Resúmen #2 protected void startApp() { pantalla = Display.getDisplay( this ); saludo.addCommand(aceptarCmd); saludo.setCommandListener((CommandListener) this ); pantalla.setCurrent(saludo); }
  • 14. Problema: CommandListener La siguiente línea, introducida en el método startApp() le indica al midlet que él mismo ( this ) va a ser el oídor ( listener ) de eventos de comando del formulario saludo . saludo.setCommandListener((CommandListener) this ); Para que esto pueda ser una realidad, el midlet deberá estar capacitado para manejar este tipo de eventos, para esto deberá entonces implementar la interfaz CommandListener y como consecuencia implementar el método commandAction(Command, Displayable) incluído en ella.
  • 15. Resúmen #3 En términos generales las modificaciones realizadas a la clase HolaMundoMidlet hacen que tome esta apariencia. public class HolaMundoMidlet extends MIDlet implements CommandListener { // ... public void commandAction( Command c, Displayable d) {} }
  • 16. Manejo de eventos del Command Se desea que cuando el usuario presione el comando aceptarCmd que vienen incluído en saludo se termine entonces la aplicación. Como el método commandAction() va a ser llamado siempre que sucedan eventos de comando de manera indistinta del objeto en que se generaron, el primer paso es determinar si efectivamente provienen del comando aceptarCmd . if (c == aceptarCmd ) { // ... }
  • 17. Manejo de eventos del Command Ahora, teniendo la certeza de que el evento se generó por el comando apropiado, procedemos a indicarle al midlet que termine su ejecución. public void commandAction( Command c, Displayable d) { if (c == aceptarCmd ) { destroyApp( true ); notifyDestroyed (); } }
  • 18. Método pauseApp() Acordes con la regla que se sugirió para la implementación de este método, en él se liberan todos los recursos que no son críticos para el midlet durante su estado paused y que además, van a ser reservados nuevamente cuando se ejecute el método startApp() para pasar al estado active de nuevo. protected void pauseApp() { pantalla = null ; }
  • 19. Método destroyApp(boolean) Este método particularmente simple no cuenta con ningún recurso que deba ser liberado o asegurado durante la terminación del midlet , por esto se deja vacía la implementación del método que recuérdese, es de cualquier manera obligatoria. protected void destroyApp( boolean tipo) {}
  • 20. Resúmen #4 (final) import javax.microedition.lcdui.*; import javax.microedition.midlet.*; public class HolaMundoMidlet extends MIDlet implements CommandListener { private Display pantalla ; private TextBox saludo ; private Command aceptarCmd ; public HolaMundoMidlet() { saludo = new TextBox( &quot;Saludo&quot; , &quot;Hola Mundo J2ME!&quot; , 256, 0); aceptarCmd = new Command( &quot;Aceptar&quot; , Command.SCREEN, 1); } protected void startApp() { pantalla = Display.getDisplay( this ); saludo .addCommand(aceptarCmd); saludo .setCommandListener((CommandListener) this ); pantalla .setCurrent( saludo ); } // Continúa ...
  • 21. Resúmen #4 (final) // Continúa ... protected void pauseApp() { pantalla = null ; } protected void destroyApp( boolean tipo) {} public void commandAction(Command c, Displayable d) { if (c == aceptarCmd ) { destroyApp( true ); notifyDestroyed(); } } }
  • 22. Fin de la implementación Con esto se finaliza el proceso de implementación del midlet de ejemplo y se deberá continuar con los procesos de compilación, preverificación y despliegue de la aplicación ( midlet binario) en el dispositivo móvil.
  • 23. Fin de la presentación. Creative Commons (CC)