SlideShare a Scribd company logo
1 of 17
Download to read offline
1 Programación de dispositivos móviles
Semana 3
LOS MIDLETS
Los MIDlets, aunque ya hemos visto de manera superficial qué son y cómo se
crean, son en suma las estructuras que crearemos. Es por esto que debemos
conocer cuál es la estructura de ellos, sus propiedades fundamentales, cual es
el “ciclo de vida” de un MIDlet en un dispositivo móvil, y los estados por los que
se desenvuelve el MIDlet en un dispositivo móvil. Como estos son la base de
las aplicaciones que se instalan en nuestros dispositivos, debemos conocer
también la estructura y funcionamiento del AMS (o gestor de aplicaciones, visto
en semanas pasadas). En la semana anterior, aprendimos que la configuración
CLDC posee un paquete propio, llamado javax.microedition. De este paquete,
estudiaremos el javax.microedition.midlet, para así estructurar el código de
nuestra primera aplicación. En los requerimientos para poder ver este curso,
se le pide al estudiante conocimientos en JAVA, ya que, en caso del estudiante
no saberlo, debe crearse todo un apartado completo en el que se le enseñe al
estudiante a programar en JAVA, y luego a introducirse en el contenido de
J2ME. Es por esta razón que se supondrán conocimientos del estudiante en
JAVA, y no se harán mayores profundizaciones en conceptos básicos de JAVA
como clase, método, herencia, etc.
Cuando se crea una aplicación usando el perfil MIDP, se crea un MIDlet. Estos
MIDlets son pequeñas aplicaciones que están destinadas a correr, como lo
habíamos dicho antes, en dispositivos con muy pocas características tanto
gráficas como de memoria y de procesamiento. Y cuando los queremos
ejecutar en nuestro dispositivo móvil, no contamos con una plataforma en la
que copiamos comandos para su ejecución (como el “símbolo del sistema” de
Windows), sino que es usado un software adicional para controlar la ejecución
e instalación del MIDlet. Este software ya lo habíamos visto antes, se trata del
gestor de aplicaciones y lo estudiaremos con más profundidad a continuación,
ya que define el ciclo de vida de nuestra aplicación.
2 Programación de dispositivos móviles
Semana 3
EL GESTOR DE APLICACIONES
El AMS (Aplication Management System), o el gestor de aplicaciones, es el
encargado de todos los procesos relacionados con los MIDlets. Este software
lo contienen los propios dispositivos móviles (es un requerimiento para poder
estar dentro de la configuración CLDC) y es el que ejecuta, pausa la instalación
o destruye los MIDlets que tengamos instalados en nuestro dispositivo. Esa
gestión de MIDlets por parte del AMS se puede agrupar en 2 bloques
importantes, a saber:
 Gestión del ciclo de vida del MIDlet
 Control de los estados por los que pasa el MIDlet cuando está siendo
ejecutado por el dispositivo.
Estudiemos con más detenimiento estos procesos
 El ciclo de vida de un MIDlet.
En la unidad 1, vimos el ciclo de vida de un MIDlet, compuesto por 5 estados
específicos:
o Descubrimiento
o Instalación
o Ejecución
o Actualización
o Borrado
Nombraremos nuevamente estos elementos debido a que requerimos
recordarlos por los temas que se verán en esta unidad
3 Programación de dispositivos móviles
Semana 3
El AMS gestiona cada una de estas fases de la siguiente manera:
1. Descubrimiento:
El gestor de aplicaciones, recordemos, no es un navegador. Nuestro
navegador es alguno basado, por ejemplo, en comunicación WAP, y es
el encargado de detectar la aplicación a descargar. La dirección donde
se encuentra el MIDlet se transfiere al AMD, y en ese punto, el gestor
nos permite seleccionar las aplicaciones a descargar. Esto significa que
el gestor de aplicaciones debe tener una opción que nos permita
visualizar los diversos MIDlets o las diversas aplicaciones que queremos
instalar en nuestro dispositivo. Luego de seleccionado el MIDlet, el AMS
debe gestionar la descarga del mismo, dependiendo de las capacidades
del dispositivo, es decir, podemos descargar a través de conexión a
4 Programación de dispositivos móviles
Semana 3
internet, o a través de cable físico, cualquier otra tecnología que nos
permita transferir archivos.
2. Instalación:
En el momento en que termina la descarga del MIDlet en el dispositivo,
procedemos a instalarlo. Toda la información o cualquier problema que
surja en este proceso, debe ser informado al usuario en la ventana del
dispositivo móvil. Se dice que el MIDlet está instalado en el dispositivo
de manera correcta cuando todas sus clases, sus archivos y elementos
adicionales están preparados y listos para ser usados.
3. Ejecución:
El AMS nos permite, así como el control de la instalación del MIDlet, la
ejecución del mismo. Recordemos que los MIDlets se deben ejecutar en
una SandBox por seguridad. También podemos anotar en este caso,
que el AMS controla los estados del MIDlet mientras se está ejecutando.
El estudio de estos estados lo llevaremos a cabo en breve.
4. Actualización:
Si tenemos en nuestro dispositivo móvil una aplicación cuya versión es
igual, menor o mayor que la que estamos instalando, el AMS debe ser
capaz de detectarlo, y no solo eso, sino informarle al usuario la
existencia de una versión diferente a la que se pretende instalar. Aparte
de eso, le debe dar la opción al usuario de escoger si desea en realidad
generar la actualización o no.
5 Programación de dispositivos móviles
Semana 3
5. Borrado:
Finalmente, cuando no queremos un MIDlet instalado en el dispositivo,
procedemos a su eliminación. Esta eliminación también es administrada
por el AMS, quien indica el MIDlet a desinstalar, la opción de cancelar la
desinstalación, y en caso de éxito, el aviso de haberse realizado, así
como también cualquier eventualidad sobre el proceso.
Cuando se instala un MIDlet en un dispositivo, el MIDlet no desaparece en
caso de que el dispositivo se apague o que se cierre la aplicación. Esta
permanece instalada en el dispositivo tanto tiempo como el usuario desee,
pues se aloja en una porción de la memoria no volátil del aparato. Es el usuario
el que escoge el momento en que desea que la aplicación desaparezca, y en
ese momento es que interviene el AMS para ubicarse en el quinto estado del
MIDlet
Estados de un MIDlet en fase de ejecución
Ubiquémonos en la fase 3 del MIDlet, la fase de ejecución. Hemos dicho que
en esta fase, el AMS controla los estados de la aplicación. ¿Cuáles estados?
Primero, el MIDlet en tiempo de ejecución se carga en la memoria volátil del
dispositivo, para ser ejecutado. Este estado es llamado el estado “Activo” del
MIDlet. En la memoria del dispositivo es donde se puede hacer la transición de
estados. Digamos que estamos ejecutando nuestro MIDlet, y nos llega un
mensaje o una llamada. Estos elementos son prioritarios para el usuario, por lo
que el usuario procederá a contestar la llamada. ¿Qué pasa entonces con el
MIDlet que está siendo ejecutado? Es transferido a otro estado funcional, el
estado “Pausa”. Esto significa que el AMS debe tener la posibilidad de
reaccionar ante eventos externos y cambiar el estado del MIDlet respecto a
6 Programación de dispositivos móviles
Semana 3
dichos eventos. Si volvemos a la aplicación, se pasa del estado “Pausa” al
estado “Activo”. Ahora, hemos dejado de usar nuestro MIDlet y deseamos
cerrarlo, ¿Qué hacemos? Procedemos a cerrarlo. En este caso, el AMS pasa
del estado “Activo” al estado “destruido”. El estado “Destruido” en ningún
momento significa que se borre la aplicación, sino que, como dijimos antes, el
MIDlet está cargado en memoria volátil para poder funcionar. Lo que hacemos
es liberar el espacio de memoria que está usando el MIDlet para que lo use
otra aplicación o para que quede libre. La aplicación como tal permanece
todavía en la memoria no volátil y puede ser invocada en cualquier momento,
es decir, puede ser puesta en estado activo en cualquier momento.
Recapitulando entonces, un MIDlet en la fase 3, y cuando se encuentra
montado en memoria, pasa por 3 estados diferentes:
 Activo: El MIDlet se encuentra en fase de ejecución.
 Pausa: El MIDlet no se encuentra en ejecución, pero se encuentra
todavía montado en memoria. En este caso, el MIDlet no puede usar
ningún recurso compartido, ya que para hacerlo, debe estar en modo
activo.
 Destruido: El MIDlet ya no se encuentra en ejecución y se libera la
memoria que está usando. Se debe anotar que este es el estado final de
un MIDlet, y que de acá no puede transitar a otros estados.
Podemos ver los estados de transición en la fase 3 de un MIDlet típico, con sus
respectivos métodos.
7 Programación de dispositivos móviles
Semana 3
Si observamos el diagrama, nos damos cuenta que el MIDlet cambia de
estados cuando llama a los métodos MIDlet.startApp(), MIDlet.pauseApp() y
MIDlet.destroyApp(). El gestor de aplicaciones hace uso entonces de las
llamadas a cualquiera de estos métodos para cambiar el estado del MIDlet en
el momento en que se requiera, o cuando exista un evento externo. De la
misma manera, un MIDlet puede cambiar su estado por sí mismo.
Cuando un MIDlet es ejecutado normalmente, pasa por una serie de estados
típicos, como una especie de recorrido normal, en el que el AMS tiene mucho
que ver. Lo primero que se hace es que se hace una llamada al constructor del
MIDlet, el cual pasa a un estado de “Pausa” por un pequeño momento. En ese
momento, el AMS se prepara para el alojo del MIDlet creándole una instancia.
Cuando la instancia está lista, el dispositivo se encuentra listo para ejecutar el
MIDlet, por lo que el AMS invoca al método MIDlet.startApp(), poniendo la
aplicación en estado activo. Cuando se encuentra en estado activo, el MIDlet
usa todos los recursos que necesita para ser ejecutado, y permanece así por
un periodo de tiempo que depende del usuario, de un evento externo, o de un
evento interno que lo fuerce a cambiar de estado. En caso de que ocurra
8 Programación de dispositivos móviles
Semana 3
alguna eventualidad, o el usuario lo desee, el MIDlet pasa a un estado de
“Pausa”. En este estado, el AMS se encarga de que el MIDlet consuma la
menor cantidad de memoria posible. Mientras la aplicación permanezca en
estado “Activo” o “Pausa”, puede pasar en cualquier momento al estado
“Destruído”, ya sea porque el usuario lo cerró, o porque se invoca una
aplicación más prioritaria que necesita los recursos que está consumiendo el
MIDlet. Es entonces cuando el AMS genera una llamada al método
MIDlet.destroyApp(), liberando todos los recursos usados por la aplicación para
disponerlos a otros usos
EL PAQUETE JAVAX.MICROEDITION.MIDLET
El paquete javax.microedition.midlet es el encargado de definir las aplicaciones
MIDP y la forma en que estas se comportan con respecto al entorno en que se
ejecutan. Toda aplicación creada usando la configuración MIDP es un MIDlet,
como lo anotamos anteriormente. La clases que trae este paquete son
esencialmente 2, y se observan en la siguiente tabla:
Cada una de esas clases posee sus propios métodos. Conozcámoslos para
saber cuáles son nuestras herramientas al montar MIDlets.
Clase MIDlet
La clase midlet se nombra de la siguiente manera:
9 Programación de dispositivos móviles
Semana 3
 PUBLIC ABSTRACT CLASS MIDLET
Cuando ejecutamos un MIDlet, la aplicación debe extender a esta clase, con el
propósito de que el AMS pueda gestionar los estados de la aplicación y pueda
acceder a las propiedades de la misma. También se la del caso en que el
MIDlet pueda realizar cambios de estado, si invoca los métodos apropiados
para ello. Los métodos que posee esta primera clase se pueden ver a
continuación:
 protected MIDlet()
Este método es un constructor de clases sin argumentos. En caso de
que la llamada a este constructor falle, se lanza la excepción
SecurityException.
 public final int checkPermission(String permiso)
Los permisos poseen estados. Estos estados pueden ser consultados
con este método, que se encuentra descrito en el atributo MIDlet-
permission, escrito en el archivo JAD. Si el permiso por el que se
pregunta su estado no existe, el método devuelve un 0, pero si el estado
del permiso no se puede conocer porque de alguna manera el usuario
debe generar alguna acción, el método devuelve un -1. Los 3 estados
que puede tener este método son:
• 1 Si el permiso es permitido
• 0 si el permiso es denegado
• -1 si el permiso es desconocido.
10 Programación de dispositivos móviles
Semana 3
 protected abstract void destroyApp(boolean incondicional)
throws MIDletstateChangeException
Mediante este método, se indica la terminación del MIDlet, es decir, su
traspaso al estado “destruido”. Recordemos que en este estado el
MIDlet debe liberar todos los recursos que esté usando, y
adicionalmente, debe salvar cualquier dato que sea necesario guardar
en la memoria no volátil. Este método solo puede ser llamado desde el
estado “Activo” o desde el estado “Pausa”.
Vemos que existe una variable booleana como incondicional. Si esta
booleana es false, el MIDlet tiene la posibilidad de lanzar la excepción
MIDletstateChangeException, con el objetivo de indicar la imposibilidad
de destruir el MIDlet en dicho momento. Si es true, el MIDlet asume su
estado como destruido sin importar la forma en la que finalice el método.
 public final String getAppProperty(String key)
Recordemos que los MIDlets tienen propiedades en sus archivos .JAD y
manifest. Este método me permite recopilar de ellos el valor de una
propiedad determinada, que se escribe en el parámetro “key”. El método
tiene como respuesta una string con la propiedad escrita en “key”, pero
en caso de que la propiedad como tal no exista, devuelve un “Null”. Si
“key” es “null”, la aplicación lanza la excepción NullPointerException
11 Programación de dispositivos móviles
Semana 3
 public final void notifyDestroyed()
Mediante este método le indicamos a la AMS que el MIDlet ha entrado al
estado “Destruido”. Cuando se invoca este método, todos los recursos
ocupados por el MIDlet son liberados por este, de la misma manera que
si se invocara el método MIDletdestroyApp (). Con este método, el AMS
considera que todos los recursos que antes ocupaba el MIDlet han sido
liberados y están disponibles.
 public final void notifyPaused()
Con este método se le indica al AMS que la aplicación no desea estar
activa, y que ha entrado en el estado de “Pausa”. Este método no puede
ser invocado en el estado “Pause”, sino que solo puede ser invocado
desde el estado “Activo”. Cuando se invoca este método, para volver al
estado activo, se llama al método MIDlet.startApp(), o para ser destruido
se usa el método MIDlet.destroyApp(). Si es el programa el que se para
por sí mismo, se requiere llamar al método MIDlet.resumeRequest() para
poder volver al estado de actividad
 protected abstract void pauseApp()
A través de este método, el MIDlet entra en estado de “Pausa”. Al igual
que en el método anterior, solo puede ser llamado cuando el MIDlet está
activo. En caso de que ocurra un error en tiempo de ejecución, una
excepción RuntimeException mientras se llama el método
MIDlet.pauseApp(), el MIDlet pasa a ser destruido inmediatamente,
12 Programación de dispositivos móviles
Semana 3
llamándose a su método MIDLet.destroyApp() para liberar los recursos
que están ocupados por la aplicación destruída.
 public final boolean platformRequest(String url)
Se establece una conexión directa entre el MIDlet y la dirección url
dentro de los paréntesis. Dependiendo del contenido presente en la
URL, el dispositivo ejecutará una aplicación determinada que sea capaz
de leer el contenido de la URL e interactúe con él.
Digamos que, por ejemplo, la URL hace referencia a un archivo .JAR y
.JAD. En este caso, el dispositivo entenderá que debe comenzar una
descarga de un MIDlet y comenzará el proceso. Si por ejemplo la URL
posee el formato tel<numero>, nuestro dispositivo entiende y genera una
llamada telefónica.
 public final void resumeRequest()
A través de este método, el MIDlet le comunica al AMS su deseo de
pasar al estado “Activo”. Es el mecaniso mediante el cual el MIDlet se
comunica con la AMS indicando su deseo de pasar a “Activo”. Con este
método, el AMS determina cuales aplicaciones son las encargadas de
pasar al estado “Activo” invocando el método MIDlet.starApp()
 protected abstract void startApp() throws
MIDletstateChangeException
13 Programación de dispositivos móviles
Semana 3
Con este método, se le comunica al MIDlet que se ha entrado en el
estado “Activo” y solo puede invocarse cuando la aplicación se
encuentra en estado “Pause”. Si El MIDlet no puede pasar al estado
“activo” en ese momento, sino en un estado posterior (una aplicación de
mayor prioridad se encuentra ejecutándose), se lanza la excepción
MIDletstateChangeException. Estos métodos crean una comunicación
entre el MIDlet y el AMS: Mientras los métodos StartApp(), PauseApp() y
destroyApp() los usa el AMS para comunicarle información al MIDlet, los
métodos, ResumeRequest(), NotifyPaused() y NotifyDestroyed() son
usados por el MIDlet para comunicarse con el AMS.
En la siguiente tabla se ve el resumen de los métodos contenidos en la
clase MIDlet
Clase MIDletChangeStateException
 public class MIDletstateChangeException extends Exception
14 Programación de dispositivos móviles
Semana 3
Es una excepción que se lanza en el momento en que ocurre un cambio
en el estado de un MIDlet.
ESTRUCTURA DE LOS MIDLETS
En este momento, ya sabemos los estados de un MIDlet, su estructura, ciclo de
vida, clases, métodos y acciones. Es hora de ver el elemento final del curso,
cuyo objetivo es poder montar una aplicación en un dispositivo móvil, es decir,
veremos la estructura de un código que contiene un dispositivo móvil
Un MIDlet, al igual que un applet, carece totalmente de una función main(),
como otras aplicaciones de JAVA. Si la contuviera, el gestor de aplicaciones
únicamente la ignoraría y seguiría adelante con el código. En caso de hacer
uso de la estructura System.exit() se produciría la excepción
SecurityExcepcion.
Sabiendo estos elementos básicos, observemos ahora la estructura general de
un MIDlet en código de JAVA
import javax.microedition.midlet.*
public class MiMidlet extends MIDlet
public MiMidlet() {
/* En este punto construimos nuestra clase e inicializamos
nuestras variables
*/
}
public startApp(){
/* En este punto se copia el código que queremos que el MIDlet
ejecute, es decir, es el core o nucleo de nuestra aplicación.
15 Programación de dispositivos móviles
Semana 3
*/
}
public pauseApp(){
/* En este punto escribimos el código que queremos que ejecute
el MIDlet cuando entre en estado de pausa. Este punto es
opcional
*/
}
public destroyApp(){
/* En este punto copiamos el código que queremos que el MIDlet
ejecute cuando sea destruido. Generalmente acá liberamos
espacios de memoria. (Opcional)
*/
}
Estos métodos son obligatorios para cualquier MIDlet a crear. Debemos tener
en cuenta que la clase creada debe heredar de la clase MIDlet, y que esta
clase tiene 3 métodos abstractos, a saber: startApp(), pauseApp() y
destroyApp()
EJEMPLO PRÁCTICO
Crearemos ahora nuestro primer MIDlet. Sabiendo la estructura que tienen los
respectivos MIDlets, podemos ver reflejado todo ese conocimiento en nuestra
primera aplicación. Veamos la estructura del mismo, y dejemos el lenguaje
para un MIDlet más avanzado. Con este ejemplo tratamos de desarrollar un
MIDlet básico que tendrá la estructura de todos aquellos que el aprendiz
desarrollará en adelante, con su estudio e investigación. .
16 Programación de dispositivos móviles
Semana 3
Como un primer ejemplo, haremos una aplicación llamada “HolaMundo”, cuyo
código se muestra luego de la explicación. Es en este ejemplo donde vemos la
estructura interna del los MIDlets que vimos en el apartado superior. El
constructor lo usaremos para crear los objetos poseídos por nuestra aplicación,
y para crear también la referencia que se relaciona con la pantalla de nuestro
dispositivo. En el método startApp() activamos la pantalla de nuestro
programa. En el método pauseApp() estará vacío ya que no haremos uso de él,
aunque podríamos usarlo para emitir un mensaje al usuario que le indique que
la aplicación está pausada. En el método destroyApp(), liberamos los recursos
de memora y notificamos al AMS que el MIDlet ha sido destruido.
El código es el siguiente:
}
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class HolaMundo extends MIDlet{
private Display pantalla;
private Form formulario = null;
public HolaMundo(){
pantalla = Display.getDisplay(this);
formulario = new Form(“Hola Mundo”);
}
public void startApp(){
pantalla.setCurrent(formulario);
}
public void pauseApp(){
}
public void destroyApp(boolean unconditional){
17 Programación de dispositivos móviles
Semana 3
pantalla = null;
formulario = null;
notifyDestroyed();
}
}
Y la forma en la que se despliega es la siguiente:

More Related Content

What's hot

2023 May Patch Tuesday
2023 May Patch Tuesday2023 May Patch Tuesday
2023 May Patch TuesdayIvanti
 
DIFERENCIAS Y COMPARACIONES DE SOFTWARE LIBRE
DIFERENCIAS Y COMPARACIONES DE SOFTWARE LIBRE DIFERENCIAS Y COMPARACIONES DE SOFTWARE LIBRE
DIFERENCIAS Y COMPARACIONES DE SOFTWARE LIBRE FreddaAlessandraNezR
 
Virtual reality
Virtual realityVirtual reality
Virtual realityAmit Sinha
 
2023 February Patch Tuesday
2023 February Patch Tuesday2023 February Patch Tuesday
2023 February Patch TuesdayIvanti
 
Augmented Reality: Envisioning the Future of Tomorrow
Augmented Reality: Envisioning the Future of TomorrowAugmented Reality: Envisioning the Future of Tomorrow
Augmented Reality: Envisioning the Future of TomorrowAnna Harris
 
Presentación sobre Microsoft
Presentación sobre MicrosoftPresentación sobre Microsoft
Presentación sobre MicrosoftCarlos Arcaya
 
Ventajas y desvetajas de Android
Ventajas y desvetajas de AndroidVentajas y desvetajas de Android
Ventajas y desvetajas de AndroidGore Ochoa
 
Virtual reality
Virtual realityVirtual reality
Virtual realityyp95
 
VR - Virtual reality
VR - Virtual realityVR - Virtual reality
VR - Virtual realityRohit Jain
 
Arquitectura android
Arquitectura androidArquitectura android
Arquitectura androidalerop
 
Android Operating System
Android Operating SystemAndroid Operating System
Android Operating Systemrenoy reji
 

What's hot (12)

2023 May Patch Tuesday
2023 May Patch Tuesday2023 May Patch Tuesday
2023 May Patch Tuesday
 
DIFERENCIAS Y COMPARACIONES DE SOFTWARE LIBRE
DIFERENCIAS Y COMPARACIONES DE SOFTWARE LIBRE DIFERENCIAS Y COMPARACIONES DE SOFTWARE LIBRE
DIFERENCIAS Y COMPARACIONES DE SOFTWARE LIBRE
 
Virtual reality
Virtual realityVirtual reality
Virtual reality
 
2023 February Patch Tuesday
2023 February Patch Tuesday2023 February Patch Tuesday
2023 February Patch Tuesday
 
Augmented Reality: Envisioning the Future of Tomorrow
Augmented Reality: Envisioning the Future of TomorrowAugmented Reality: Envisioning the Future of Tomorrow
Augmented Reality: Envisioning the Future of Tomorrow
 
Presentación sobre Microsoft
Presentación sobre MicrosoftPresentación sobre Microsoft
Presentación sobre Microsoft
 
Ventajas y desvetajas de Android
Ventajas y desvetajas de AndroidVentajas y desvetajas de Android
Ventajas y desvetajas de Android
 
Sistema operativo linux
Sistema operativo linux Sistema operativo linux
Sistema operativo linux
 
Virtual reality
Virtual realityVirtual reality
Virtual reality
 
VR - Virtual reality
VR - Virtual realityVR - Virtual reality
VR - Virtual reality
 
Arquitectura android
Arquitectura androidArquitectura android
Arquitectura android
 
Android Operating System
Android Operating SystemAndroid Operating System
Android Operating System
 

Similar to Los MIDlets (20)

Los mi dlets_imprimible
Los mi dlets_imprimibleLos mi dlets_imprimible
Los mi dlets_imprimible
 
Proyecto final pdm
Proyecto final pdmProyecto final pdm
Proyecto final pdm
 
Midlets con J2ME
Midlets con J2MEMidlets con J2ME
Midlets con J2ME
 
Mi dlet
Mi dletMi dlet
Mi dlet
 
Headless Applications
Headless ApplicationsHeadless Applications
Headless Applications
 
Unidad 5 Programación de dispositivos moviles
Unidad 5 Programación de dispositivos movilesUnidad 5 Programación de dispositivos moviles
Unidad 5 Programación de dispositivos moviles
 
Maestrosdelweb guia-android
Maestrosdelweb guia-androidMaestrosdelweb guia-android
Maestrosdelweb guia-android
 
Guía Android
Guía AndroidGuía Android
Guía Android
 
Mdw guia-android-1.3
Mdw guia-android-1.3Mdw guia-android-1.3
Mdw guia-android-1.3
 
Mdw guia-android
Mdw guia-androidMdw guia-android
Mdw guia-android
 
Maestrosdelweb guia-android
Maestrosdelweb guia-androidMaestrosdelweb guia-android
Maestrosdelweb guia-android
 
Mdw guia-android-1.3
Mdw guia-android-1.3Mdw guia-android-1.3
Mdw guia-android-1.3
 
Android
AndroidAndroid
Android
 
Cuestionario
CuestionarioCuestionario
Cuestionario
 
Ciclo de vida de una app Android
Ciclo de vida de una app AndroidCiclo de vida de una app Android
Ciclo de vida de una app Android
 
Cuestionario
CuestionarioCuestionario
Cuestionario
 
Curso android desarrollo de aplicaciones moviles
Curso android   desarrollo de aplicaciones movilesCurso android   desarrollo de aplicaciones moviles
Curso android desarrollo de aplicaciones moviles
 
Mdw guia-android-1.3
Mdw guia-android-1.3Mdw guia-android-1.3
Mdw guia-android-1.3
 
Proteccion android
Proteccion androidProteccion android
Proteccion android
 
J2ME
J2MEJ2ME
J2ME
 

More from CESAR A. RUIZ C

revista Peón de rey 2015
revista Peón de rey 2015revista Peón de rey 2015
revista Peón de rey 2015CESAR A. RUIZ C
 
Física II Valero_Michel
Física II Valero_MichelFísica II Valero_Michel
Física II Valero_MichelCESAR A. RUIZ C
 
C plus plus for hackers it security
C plus plus for hackers it securityC plus plus for hackers it security
C plus plus for hackers it securityCESAR A. RUIZ C
 
Manual paso a para desarrollar practica B creatic
Manual  paso a para desarrollar practica B   creaticManual  paso a para desarrollar practica B   creatic
Manual paso a para desarrollar practica B creaticCESAR A. RUIZ C
 
Estadística Ciencias Sociales y del Comportamiento Haroldo Elorza
Estadística Ciencias Sociales y del Comportamiento Haroldo ElorzaEstadística Ciencias Sociales y del Comportamiento Haroldo Elorza
Estadística Ciencias Sociales y del Comportamiento Haroldo ElorzaCESAR A. RUIZ C
 
Estadística Diseño de encuestas, cuestionarios C. Sociales 011
Estadística Diseño de encuestas, cuestionarios C. Sociales 011Estadística Diseño de encuestas, cuestionarios C. Sociales 011
Estadística Diseño de encuestas, cuestionarios C. Sociales 011CESAR A. RUIZ C
 
Estadística Resumen de Fórmulas EXCEL
Estadística Resumen de Fórmulas EXCELEstadística Resumen de Fórmulas EXCEL
Estadística Resumen de Fórmulas EXCELCESAR A. RUIZ C
 
Estadística Cálculo de Media y desviación 009
Estadística Cálculo de Media y desviación 009Estadística Cálculo de Media y desviación 009
Estadística Cálculo de Media y desviación 009CESAR A. RUIZ C
 
Estadística Medidas descriptivas de la distribución... 008
Estadística Medidas descriptivas de la distribución... 008Estadística Medidas descriptivas de la distribución... 008
Estadística Medidas descriptivas de la distribución... 008CESAR A. RUIZ C
 
Estadística Distribución de frecuencias y gráficas Estadística 007
Estadística Distribución de frecuencias y gráficas Estadística 007Estadística Distribución de frecuencias y gráficas Estadística 007
Estadística Distribución de frecuencias y gráficas Estadística 007CESAR A. RUIZ C
 
Estadística Porcentajes, proporciones, razones
Estadística Porcentajes, proporciones, razonesEstadística Porcentajes, proporciones, razones
Estadística Porcentajes, proporciones, razonesCESAR A. RUIZ C
 
Estadística El proceso de datos y su descripción 005
Estadística El proceso de datos y su descripción 005Estadística El proceso de datos y su descripción 005
Estadística El proceso de datos y su descripción 005CESAR A. RUIZ C
 
Estadística Por qué se estudia estadística 004
Estadística Por qué se estudia estadística 004Estadística Por qué se estudia estadística 004
Estadística Por qué se estudia estadística 004CESAR A. RUIZ C
 
Estadística Qué es la estadística? 003
Estadística Qué es la estadística? 003Estadística Qué es la estadística? 003
Estadística Qué es la estadística? 003CESAR A. RUIZ C
 
Estadística Introducción 002
Estadística Introducción 002Estadística Introducción 002
Estadística Introducción 002CESAR A. RUIZ C
 
Estadística Elementos Básicos de la Hoja de Cálculo 012
Estadística Elementos Básicos de la Hoja de Cálculo 012Estadística Elementos Básicos de la Hoja de Cálculo 012
Estadística Elementos Básicos de la Hoja de Cálculo 012CESAR A. RUIZ C
 
Decreto Salario docentes 2013 Colombia
Decreto Salario docentes 2013 ColombiaDecreto Salario docentes 2013 Colombia
Decreto Salario docentes 2013 ColombiaCESAR A. RUIZ C
 

More from CESAR A. RUIZ C (20)

revista Peón de rey 2015
revista Peón de rey 2015revista Peón de rey 2015
revista Peón de rey 2015
 
Física II Valero_Michel
Física II Valero_MichelFísica II Valero_Michel
Física II Valero_Michel
 
Física I Michel Valero
Física I Michel ValeroFísica I Michel Valero
Física I Michel Valero
 
C plus plus for hackers it security
C plus plus for hackers it securityC plus plus for hackers it security
C plus plus for hackers it security
 
Manual paso a para desarrollar practica B creatic
Manual  paso a para desarrollar practica B   creaticManual  paso a para desarrollar practica B   creatic
Manual paso a para desarrollar practica B creatic
 
Estadística Ciencias Sociales y del Comportamiento Haroldo Elorza
Estadística Ciencias Sociales y del Comportamiento Haroldo ElorzaEstadística Ciencias Sociales y del Comportamiento Haroldo Elorza
Estadística Ciencias Sociales y del Comportamiento Haroldo Elorza
 
Estadística Diseño de encuestas, cuestionarios C. Sociales 011
Estadística Diseño de encuestas, cuestionarios C. Sociales 011Estadística Diseño de encuestas, cuestionarios C. Sociales 011
Estadística Diseño de encuestas, cuestionarios C. Sociales 011
 
Estadística Resumen de Fórmulas EXCEL
Estadística Resumen de Fórmulas EXCELEstadística Resumen de Fórmulas EXCEL
Estadística Resumen de Fórmulas EXCEL
 
Estadística Cálculo de Media y desviación 009
Estadística Cálculo de Media y desviación 009Estadística Cálculo de Media y desviación 009
Estadística Cálculo de Media y desviación 009
 
Estadística Medidas descriptivas de la distribución... 008
Estadística Medidas descriptivas de la distribución... 008Estadística Medidas descriptivas de la distribución... 008
Estadística Medidas descriptivas de la distribución... 008
 
Estadística Distribución de frecuencias y gráficas Estadística 007
Estadística Distribución de frecuencias y gráficas Estadística 007Estadística Distribución de frecuencias y gráficas Estadística 007
Estadística Distribución de frecuencias y gráficas Estadística 007
 
Estadística Porcentajes, proporciones, razones
Estadística Porcentajes, proporciones, razonesEstadística Porcentajes, proporciones, razones
Estadística Porcentajes, proporciones, razones
 
Estadística El proceso de datos y su descripción 005
Estadística El proceso de datos y su descripción 005Estadística El proceso de datos y su descripción 005
Estadística El proceso de datos y su descripción 005
 
Estadística Por qué se estudia estadística 004
Estadística Por qué se estudia estadística 004Estadística Por qué se estudia estadística 004
Estadística Por qué se estudia estadística 004
 
Estadística Qué es la estadística? 003
Estadística Qué es la estadística? 003Estadística Qué es la estadística? 003
Estadística Qué es la estadística? 003
 
Estadística Introducción 002
Estadística Introducción 002Estadística Introducción 002
Estadística Introducción 002
 
Estadística Indice 001
Estadística Indice 001Estadística Indice 001
Estadística Indice 001
 
Estadística Elementos Básicos de la Hoja de Cálculo 012
Estadística Elementos Básicos de la Hoja de Cálculo 012Estadística Elementos Básicos de la Hoja de Cálculo 012
Estadística Elementos Básicos de la Hoja de Cálculo 012
 
Drm estadistica
Drm estadisticaDrm estadistica
Drm estadistica
 
Decreto Salario docentes 2013 Colombia
Decreto Salario docentes 2013 ColombiaDecreto Salario docentes 2013 Colombia
Decreto Salario docentes 2013 Colombia
 

Recently uploaded

Día de la Madre Tierra-1.pdf día mundial
Día de la Madre Tierra-1.pdf día mundialDía de la Madre Tierra-1.pdf día mundial
Día de la Madre Tierra-1.pdf día mundialpatriciaines1993
 
PLANIFICACION ANUAL 2024 - INICIAL UNIDOCENTE.docx
PLANIFICACION ANUAL 2024 - INICIAL UNIDOCENTE.docxPLANIFICACION ANUAL 2024 - INICIAL UNIDOCENTE.docx
PLANIFICACION ANUAL 2024 - INICIAL UNIDOCENTE.docxJUANSIMONPACHIN
 
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARONARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFAROJosé Luis Palma
 
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024gharce
 
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...fcastellanos3
 
La evolucion de la especie humana-primero de secundaria
La evolucion de la especie humana-primero de secundariaLa evolucion de la especie humana-primero de secundaria
La evolucion de la especie humana-primero de secundariamarco carlos cuyo
 
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdf
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdfBIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdf
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdfCESARMALAGA4
 
c3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptx
c3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptxc3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptx
c3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptxMartín Ramírez
 
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptxLINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptxdanalikcruz2000
 
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJO
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJOTUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJO
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJOweislaco
 
Estrategia de Enseñanza y Aprendizaje.pdf
Estrategia de Enseñanza y Aprendizaje.pdfEstrategia de Enseñanza y Aprendizaje.pdf
Estrategia de Enseñanza y Aprendizaje.pdfromanmillans
 
periodico mural y sus partes y caracteristicas
periodico mural y sus partes y caracteristicasperiodico mural y sus partes y caracteristicas
periodico mural y sus partes y caracteristicas123yudy
 
CIENCIAS NATURALES 4 TO ambientes .docx
CIENCIAS NATURALES 4 TO  ambientes .docxCIENCIAS NATURALES 4 TO  ambientes .docx
CIENCIAS NATURALES 4 TO ambientes .docxAgustinaNuez21
 
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdf
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdfTarea 5_ Foro _Selección de herramientas digitales_Manuel.pdf
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdfManuel Molina
 
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdf
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdfTema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdf
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdfDaniel Ángel Corral de la Mata, Ph.D.
 
Unidad II Doctrina de la Iglesia 1 parte
Unidad II Doctrina de la Iglesia 1 parteUnidad II Doctrina de la Iglesia 1 parte
Unidad II Doctrina de la Iglesia 1 parteJuan Hernandez
 
ÉTICA, NATURALEZA Y SOCIEDADES_3RO_3ER TRIMESTRE.pdf
ÉTICA, NATURALEZA Y SOCIEDADES_3RO_3ER TRIMESTRE.pdfÉTICA, NATURALEZA Y SOCIEDADES_3RO_3ER TRIMESTRE.pdf
ÉTICA, NATURALEZA Y SOCIEDADES_3RO_3ER TRIMESTRE.pdfluisantoniocruzcorte1
 

Recently uploaded (20)

VISITA À PROTEÇÃO CIVIL _
VISITA À PROTEÇÃO CIVIL                  _VISITA À PROTEÇÃO CIVIL                  _
VISITA À PROTEÇÃO CIVIL _
 
Día de la Madre Tierra-1.pdf día mundial
Día de la Madre Tierra-1.pdf día mundialDía de la Madre Tierra-1.pdf día mundial
Día de la Madre Tierra-1.pdf día mundial
 
PLANIFICACION ANUAL 2024 - INICIAL UNIDOCENTE.docx
PLANIFICACION ANUAL 2024 - INICIAL UNIDOCENTE.docxPLANIFICACION ANUAL 2024 - INICIAL UNIDOCENTE.docx
PLANIFICACION ANUAL 2024 - INICIAL UNIDOCENTE.docx
 
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARONARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
 
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
 
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
 
La evolucion de la especie humana-primero de secundaria
La evolucion de la especie humana-primero de secundariaLa evolucion de la especie humana-primero de secundaria
La evolucion de la especie humana-primero de secundaria
 
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdf
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdfBIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdf
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdf
 
c3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptx
c3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptxc3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptx
c3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptx
 
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptxLINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
 
Unidad 3 | Teorías de la Comunicación | MCDI
Unidad 3 | Teorías de la Comunicación | MCDIUnidad 3 | Teorías de la Comunicación | MCDI
Unidad 3 | Teorías de la Comunicación | MCDI
 
TL/CNL – 2.ª FASE .
TL/CNL – 2.ª FASE                       .TL/CNL – 2.ª FASE                       .
TL/CNL – 2.ª FASE .
 
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJO
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJOTUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJO
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJO
 
Estrategia de Enseñanza y Aprendizaje.pdf
Estrategia de Enseñanza y Aprendizaje.pdfEstrategia de Enseñanza y Aprendizaje.pdf
Estrategia de Enseñanza y Aprendizaje.pdf
 
periodico mural y sus partes y caracteristicas
periodico mural y sus partes y caracteristicasperiodico mural y sus partes y caracteristicas
periodico mural y sus partes y caracteristicas
 
CIENCIAS NATURALES 4 TO ambientes .docx
CIENCIAS NATURALES 4 TO  ambientes .docxCIENCIAS NATURALES 4 TO  ambientes .docx
CIENCIAS NATURALES 4 TO ambientes .docx
 
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdf
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdfTarea 5_ Foro _Selección de herramientas digitales_Manuel.pdf
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdf
 
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdf
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdfTema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdf
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdf
 
Unidad II Doctrina de la Iglesia 1 parte
Unidad II Doctrina de la Iglesia 1 parteUnidad II Doctrina de la Iglesia 1 parte
Unidad II Doctrina de la Iglesia 1 parte
 
ÉTICA, NATURALEZA Y SOCIEDADES_3RO_3ER TRIMESTRE.pdf
ÉTICA, NATURALEZA Y SOCIEDADES_3RO_3ER TRIMESTRE.pdfÉTICA, NATURALEZA Y SOCIEDADES_3RO_3ER TRIMESTRE.pdf
ÉTICA, NATURALEZA Y SOCIEDADES_3RO_3ER TRIMESTRE.pdf
 

Los MIDlets

  • 1. 1 Programación de dispositivos móviles Semana 3 LOS MIDLETS Los MIDlets, aunque ya hemos visto de manera superficial qué son y cómo se crean, son en suma las estructuras que crearemos. Es por esto que debemos conocer cuál es la estructura de ellos, sus propiedades fundamentales, cual es el “ciclo de vida” de un MIDlet en un dispositivo móvil, y los estados por los que se desenvuelve el MIDlet en un dispositivo móvil. Como estos son la base de las aplicaciones que se instalan en nuestros dispositivos, debemos conocer también la estructura y funcionamiento del AMS (o gestor de aplicaciones, visto en semanas pasadas). En la semana anterior, aprendimos que la configuración CLDC posee un paquete propio, llamado javax.microedition. De este paquete, estudiaremos el javax.microedition.midlet, para así estructurar el código de nuestra primera aplicación. En los requerimientos para poder ver este curso, se le pide al estudiante conocimientos en JAVA, ya que, en caso del estudiante no saberlo, debe crearse todo un apartado completo en el que se le enseñe al estudiante a programar en JAVA, y luego a introducirse en el contenido de J2ME. Es por esta razón que se supondrán conocimientos del estudiante en JAVA, y no se harán mayores profundizaciones en conceptos básicos de JAVA como clase, método, herencia, etc. Cuando se crea una aplicación usando el perfil MIDP, se crea un MIDlet. Estos MIDlets son pequeñas aplicaciones que están destinadas a correr, como lo habíamos dicho antes, en dispositivos con muy pocas características tanto gráficas como de memoria y de procesamiento. Y cuando los queremos ejecutar en nuestro dispositivo móvil, no contamos con una plataforma en la que copiamos comandos para su ejecución (como el “símbolo del sistema” de Windows), sino que es usado un software adicional para controlar la ejecución e instalación del MIDlet. Este software ya lo habíamos visto antes, se trata del gestor de aplicaciones y lo estudiaremos con más profundidad a continuación, ya que define el ciclo de vida de nuestra aplicación.
  • 2. 2 Programación de dispositivos móviles Semana 3 EL GESTOR DE APLICACIONES El AMS (Aplication Management System), o el gestor de aplicaciones, es el encargado de todos los procesos relacionados con los MIDlets. Este software lo contienen los propios dispositivos móviles (es un requerimiento para poder estar dentro de la configuración CLDC) y es el que ejecuta, pausa la instalación o destruye los MIDlets que tengamos instalados en nuestro dispositivo. Esa gestión de MIDlets por parte del AMS se puede agrupar en 2 bloques importantes, a saber:  Gestión del ciclo de vida del MIDlet  Control de los estados por los que pasa el MIDlet cuando está siendo ejecutado por el dispositivo. Estudiemos con más detenimiento estos procesos  El ciclo de vida de un MIDlet. En la unidad 1, vimos el ciclo de vida de un MIDlet, compuesto por 5 estados específicos: o Descubrimiento o Instalación o Ejecución o Actualización o Borrado Nombraremos nuevamente estos elementos debido a que requerimos recordarlos por los temas que se verán en esta unidad
  • 3. 3 Programación de dispositivos móviles Semana 3 El AMS gestiona cada una de estas fases de la siguiente manera: 1. Descubrimiento: El gestor de aplicaciones, recordemos, no es un navegador. Nuestro navegador es alguno basado, por ejemplo, en comunicación WAP, y es el encargado de detectar la aplicación a descargar. La dirección donde se encuentra el MIDlet se transfiere al AMD, y en ese punto, el gestor nos permite seleccionar las aplicaciones a descargar. Esto significa que el gestor de aplicaciones debe tener una opción que nos permita visualizar los diversos MIDlets o las diversas aplicaciones que queremos instalar en nuestro dispositivo. Luego de seleccionado el MIDlet, el AMS debe gestionar la descarga del mismo, dependiendo de las capacidades del dispositivo, es decir, podemos descargar a través de conexión a
  • 4. 4 Programación de dispositivos móviles Semana 3 internet, o a través de cable físico, cualquier otra tecnología que nos permita transferir archivos. 2. Instalación: En el momento en que termina la descarga del MIDlet en el dispositivo, procedemos a instalarlo. Toda la información o cualquier problema que surja en este proceso, debe ser informado al usuario en la ventana del dispositivo móvil. Se dice que el MIDlet está instalado en el dispositivo de manera correcta cuando todas sus clases, sus archivos y elementos adicionales están preparados y listos para ser usados. 3. Ejecución: El AMS nos permite, así como el control de la instalación del MIDlet, la ejecución del mismo. Recordemos que los MIDlets se deben ejecutar en una SandBox por seguridad. También podemos anotar en este caso, que el AMS controla los estados del MIDlet mientras se está ejecutando. El estudio de estos estados lo llevaremos a cabo en breve. 4. Actualización: Si tenemos en nuestro dispositivo móvil una aplicación cuya versión es igual, menor o mayor que la que estamos instalando, el AMS debe ser capaz de detectarlo, y no solo eso, sino informarle al usuario la existencia de una versión diferente a la que se pretende instalar. Aparte de eso, le debe dar la opción al usuario de escoger si desea en realidad generar la actualización o no.
  • 5. 5 Programación de dispositivos móviles Semana 3 5. Borrado: Finalmente, cuando no queremos un MIDlet instalado en el dispositivo, procedemos a su eliminación. Esta eliminación también es administrada por el AMS, quien indica el MIDlet a desinstalar, la opción de cancelar la desinstalación, y en caso de éxito, el aviso de haberse realizado, así como también cualquier eventualidad sobre el proceso. Cuando se instala un MIDlet en un dispositivo, el MIDlet no desaparece en caso de que el dispositivo se apague o que se cierre la aplicación. Esta permanece instalada en el dispositivo tanto tiempo como el usuario desee, pues se aloja en una porción de la memoria no volátil del aparato. Es el usuario el que escoge el momento en que desea que la aplicación desaparezca, y en ese momento es que interviene el AMS para ubicarse en el quinto estado del MIDlet Estados de un MIDlet en fase de ejecución Ubiquémonos en la fase 3 del MIDlet, la fase de ejecución. Hemos dicho que en esta fase, el AMS controla los estados de la aplicación. ¿Cuáles estados? Primero, el MIDlet en tiempo de ejecución se carga en la memoria volátil del dispositivo, para ser ejecutado. Este estado es llamado el estado “Activo” del MIDlet. En la memoria del dispositivo es donde se puede hacer la transición de estados. Digamos que estamos ejecutando nuestro MIDlet, y nos llega un mensaje o una llamada. Estos elementos son prioritarios para el usuario, por lo que el usuario procederá a contestar la llamada. ¿Qué pasa entonces con el MIDlet que está siendo ejecutado? Es transferido a otro estado funcional, el estado “Pausa”. Esto significa que el AMS debe tener la posibilidad de reaccionar ante eventos externos y cambiar el estado del MIDlet respecto a
  • 6. 6 Programación de dispositivos móviles Semana 3 dichos eventos. Si volvemos a la aplicación, se pasa del estado “Pausa” al estado “Activo”. Ahora, hemos dejado de usar nuestro MIDlet y deseamos cerrarlo, ¿Qué hacemos? Procedemos a cerrarlo. En este caso, el AMS pasa del estado “Activo” al estado “destruido”. El estado “Destruido” en ningún momento significa que se borre la aplicación, sino que, como dijimos antes, el MIDlet está cargado en memoria volátil para poder funcionar. Lo que hacemos es liberar el espacio de memoria que está usando el MIDlet para que lo use otra aplicación o para que quede libre. La aplicación como tal permanece todavía en la memoria no volátil y puede ser invocada en cualquier momento, es decir, puede ser puesta en estado activo en cualquier momento. Recapitulando entonces, un MIDlet en la fase 3, y cuando se encuentra montado en memoria, pasa por 3 estados diferentes:  Activo: El MIDlet se encuentra en fase de ejecución.  Pausa: El MIDlet no se encuentra en ejecución, pero se encuentra todavía montado en memoria. En este caso, el MIDlet no puede usar ningún recurso compartido, ya que para hacerlo, debe estar en modo activo.  Destruido: El MIDlet ya no se encuentra en ejecución y se libera la memoria que está usando. Se debe anotar que este es el estado final de un MIDlet, y que de acá no puede transitar a otros estados. Podemos ver los estados de transición en la fase 3 de un MIDlet típico, con sus respectivos métodos.
  • 7. 7 Programación de dispositivos móviles Semana 3 Si observamos el diagrama, nos damos cuenta que el MIDlet cambia de estados cuando llama a los métodos MIDlet.startApp(), MIDlet.pauseApp() y MIDlet.destroyApp(). El gestor de aplicaciones hace uso entonces de las llamadas a cualquiera de estos métodos para cambiar el estado del MIDlet en el momento en que se requiera, o cuando exista un evento externo. De la misma manera, un MIDlet puede cambiar su estado por sí mismo. Cuando un MIDlet es ejecutado normalmente, pasa por una serie de estados típicos, como una especie de recorrido normal, en el que el AMS tiene mucho que ver. Lo primero que se hace es que se hace una llamada al constructor del MIDlet, el cual pasa a un estado de “Pausa” por un pequeño momento. En ese momento, el AMS se prepara para el alojo del MIDlet creándole una instancia. Cuando la instancia está lista, el dispositivo se encuentra listo para ejecutar el MIDlet, por lo que el AMS invoca al método MIDlet.startApp(), poniendo la aplicación en estado activo. Cuando se encuentra en estado activo, el MIDlet usa todos los recursos que necesita para ser ejecutado, y permanece así por un periodo de tiempo que depende del usuario, de un evento externo, o de un evento interno que lo fuerce a cambiar de estado. En caso de que ocurra
  • 8. 8 Programación de dispositivos móviles Semana 3 alguna eventualidad, o el usuario lo desee, el MIDlet pasa a un estado de “Pausa”. En este estado, el AMS se encarga de que el MIDlet consuma la menor cantidad de memoria posible. Mientras la aplicación permanezca en estado “Activo” o “Pausa”, puede pasar en cualquier momento al estado “Destruído”, ya sea porque el usuario lo cerró, o porque se invoca una aplicación más prioritaria que necesita los recursos que está consumiendo el MIDlet. Es entonces cuando el AMS genera una llamada al método MIDlet.destroyApp(), liberando todos los recursos usados por la aplicación para disponerlos a otros usos EL PAQUETE JAVAX.MICROEDITION.MIDLET El paquete javax.microedition.midlet es el encargado de definir las aplicaciones MIDP y la forma en que estas se comportan con respecto al entorno en que se ejecutan. Toda aplicación creada usando la configuración MIDP es un MIDlet, como lo anotamos anteriormente. La clases que trae este paquete son esencialmente 2, y se observan en la siguiente tabla: Cada una de esas clases posee sus propios métodos. Conozcámoslos para saber cuáles son nuestras herramientas al montar MIDlets. Clase MIDlet La clase midlet se nombra de la siguiente manera:
  • 9. 9 Programación de dispositivos móviles Semana 3  PUBLIC ABSTRACT CLASS MIDLET Cuando ejecutamos un MIDlet, la aplicación debe extender a esta clase, con el propósito de que el AMS pueda gestionar los estados de la aplicación y pueda acceder a las propiedades de la misma. También se la del caso en que el MIDlet pueda realizar cambios de estado, si invoca los métodos apropiados para ello. Los métodos que posee esta primera clase se pueden ver a continuación:  protected MIDlet() Este método es un constructor de clases sin argumentos. En caso de que la llamada a este constructor falle, se lanza la excepción SecurityException.  public final int checkPermission(String permiso) Los permisos poseen estados. Estos estados pueden ser consultados con este método, que se encuentra descrito en el atributo MIDlet- permission, escrito en el archivo JAD. Si el permiso por el que se pregunta su estado no existe, el método devuelve un 0, pero si el estado del permiso no se puede conocer porque de alguna manera el usuario debe generar alguna acción, el método devuelve un -1. Los 3 estados que puede tener este método son: • 1 Si el permiso es permitido • 0 si el permiso es denegado • -1 si el permiso es desconocido.
  • 10. 10 Programación de dispositivos móviles Semana 3  protected abstract void destroyApp(boolean incondicional) throws MIDletstateChangeException Mediante este método, se indica la terminación del MIDlet, es decir, su traspaso al estado “destruido”. Recordemos que en este estado el MIDlet debe liberar todos los recursos que esté usando, y adicionalmente, debe salvar cualquier dato que sea necesario guardar en la memoria no volátil. Este método solo puede ser llamado desde el estado “Activo” o desde el estado “Pausa”. Vemos que existe una variable booleana como incondicional. Si esta booleana es false, el MIDlet tiene la posibilidad de lanzar la excepción MIDletstateChangeException, con el objetivo de indicar la imposibilidad de destruir el MIDlet en dicho momento. Si es true, el MIDlet asume su estado como destruido sin importar la forma en la que finalice el método.  public final String getAppProperty(String key) Recordemos que los MIDlets tienen propiedades en sus archivos .JAD y manifest. Este método me permite recopilar de ellos el valor de una propiedad determinada, que se escribe en el parámetro “key”. El método tiene como respuesta una string con la propiedad escrita en “key”, pero en caso de que la propiedad como tal no exista, devuelve un “Null”. Si “key” es “null”, la aplicación lanza la excepción NullPointerException
  • 11. 11 Programación de dispositivos móviles Semana 3  public final void notifyDestroyed() Mediante este método le indicamos a la AMS que el MIDlet ha entrado al estado “Destruido”. Cuando se invoca este método, todos los recursos ocupados por el MIDlet son liberados por este, de la misma manera que si se invocara el método MIDletdestroyApp (). Con este método, el AMS considera que todos los recursos que antes ocupaba el MIDlet han sido liberados y están disponibles.  public final void notifyPaused() Con este método se le indica al AMS que la aplicación no desea estar activa, y que ha entrado en el estado de “Pausa”. Este método no puede ser invocado en el estado “Pause”, sino que solo puede ser invocado desde el estado “Activo”. Cuando se invoca este método, para volver al estado activo, se llama al método MIDlet.startApp(), o para ser destruido se usa el método MIDlet.destroyApp(). Si es el programa el que se para por sí mismo, se requiere llamar al método MIDlet.resumeRequest() para poder volver al estado de actividad  protected abstract void pauseApp() A través de este método, el MIDlet entra en estado de “Pausa”. Al igual que en el método anterior, solo puede ser llamado cuando el MIDlet está activo. En caso de que ocurra un error en tiempo de ejecución, una excepción RuntimeException mientras se llama el método MIDlet.pauseApp(), el MIDlet pasa a ser destruido inmediatamente,
  • 12. 12 Programación de dispositivos móviles Semana 3 llamándose a su método MIDLet.destroyApp() para liberar los recursos que están ocupados por la aplicación destruída.  public final boolean platformRequest(String url) Se establece una conexión directa entre el MIDlet y la dirección url dentro de los paréntesis. Dependiendo del contenido presente en la URL, el dispositivo ejecutará una aplicación determinada que sea capaz de leer el contenido de la URL e interactúe con él. Digamos que, por ejemplo, la URL hace referencia a un archivo .JAR y .JAD. En este caso, el dispositivo entenderá que debe comenzar una descarga de un MIDlet y comenzará el proceso. Si por ejemplo la URL posee el formato tel<numero>, nuestro dispositivo entiende y genera una llamada telefónica.  public final void resumeRequest() A través de este método, el MIDlet le comunica al AMS su deseo de pasar al estado “Activo”. Es el mecaniso mediante el cual el MIDlet se comunica con la AMS indicando su deseo de pasar a “Activo”. Con este método, el AMS determina cuales aplicaciones son las encargadas de pasar al estado “Activo” invocando el método MIDlet.starApp()  protected abstract void startApp() throws MIDletstateChangeException
  • 13. 13 Programación de dispositivos móviles Semana 3 Con este método, se le comunica al MIDlet que se ha entrado en el estado “Activo” y solo puede invocarse cuando la aplicación se encuentra en estado “Pause”. Si El MIDlet no puede pasar al estado “activo” en ese momento, sino en un estado posterior (una aplicación de mayor prioridad se encuentra ejecutándose), se lanza la excepción MIDletstateChangeException. Estos métodos crean una comunicación entre el MIDlet y el AMS: Mientras los métodos StartApp(), PauseApp() y destroyApp() los usa el AMS para comunicarle información al MIDlet, los métodos, ResumeRequest(), NotifyPaused() y NotifyDestroyed() son usados por el MIDlet para comunicarse con el AMS. En la siguiente tabla se ve el resumen de los métodos contenidos en la clase MIDlet Clase MIDletChangeStateException  public class MIDletstateChangeException extends Exception
  • 14. 14 Programación de dispositivos móviles Semana 3 Es una excepción que se lanza en el momento en que ocurre un cambio en el estado de un MIDlet. ESTRUCTURA DE LOS MIDLETS En este momento, ya sabemos los estados de un MIDlet, su estructura, ciclo de vida, clases, métodos y acciones. Es hora de ver el elemento final del curso, cuyo objetivo es poder montar una aplicación en un dispositivo móvil, es decir, veremos la estructura de un código que contiene un dispositivo móvil Un MIDlet, al igual que un applet, carece totalmente de una función main(), como otras aplicaciones de JAVA. Si la contuviera, el gestor de aplicaciones únicamente la ignoraría y seguiría adelante con el código. En caso de hacer uso de la estructura System.exit() se produciría la excepción SecurityExcepcion. Sabiendo estos elementos básicos, observemos ahora la estructura general de un MIDlet en código de JAVA import javax.microedition.midlet.* public class MiMidlet extends MIDlet public MiMidlet() { /* En este punto construimos nuestra clase e inicializamos nuestras variables */ } public startApp(){ /* En este punto se copia el código que queremos que el MIDlet ejecute, es decir, es el core o nucleo de nuestra aplicación.
  • 15. 15 Programación de dispositivos móviles Semana 3 */ } public pauseApp(){ /* En este punto escribimos el código que queremos que ejecute el MIDlet cuando entre en estado de pausa. Este punto es opcional */ } public destroyApp(){ /* En este punto copiamos el código que queremos que el MIDlet ejecute cuando sea destruido. Generalmente acá liberamos espacios de memoria. (Opcional) */ } Estos métodos son obligatorios para cualquier MIDlet a crear. Debemos tener en cuenta que la clase creada debe heredar de la clase MIDlet, y que esta clase tiene 3 métodos abstractos, a saber: startApp(), pauseApp() y destroyApp() EJEMPLO PRÁCTICO Crearemos ahora nuestro primer MIDlet. Sabiendo la estructura que tienen los respectivos MIDlets, podemos ver reflejado todo ese conocimiento en nuestra primera aplicación. Veamos la estructura del mismo, y dejemos el lenguaje para un MIDlet más avanzado. Con este ejemplo tratamos de desarrollar un MIDlet básico que tendrá la estructura de todos aquellos que el aprendiz desarrollará en adelante, con su estudio e investigación. .
  • 16. 16 Programación de dispositivos móviles Semana 3 Como un primer ejemplo, haremos una aplicación llamada “HolaMundo”, cuyo código se muestra luego de la explicación. Es en este ejemplo donde vemos la estructura interna del los MIDlets que vimos en el apartado superior. El constructor lo usaremos para crear los objetos poseídos por nuestra aplicación, y para crear también la referencia que se relaciona con la pantalla de nuestro dispositivo. En el método startApp() activamos la pantalla de nuestro programa. En el método pauseApp() estará vacío ya que no haremos uso de él, aunque podríamos usarlo para emitir un mensaje al usuario que le indique que la aplicación está pausada. En el método destroyApp(), liberamos los recursos de memora y notificamos al AMS que el MIDlet ha sido destruido. El código es el siguiente: } import javax.microedition.midlet.*; import javax.microedition.lcdui.*; public class HolaMundo extends MIDlet{ private Display pantalla; private Form formulario = null; public HolaMundo(){ pantalla = Display.getDisplay(this); formulario = new Form(“Hola Mundo”); } public void startApp(){ pantalla.setCurrent(formulario); } public void pauseApp(){ } public void destroyApp(boolean unconditional){
  • 17. 17 Programación de dispositivos móviles Semana 3 pantalla = null; formulario = null; notifyDestroyed(); } } Y la forma en la que se despliega es la siguiente: