SlideShare a Scribd company logo
1 of 23
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)

More Related Content

Viewers also liked

Viewers also liked (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 to Disección del midlet Hola Mundo en J2ME

Applets
AppletsApplets
Applets
jent46
 
Unidad jme-02--ingbarcia-final
Unidad jme-02--ingbarcia-finalUnidad jme-02--ingbarcia-final
Unidad jme-02--ingbarcia-final
Orlando 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 moviles
Jael 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 2012
Orlando Barcia
 
Taller de programación
Taller de programaciónTaller de programación
Taller de programación
Rafa Perez
 
Interfaces Usuario 3
Interfaces Usuario 3Interfaces Usuario 3
Interfaces Usuario 3
Milaly
 

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

9 impl
9 impl9 impl
9 impl
 
Applets
AppletsApplets
Applets
 
Applets
AppletsApplets
Applets
 
Programación en Java: Applets
Programación en Java: AppletsProgramación en Java: Applets
Programación en Java: 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
 

More from 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, 201203
Jorge 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 20110517
Jorge 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 - 20110128
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/07
Jorge 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.0
Jorge Iván Meza Martínez
 

More from 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
 

Recently uploaded

Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
241521559
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
silviayucra2
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
FagnerLisboa3
 

Recently uploaded (10)

Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 

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)