You are on page 1of 30

PROYECTO FINAL JOSE AUGUSTO MORALES ALZATE PROGRAMACION DISPOSITIVOS MOVILES

Proyecto final

Recomendaciones para presentar la Actividad:


Enva el desarrollo de esta actividad a tu tutor@ en un documento de Word, que llamars
Proyecto final.
Procura marcar siempre tus trabajos con un encabezado como el siguiente:

Nombre JOSE AUGUSTO MORALES ALZATE


Fecha JUNIO 14 DE 2017
Actividad PROYECTO FINAL PDM-2
Tema PROYECTO FINAL MIDLet

Proyecto final

Para este proyecto, es necesario el manual hecho en la actividad 1, los


conceptos relacionados en la actividad 2 y el diagrama hecho en la actividad
3 del MIDLet. Usaremos todos esos conocimientos adquiridos para programar
y ejecutar el MIDLet de ejemplo de la ltima unidad en el software que bajamos
para la actividad 1, usando el diagrama que creamos en la unidad 3 como base,
y teniendo los conceptos definidos en la unidad 2 muy claros. Se debe hacer un
documento en el que se explique, paso por paso, el procedimiento para ejecutar
este MIDlet y proporcionar pantallazos de su funcionamiento en la plataforma
del computador. De esta manera, se comprueba que el aprendiz ha obtenido los
conocimientos bsicos para ejecutar un MIDLet en un dispositivo mvil

MANUAL HECHO EN LA ACTIVIDAD 1

Preguntas interpretativas

Por qu un dispositivo MIDP debe estar conectado a una red, como por ejemplo,
la red WAP? (2 puntos)

Un dispositivo MIDP, por ejemplo un telfono celular, debe estar conectado a una red (o
al menos tener algn tipo de acceso a una red) porque los complementos o aplicaciones
(MIDlets) requeridos para su operacin estn generalmente alojados en uno o ms
servidores remotos, desde los cuales deben ser descargados para ser instalados en el
mismo. Tambin es posible que esos recursos estn disponibles en otro dispositivo mvil
cercano, en cuyo caso tambin se requiere alguna forma de conexin en red para

1 Programacin de dispositivos mviles


Proyecto final
PROYECTO FINAL JOSE AUGUSTO MORALES ALZATE PROGRAMACION DISPOSITIVOS MOVILES

obtenerlos, as sea mediante la creacin de una red adhoc o temporal, como sucede en un
entorno Bluetooth.

En el caso especfico de una red WAP, la conexin entre el dispositivo mvil (que acta
como cliente) y el servidor remoto requiere de un navegador y una pasarela o puerta de
enlace (gateway). Esta ltima constituye la interfaz entre la red inalmbrica y la red fsica
(generalmente Internet), mientras que el navegador constituye la interfaz entre el
dispositivo mvil y el usuario. El navegador WAP le permite al usuario buscar, localizar
y descargar lo que necesita. Adems de navegadores WAP, los dispositivos mviles
modernos cuentan con otras herramientas para descargar contenidos de Internet y otras
redes, incluyendo navegadores ms complejos estilo Google Chrome, as como cables de
datos e interfaces inalmbricas de RF (radiofrecuencia), IR (infrarrojos), etc. Todos estos
escenarios implican transacciones en entornos de red.

Por qu cada configuracin tiene sus propios perfiles? (2 puntos).

Cada tipo de configuracin de Java (CDC o CLDC) tiene sus propios perfiles o conjuntos
de APIs porque cada una utiliza una mquina virtual diferente (CVM o KVM,
respectivamente) y est dirigida a dispositivos con diferentes capacidades
computacionales (alta para CDC y limitada para CLDC). Esto implica que un dispositivo
con configuracin CDC tiene una funcionalidad distinta a la de un dispositivo con
configuracin CLDC, y realiza (o puede realizar) tareas o actividades muy diferentes y/o
con un mayor grado de complejidad. Por esta razn, cada configuracin debe tener y
ejecutar sus propios perfiles, los cuales pueden o no ser compatibles con los perfiles de la
otra configuracin.

Adicionalmente, cada configuracin, con sus perfiles asociados, est dirigida a un


segmento de mercado diferente. Por ejemplo, no se espera que un telfono celular
convencional permita navegar por Internet como un Blackberry, pero s que posibilite el
envo y recepcin de mensajes de texto (SMS), lo cual puede hacer tambin un
Blackberry. En cada caso se maneja una configuracin diferente (CLDC para un celular
convencional y CDC para un Blackberry) y por tanto unos perfiles tambin diferentes.

Preguntas argumentativas

En J2ME, el dispositivo mvil por excelencia es el celular. Argumente esta


afirmacin a partir de la informacin vista en el curso. (2 puntos).

Los telfonos celulares, tanto los convencionales como los inteligentes, son los
dispositivos mviles por excelencia en J2ME por su ubicuidad (estn en todas partes y
disponibles en todo momento) y, principalmente, por la gran cantidad de aplicaciones
que pueden soportar. De hecho, los celulares modernos sirven no solamente para llamar

2 Programacin de dispositivos mviles


Proyecto final
PROYECTO FINAL JOSE AUGUSTO MORALES ALZATE PROGRAMACION DISPOSITIVOS MOVILES

por telfono, en el sentido convencional del trmino, sino que tambin permiten navegar
por Internet, enviar y recibir mensajes de texto y de correo electrnico, usar programas
de computador, jugar, chatear, revisar cuentas bancarias, hacer compras, tomar y guardar
fotografas y videos, leer documentos, mantenerse en contacto con redes sociales y
corporativas, grabar y escuchar msica, sintonizar emisoras de radio, ver televisin, llevar
agendas de contactos y compromisos, etc. Incluso muchos celulares avanzados
incorporan sensores capaces de detectar y enviar datos en tiempo real, tal como la
ubicacin geogrfica o el ritmo cardaco del usuario. Todas estas aplicaciones, unidas a
lo que algunos llaman el techno-lust (el constante deseo de los usuarios por tener gadgets
tecnolgicos cada vez ms llamativos, rpidos y con ms prestaciones), constituyen un
escenario particularmente atractivo y apropiado para la tecnologa J2ME (y obviamente
para los fabricantes y operadores de equipos de telefona celular).

Los telfonos celulares son actualmente los dispositivos mviles ms utilizados del
mundo, por encima de las agendas digitales (PDAs), las computadoras de mano
(palmtops), las consolas de juegos, los buscapersonas (beepers o pagers) y otros
similares. Actualmente hay ms de 1.8 billones de celulares en el planeta, una cifra 3
veces superior a la cantidad de computadores de todo tipo existentes. Las tendencias
indican que este crecimiento continuar a un ritmo vertiginoso y muy pronto los celulares
reemplazarn a los notebooks (ya lo hicieron con las palmtops). Los estudios indican, por
ejemplo, que en Estados Unidos los jvenes prefieren la comunicacin por SMS
(mensajes de texto) que por e-mail (considerada obsoleta) y que actualmente en Japn
ms personas se conectan a Internet desde telfonos mviles que desde computadores.
Situaciones similares se viven en otros pases desarrollados y en vas de desarrollo. Las
comunicaciones mviles sern la forma predominante de comunicacin en el futuro
inmediato, lo cual asegura la vigencia de J2ME por mucho tiempo.

Decimos que un MIDlet es una aplicacin JAVA realizada con el perfil MIDP
sobre la configuracin CLDC. Con sus palabras, explique el significado de esta
afirmacin. (2 puntos).

En general, para desarrollar una aplicacin en J2ME para un dispositivo mvil se requiere
la combinacin de 3 elementos o entidades: una mquina virtual, una configuracin y un
perfil. La mquina virtual (KVM o CVM) que se instala en el dispositivo depende
principalmente de sus capacidades de hardware, incluido su tamao de memoria. Una
vez especificada la mquina virtual, queda automticamente definida la configuracin
(CLDC o CDC) que debe utilizarse. Esta ltima, a su vez, condiciona automticamente
los perfiles que pueden ejecutarse sobre ella.

En nuestro caso particular, nos enfocaremos en aplicaciones para dispositivos mviles


con limitadas capacidades de hardware. Por tanto, la mquina virtual que debemos utilizar
en las aplicaciones que desarrollemos es la KVM. Est mquina virtual solo admite la
configuracin CLDC. Por lo tanto, nuestras aplicaciones debern ser desarrolladas bajo
3 Programacin de dispositivos mviles
Proyecto final
PROYECTO FINAL JOSE AUGUSTO MORALES ALZATE PROGRAMACION DISPOSITIVOS MOVILES

la configuracin CLDC incorporada en la mquina virtual KVM. Ahora bien: sobre la


configuracin CLDC solamente podemos construir dos tipos de perfiles que son el PDA
Profile (PDAP) y el Mobile Information Device Profile (MIDP). El PDAP est
todava en proceso de definicin, mientras que el MIDP est completamente definido.
Por tanto, desde el punto de vista prctico, el nico perfil actualmente disponible para
CLDC es el MIDP y, por lo mismo, todas nuestras aplicaciones sern creadas con este
perfil. Puesto que en Java cualquier aplicacin hecha con el perfil MIDP se denomina
genricamente un MIDlet, del mismo modo como cualquier aplicacin con un API se
denomina un Applet, llegamos a la conclusin que un MIDlet es una aplicacin Java
realizada con el perfil MIDP sobre la configuracin CLDC, que era la afirmacin
inicial.

Preguntas propositivas

Hemos visto que a travs del curso usaremos varias herramientas freeware para la
programacin de dispositivos mviles. Estas herramientas sern usadas a lo largo
del curso, y sobre todo, para el proyecto final. Cree un pequeo manual en el que,
con sus palabras, indique cuales son las herramientas usadas y una breve
descripcin del uso de cada una de ellas. Aada a su pequeo manual, fotos de la
instalacin de este software en su computador. (2 puntos).

HERRAMIENTAS FREEWARE PARA LA PROGRAMACION DE


DISPOSITIVOS MOVILES

MANUAL INFORMATIVO

ELABORADO POR JOSE AUGUSTO MORALES ALZATE

Bogot D.C. MAYO 26 DE 2017

Para programar dispositivos mviles con J2ME, es decir compilar y ejecutar las
aplicaciones (MIDlets) en Java que, en nuestro caso, sern instaladas principalmente en
telfonos celulares, se necesita descargar e instalar, como mnimo, el siguiente grupo de
herramientas de software, todas ellas de distribucin gratuita (freeware) por parte de
Oracle (www.oracle.com), la compaa propietaria desde 2009 de Sun Microsystem, los
creadores originales de la plataforma de programacin Java:

La plataforma estndar de desarrollo de Java JDK (Java Development Kit) y


el ambiente integrado de desarrollo (IDE) para Java NetBeans.
El IDE NetBeans proporciona un entorno grfico desde el cual el programador
puede escribir, compilar, depurar y ejecutar los programas en Java que constituyen
las aplicaciones finales, incluyendo no solamente las aplicaciones para

4 Programacin de dispositivos mviles


Proyecto final
PROYECTO FINAL JOSE AUGUSTO MORALES ALZATE PROGRAMACION DISPOSITIVOS MOVILES

dispositivos mviles con J2ME sino tambin los aplicaciones con J2SE y dems
versiones de Java.
La plataforma JDK, por su parte, proporciona los elementos esenciales para
cualquier desarrollo en Java, incluso si no se dispone de un entorno visual como
el IDE NetBeans. Incluye la mquina virtual de java (JVM), el compilador de
Java (javac), el intrprete de Java (java), el visor de applets (Appletviewer) y el
generador de la documentacin de las clases Java de cada programa (javadoc),
adems de otras herramientas auxiliares, como el desensamblador de clases
(javap) y el depurador de bugs (jdb).
La versin ms reciente de ambas plataformas (JDK 7 + NB 7.0.1) se puede
descargar en un archivo nico de instalacin de la siguiente direccin:

http://www.oracle.com/technetwork/java/javase/downloads/jdk-7-netbeans-download-
432126.html

Figura 1. Plataforma JDK 7 e IDE NetBeans 7.0.1. (a) Pagina de descarga ; (b) Inicio
de instalacin ; (c) Fin de instalacin ; (d) Abriendo NetBeans ; (e) Entorno de Netbeans
con un Applet sencillo ejecutado ; (f) Confirmando la versin de JDK instalada desde la
ventana de comando

La plataforma estndar de desarrollo de Java Micro Edition SDK (Software


Development Kit). Esta plataforma dedicada proporciona un entorno grfico
desde el cual el programador puede escribir, editar, compilar, ejecutar, depurar,
empaquetar, firmar y ocultar los programas en J2ME que constituyen las
aplicaciones finales para los dispositivos mviles y, lo ms interesante, emular
estos ltimos dispositivos con una muy alta fidelidad. Integra en un mismo
paquete las APIs de las configuraciones CLDC y CDC, as como los stubs de
BD-J (Blu-ray Disc Java). Estos ltimos permiten el desarrollo de aplicaciones
especiales que se graban en discos Blu-ray y corren sobre reproductores Blu-ray.
La versin ms reciente de esta plataforma (Java ME SDK 3.0) se puede
descargar de la siguiente direccin:

5 Programacin de dispositivos mviles


Proyecto final
PROYECTO FINAL JOSE AUGUSTO MORALES ALZATE PROGRAMACION DISPOSITIVOS MOVILES

http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-
downloads-javame-419430.html#sun_java_me_sdk-3.0-rr-oth-JPR

Figura 2. Plataforma Java ME SDK 3.0 (a) Descarga ; (b) Inicio de la instalacin ; (c)
Fin de la instalacin ; (d) Abriendo la plataforma ; (e) Entorno con un proyecto de
ejemplo cargado ; (f) Notificacin que aparece en la barra de tareas para indicar que el
administrador de dispositivos de la plataforma ha sido iniciado.

Los APIs de la configuracin CLDC y del perfil MIDP. Estas herramientas son
realmente opcionales porque ya vienen incluidas en la plataforma Java ME SDK
3.0. Bsicamente, el CLDC, adems de proveer las libreras usuales, genera la
mquina virtual K (KVM). Sobre esta configuracin se instala el perfil MIDP,
que es el encargado de proveer la funcionalidad final al dispositivo mvil. Se
utilizan principalmente para probar de forma rpida, desde la lnea de comandos
y sin necesidad de disponer de un emulador, la ejecucin y la lgica de programas
simples que no necesitan de capacidades grficas. Las versiones ms recientes de
estos programas (CLDC 1.1 y MIDP 2.0) se pueden descargar de la siguiente
direccin:

http://www.oracle.com/technetwork/java/javame/javamobile/download/overview/index.
html

6 Programacin de dispositivos mviles


Proyecto final
PROYECTO FINAL JOSE AUGUSTO MORALES ALZATE PROGRAMACION DISPOSITIVOS MOVILES

Figura 3. Detalle de la pgina de descarga del perfil MIDP 2.0 y la configuracin CLDC
1.1 para dispositivos mviles de recursos limitados.

En mi caso personal no se instalaron estos paquetes porque se trabajar esencialmente en


entornos visuales con las plataformas Java ME SDK 3.0 y NetBeans 7.0.1. Por esta
razn no se incluyen pantallazos de la instalacin. En general la combinacin MIDP 2.0
+ CLDC 1.1 + JDK 7 constituyen un ambiente de desarrollo completo para la
programacin de dispositivos mviles desde la lnea de comandos. En este caso, el cdigo
del MIDlet se escribe en el bloc de notas de Windows, u otrro procesador de texto plano,
y se compila y ejecuta desde la lnea de comandos.

REFERENCIAS:

https://tamher.wordpress.com/

http://tuzonasistema.blogspot.com/

ADJUNTO A LA ACTIVIDAD 1

Simulador Interactuar con el simulador (tomar un pantallazo y enviarla adjunto


con la actividad 1.

7 Programacin de dispositivos mviles


Proyecto final
PROYECTO FINAL JOSE AUGUSTO MORALES ALZATE PROGRAMACION DISPOSITIVOS MOVILES

8 Programacin de dispositivos mviles


Proyecto final
PROYECTO FINAL JOSE AUGUSTO MORALES ALZATE PROGRAMACION DISPOSITIVOS MOVILES

CONCEPTOS RELACIONADOS EN LA ACTIVIDAD 2

Preguntas interpretativas

La configuracin CLDC no solo existe para definir un estndar de dispositivos


de bajas capacidades. Existe tambin para otros 2 objetivos. Explique cules son
y por qu son importantes, con sus palabras. (2 puntos).
Contestacin 1:
Estos dos (2) objetivos son:
Extensibilidad: Se menciona a que un dispositivo mvil conectado a una red
puede descargar una aplicacin y luego compartirla con otros
dispositivos compatibles. Es as como se hacen extensibles las
aplicaciones entre diferentes dispositivos mviles.
Desarrollo de terceras partes: Es la configuracin CLDC que tienen los
dispositivos mviles, que hacen que los programas sean compatibles.
Para varios equipos, lo que suministra a los programadores el desarrollo de
nuevas aplicaciones compatibles con varios equipos.

Clase, objeto, mtodo, campo, pila, hilo, RAM, ROM, Sandbox, Clase y sistema
operativo, son definiciones que deben ser manejadas para entender la
programacin de dispositivos mviles. Explique cul es la relacin entre cada
una de estas definiciones y el tema visto en el curso (Ojo, no es copiar la
definicin, sino que, a partir de ellas, se explique cmo se relaciona dicha
definicin con la programacin de dispositivos mviles). (2 puntos).
Contestacin 2:
Al programar dispositivos mviles, necesitamos mtodos de ciertos
objetos que creamos de una clase, todo esto genera procesos los cuales
ejecutan hilos, estos son almacenados en memoria, por seguridad para
su ejecucin se utiliza la Sandbox la cual hace una validacin para
permitir que los procesos se ejecuten:
Clase: Se relaciona porque en la POO el corazn de este tipo de
programacin es la clase. Y como el lenguaje que estamos utilizando es java
tenemos que este es para la POO.

9 Programacin de dispositivos mviles


Proyecto final
PROYECTO FINAL JOSE AUGUSTO MORALES ALZATE PROGRAMACION DISPOSITIVOS MOVILES

Objeto: Como consecuencia del inciso anterior tenemos que el objeto es una
instancia de la clase, si vamos a programar es muy importante los objetos.
Pila: Se relacionan con el tema porque la JVM/CLDC tambin recoge la
basura para optimizar la pila de recursos.
RAM: Se relaciona con el tema porque es una gran limitante (por no decir
que la mayor), a l ahora de hablar de recursos para la PDM.
ROM: Esta memoria de solo lectura tambin limita la PDM. Ya que son
menos las instrucciones predeterminadas en los Dispositivos Mviles.
Hilo: Un hilo es una caracterstica que permite a una aplicacin realizar
varias tareas a la vez. Los distintos hilos de ejecucin comparten una
serie de recursos tales como el espacio de memoria, los archivos abiertos,
situacin de autenticacin, etc. Esta tcnica permite simplificar el diseo
de una aplicacin que debe llevar a cabo distintas funciones
simultneamente.
SANDBOX: Es el mtodo o herramienta con el que se aslan los procesos,
tienen que ver con la PDM ya que es la forma en que java en Sus applets se
protege de ataques, lo mismo es para la J2ME.

Preguntas argumentativas

Existen 2 aspectos fundamentales que crean todo un conjunto de diferencias


entre la CLDC y J2SE. Cules son esos aspectos y por qu dan pie a todo un
conjunto de diferencias? (2 puntos).
Contestacin 3:
Estos aspectos son a nivel del lenguaje Java y de la JVM que se utilizan
tanto en la CLDC como en la J2SE.
Generando una serie de diferencias de manejo de operaciones de punto
flotante y de errores limitados, libreras propias. Entre otros.

Es impracticable la ejecucin de una mquina virtual de J2EE en un dispositivo


mvil. Explique las razones de la veracidad de esta afirmacin. (2 puntos).
Contestacin 4:
Esa mquina virtual de J2EE, soporta una amplia variedad de

10 Programacin de dispositivos mviles


Proyecto final
PROYECTO FINAL JOSE AUGUSTO MORALES ALZATE PROGRAMACION DISPOSITIVOS MOVILES

aplicaciones slidas como las que manejan las grandes empresas, aparte
de que posee sus propias componentes, esto implica un gran tamao, lo
cual no es lo ms prctico para un dispositivo mvil, el cual requiere
aplicaciones livianas y una mquina virtual que al igual que las aplicaciones
sea lo ms compacta posible.

Preguntas propositivas

Proponga una causa que permita explicar la existencia de una librera especfica
para la configuracin CLDC. Esto no afecta la portabilidad de los elementos? (2
puntos).

Contestacin 5:
Una causa es la que permita la transferencia de seudo-ficheros para los
Dispositivos Mviles De mayor capacidad de memoria.
Si puede afectar la portabilidad de los elementos.
Otra puede ser la necesidad de un elemento que soporte una configuracin
CLDC para esto se necesita disear libreras propias, la memoria puede ser
una limitante por tal razn se requiere que los programadores desarrollen
capacidades de memoria en libreras para no limitar su aplicabilidad y no
afectar la portabilidad de los elementos.

Adjunto pantallazo SIMULADOR:


http://imagizer.imageshack.com/img923/3589/beC6lS.jpg

11 Programacin de dispositivos mviles


Proyecto final
PROYECTO FINAL JOSE AUGUSTO MORALES ALZATE PROGRAMACION DISPOSITIVOS MOVILES

DIAGRAMA HECHO EN LA ACTIVIDAD 3 DEL MIDLET

Preguntas interpretativas

La destruccin de un midlet no es lo mismo que su desinstalacin Por qu


se puede afirmar esto? (2 puntos)
La destruccin es el proceso de liberacin de memoria de un midlet, un midlet

en ejecucin es destruido cuando este termina su funcionamiento,

pero conservndolo aun en la memoria no voltil del dispositivo, cuando se hace

su desinstalacin fsica el midlet es eliminado de la memoria no

voltil del dispositivo, es decir, se elimina fsicamente.

El paquete de MIDP posee diversas clases que le permiten crear MIDlets. A


partir del estudio de ellos, Cules son los alcances que otorga este paquete?
(2 puntos)

12 Programacin de dispositivos mviles


Proyecto final
PROYECTO FINAL JOSE AUGUSTO MORALES ALZATE PROGRAMACION DISPOSITIVOS MOVILES

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. El alcance de este paquete va desde lo bsico en

cuanto a funcionamiento y procesamiento del midlet, como tal,

contiene clases que manejan los estados y ciclo de vida del mismo (activo,

pausado, destruido).

Preguntas argumentativas

La estructura de un MIDlet tiene 3 bloques funcionales y necesarios.


Argumente esta afirmacin. (2 puntos)
Estado ACTIVO es cuando el midlet inicia ya lo que es en si la ejecucin como

tal, antes primero debe mantenerse un tiempo en estado DETENIDO o

PAUSADO para poder iniciar todas sus clases y sus componentes, una vez el

midlet est iniciado o en estado activo, puede volver al estado pausado, ya sea

porque entra una llamada telefnica o por algn otro proceso que se le d ms

prioridad que a la aplicacin misma, tambin del mismo estado activo puede

pasar al estado DESTRUIDO, que es cuando se finaliza la ejecucin del midlet

y este es liberado de la memoria RAM o voltil del dispositivo, ya sea por un

error en tiempo de ejecucin, por interrupcin del propio usuario o para liberar

memoria para usar otra aplicacin. Es necesario que todo midlet se ejecute de

esta forma.

El ciclo de vida de un MIDlet tiene 5 fases interconectadas de manera


cclica Cul es ese ciclo? Explquelo con sus palabras.
El ciclo de vida de un midlet consta de 5 fases: descubrimiento, instalacin,

ejecucin, actualizacin y borrado.

13 Programacin de dispositivos mviles


Proyecto final
PROYECTO FINAL JOSE AUGUSTO MORALES ALZATE PROGRAMACION DISPOSITIVOS MOVILES

Descubrimiento: en esta parte el AMD debe reconoce (localizar) la direccin

donde se alojan los midlets y nos provee una especie de visualizacin donde

podemos elegir los midlets o las diversas aplicaciones que queremos instalar en

nuestro dispositivo, tambin gestiona la descarga del mismo y/o provee

conectividad mediante cualquier otro tipo de transferencia de archivos.

Instalacin: una vez que el midlet es descargado se procede a la fase de

instalacin, aqu el AMD debe informar al usuario de cualquier error

que pueda surgir.

Ejecucin: en este proceso el AMD ejecuta y controla los estados del midlet.

Actualizacin: este es el proceso por el cual el AMD verifica si hay una

previa versin del midlet antes de su instalacin, es decir, verifica si hay una

versin menor, igual o mayor a la que se va a instalar.

Borrado: este proceso se encarga de eliminar el midlet del dispositivo,

elimina o desinstala el midlet junto con sus respectivos archivos y

componentes.

14 Programacin de dispositivos mviles


Proyecto final
PROYECTO FINAL JOSE AUGUSTO MORALES ALZATE PROGRAMACION DISPOSITIVOS MOVILES

Preguntas propositivas

Como hemos visto, en esta unidad observamos la configuracin de un midlet


tpico. Haga un diagrama de flujo en el que indique la forma en la que
funciona el midlet mostrado en el tema. Explique cada uno de los bloques del
diagrama, y recuerde los elementos de un MIDlet general. (2 puntos).

Pausado, Activo o Destruido. Slo puede estar en un estado a la vez.

La figura muestra cmo se pasa de uno a otro:

Activo: es como darle play a una videograbadora; el midlet se encuentra ejecutndose,

en este estado es donde el midlet acta y es donde puede realizar la ejecucin del proceso

pues tiene activos los recursos necesarios incluyendo la memoria voltil.

pausa: comparndolo con la video grabadora nuevamente al darle la orden de pausa

la reproduccin se detiene pero puede iniciar nuevamente desde el mismo punto incluso

la misma imagen detenida sin tener que comenzar de nuevo desde el inicio; en este punto

15 Programacin de dispositivos mviles


Proyecto final
PROYECTO FINAL JOSE AUGUSTO MORALES ALZATE PROGRAMACION DISPOSITIVOS MOVILES

el midlet est en estado de ejecucin pero la memoria no se puede ejecutar pues debe

estar disponible para otras aplicaciones que lo necesiten pues ese es el principal

problema de java y debe ser as porque si no se podra aplicar en dispositivos mviles

por el tamao.

destruido: para no cambiar el ejemplo dado es como dar la orden de stop o incluso el

apagar el aparato se pierde la informacin y si se quiere ver de nuevo hay que comenzar

desde el inicio; el midlet est en este estado cuando ya no est en ejecucin adems se

libera la memoria voltil que gasta esta aplicacin. Cuando el midlet es llevado a este

estado no puede pasar a ningn otro como si lo hara el pausa que puede pasar a activo;

y el activo que puede pasar a pausa o destruido.

Esqueleto de un Midlet:

//Usamos la clase MIDlet

import javax.microedition.midlet.*;

//Nuestra clase debe de heredar de la clase MIDlet

public class Ejemplo1 extends MIDlet {

//Constructor, si no lo ponemos (est vaco) ya lo har Java por nosotros

public Ejemplo1( ) {

//Mtodo que se llama cuando pasamos de Pausado a Activo

protected void startApp( ) {

16 Programacin de dispositivos mviles


Proyecto final
PROYECTO FINAL JOSE AUGUSTO MORALES ALZATE PROGRAMACION DISPOSITIVOS MOVILES

//Mtodo que se llama cuando pasamos de Activo a Pausado

protected void pauseApp( ) {

//Mtodo que se llama cuando se destruye el midlet

protected void destroyApp(boolean incondicional) {

Fuente: http://leo.ugr.es/J2ME/MIDP/aplicaciones.htm

HACER UN DOCUMENTO EN EL QUE SE EXPLIQUE, PASO POR


PASO, EL PROCEDIMIENTO PARA EJECUTAR ESTE MIDLET Y
PROPORCIONAR PANTALLAZOS DE SU FUNCIONAMIENTO EN
LA PLATAFORMA DEL COMPUTADOR.
http://leo.ugr.es/J2ME/TOOLS/index2.htm

Ejecucin de MIDlets
Los MIDlets deben derivar de la clase abstracta javax.microedition.midlet.MIDlet, que
contiene mtodos destinados a controlar el tiempo de ejecucin de los MIDlets. Todos
los MIDlets deben tener un constructor pblico predeterminado (es decir, que no requiera
argumentos). La estructura bsica de un MIDlet se muestra a continuacin:

public class EjemploMidlet extends MIDlet{


// Constructor: opcional. Bastara con el constructor por
// defecto

public EjemploMidlet(){
}

// Mtodo que iniciar la ejecucin del MIDlet

public void startApp() throws MIDletStateChangeException{

17 Programacin de dispositivos mviles


Proyecto final
PROYECTO FINAL JOSE AUGUSTO MORALES ALZATE PROGRAMACION DISPOSITIVOS MOVILES

// Mtodo que interrumpe la ejecucin del MIDlet

public void pauseApp(){


}

// Mtodo para finalizacin del MIDlet

public void destroyApp(boolean unconditional)


throws MIDletStateChangeException{
}
}

En todo momento, los posibles estados en que podra estar un MIDlet son:

pausa
activo
destruido

Inicialmente, cuando se produce la carga de un MIDlet, ste estar en estado pausa.


Cuando se produce la llamada al mtodo startApp() se produce el paso al estado activo.
En cualquier instante, la plataforma MIDP podra poner a un MIDlet en estado de pausa.
Por ejemplo, en los telfonos mviles esto ocurrir cuando se detecta una llamada
entrante. Esto se realiza mediante una llamada al mtodo pauseApp(). La vuelta al estado
activo precisa de una nueva llamada a startApp(). Cuando se precisa la finalizacin de
un MIDlet se usar una llamada a destroyApp(...). Al producirse esta llamada se liberan
los recursos que el MIDlet pudiera estar usando, siempre que el argumento de este mtodo
sea true. Pero pudiera haber algunas situaciones en que este tipo de finalizacin no es
conveniente; por ejemplo, por haber datos que an no se han almacenado. En este caso,
la llamada al mtodo debera hacerse usando como argumento false. Esto produce el
lanzamiento de la excepcin MIDletStateChangeException. El cdigo debera estar
preparado para capturar la excepcin y actuar en consecuencia.

Para ilustrar el ciclo de vida un MIDlet y la forma en que se controla, a la vez que mostrar
el funcionamiento de las herramientas de generacin de MIDlets, vamos a considerar un
ejemplo sencillo de MIDlet, caracterizado por:

El MIDlet se llamar EjemploMIDlet1. El constructor imprime el valor de la propiedad


color (ya veremos para qu se hace esto) y muestra un mensaje indicando que el midlet
est construido y el valor de la propiedad.

El mtodo startApp() se encarga de mostrar un mensaje que permita trazar el ciclo de


vida del MIDlet. A continuacin se hace lo siguiente:
o Si es la primera vez que se llama al mtodo startApp(), entonces se crea un
objeto auxiliar de la clase Tarea, que permite, en una hebra aparte, ejecutar una
simple cuenta. Despus de crear este objeto se invoca al mtodo start() del
mismo, de forma que empieze a desarrollarse la tarea indicada en el mtodo
run() de la misma. Finalmente se cambiar el valor de la variable booleana, de
forma que la prxima vez que se llame al mtodo startApp() se sepa que se trata
de una llamada producida al salir de una pausa.
18 Programacin de dispositivos mviles
Proyecto final
PROYECTO FINAL JOSE AUGUSTO MORALES ALZATE PROGRAMACION DISPOSITIVOS MOVILES

o Si no es la primera vez que se llama al mtodo startApp(), entonces se prosigue


con la ejecucin de la tarea realizada por la hebra, desde el punto en que se
quedara parada previamente como consecuencia de la pausa. Cuando la tarea
se finaliza, se fuerza la destruccin del MIDlet, mediante la llamada a
destroyApp(true). El argumento true pasado a destroyApp indica que se busca
liberar todos los recursos que el MIDlet pudiera estar usando.

El mtodo pauseApp() se invoca al producirse una llamada telefnica, por ejemplo. Para
forzar este evento hay una opcin concreta del men MIDlet de KToolbar. Al recibirse
la llamada a este mtodo, se muestra un mensaje para seguir la traza de
funcionamiento. Se imprime el estado de trabajo de la tarea auxiliar (de la cuenta) y se
fuerza a que la hebra deje de trabajar. Este es el objetivo de la llamada
tarea.interrumpir().

Como no se sabe an lo suficiente como para construir interfaces de usuario (aunque


pronto se sabr), todos los mensajes se enviarn a la salida estndar. Se incluye a
continuacin el cdigo correspondiente, y seguidamente se ver cmo generar el suite,
tanto de forma manual como automtica.

import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;

public class EjemploMIDlet1 extends MIDlet{


Tarea tarea;
boolean primeraVez;

// Constructor por defecto de la clase


public EjemploMIDlet1(){
String color=getAppProperty("color");
System.out.println("\n\n\nConstruido MIDlet con color: "+color);
primeraVez=true;
}

// Metodo para iniciar el funcionamiento del MIDlet


public void startApp() throws MIDletStateChangeException{
System.out.println("Metodo startApp");

if (primeraVez == true){
System.out.println("Ejecucion la primera vez.......");
System.out.println("Se inicia cuenta larga para
permitir pausar");
tarea=new Tarea();
tarea.start();
primeraVez=false;
}
else{
// Se reanuda la ejecucion tras salir de la pausa
System.out.println("Llamada tras pausa..... Valor de i:
"+tarea.getI());
tarea.continuar();

19 Programacin de dispositivos mviles


Proyecto final
PROYECTO FINAL JOSE AUGUSTO MORALES ALZATE PROGRAMACION DISPOSITIVOS MOVILES

// Se destruye el midlet cuando la tarea termine


if (tarea.getFinalizado() == true){
destroyApp(true);
}
}
}

// Metodo para detener el funcionamiento del MIDlet


public void pauseApp(){
System.out.println("Metodo pauseApp");
System.out.println("Valor de i en el momento de la pausa:
"+tarea.getI());
tarea.interrumpir();
}

// Metodo para destruir el MIDlet


public void destroyApp(boolean condition){
System.out.println("Metodo destroyApp. Condicion: "+condition);

if (condition == true){
// Se indica la finalizacion del midlet
notifyDestroyed();
}
}
}

class Tarea extends Thread{


int i;
boolean interrumpido;
boolean finalizado;

Tarea(){
i=0;
interrumpido=false;
finalizado=false;
}

public void run(){


for(; i < 9000000; ){
if (interrumpido == false){
i++;
}
else{
try{
sleep(100);
}
catch(InterruptedException e){
System.out.println("Problema al dormir hebra....");
}
}
//System.out.println("Valor de i: "+i);
}

// Se finaliza la tarea
finalizado=true;
}

// Metodo para obtener el valor de i


int getI(){
return i;
}

20 Programacin de dispositivos mviles


Proyecto final
PROYECTO FINAL JOSE AUGUSTO MORALES ALZATE PROGRAMACION DISPOSITIVOS MOVILES

// Metodo para interrumpir


void interrumpir(){
interrumpido=true;
}

// Metodo para continuar


void continuar(){
interrumpido=false;
}

// Metodo para acceder al valor de finalizado


boolean getFinalizado(){
return finalizado;
}
}

El cdigo completo de este MIDlet puede descargarse directamente desde aqu:


EjemploMIDlet1.java Se trata de un MIDlet muy sencillo, que permitir practicar con los
procedimientos de generacin de MIDlets, as como los posibles estados en que puede
encontrarse un MIDlet en ejecucin: pausa, activo y destruido.

Uso de KToolbar

Seguiremos el proceso completo de trabajo sobre el MIDlet incluido anteriormente. El


primer paso consistir en ejecutar la herramienta KToolbar. Esta aplicacin se encuentra
en la instalacin de Wireless Toolkit. Para ejecutarla haremos lo siguiente (si no funciona,
avisad al profesor.......).

ktoolbar

La ventana principal de KToolbar tiene la siguiente aparencia:

Crearemos un proyecto de suite, en el que incluiremos el MIDlet generado con


anterioridad. Para ello se pulsa en el botn New Project. Al pulsar sobre l aparecer la
siguiente ventana:
21 Programacin de dispositivos mviles
Proyecto final
PROYECTO FINAL JOSE AUGUSTO MORALES ALZATE PROGRAMACION DISPOSITIVOS MOVILES

Como se ve, hemos rellenado la informacin de ambos campos de texto. Como nombre
del proyecto podemos elegir cualquiera, sin necesidad de coincidir con el nombre de la
clase principal del MIDlet. En el segundo campo de texto hemos de especificar el nombre
de la clase principal del suite que queremos ejecutar en el emulador. En este caso es
EjemploMIDlet1. En cuanto se pulsa el botn Create Project aparecer una nueva
ventana donde aparecen informaciones relativas al MIDlet.

Al mismo tiempo, en la ventana principal de KToolbar han aparecido varios mensajes:

22 Programacin de dispositivos mviles


Proyecto final
PROYECTO FINAL JOSE AUGUSTO MORALES ALZATE PROGRAMACION DISPOSITIVOS MOVILES

Estos mensajes indican que se ha creado la estructura de directorios necesaria para el


proyecto, y que las clases que queramos formen parte del MIDleet habr que ubicarlas en
el directorio src; recursos adicionales (como iconos) irn en el directorio res y las libreras
(si las hubiera) en el directorio lib. Como se ve, el directorio del proyecto se crea en el
directorio de instalacin de la herramienta, bajo el subdirectorio apps. En nuestro caso,
la ruta completa ser $HOME/java/WTK2.2/apps/ejemplo1. Nuestro primer MIDlet
usar un icono muy sencillo (descargadlo aqu: iconoPeq.png).

Por tanto, lo primero que haremos ser copiar el archivo con la clase asociada al MIDlet
en el directorio $HOME/java/WTK2.2/apps/ejemplo1/src/. El icono se ubicar en el
directorio $HOME/java/WTK2.2/apps/ejemplo1/res/. Dentro de este directorio
crearemos a su vez el directorio icons. Y en l ser donde se guarde el archivo png del
icono. Para indicar que el icono del MIDlet es este, debe modificarse la informacin sobre
el icono. Para ello se pulsa el botn Settings de KToolbar. Aparecer la venta siguiente:

23 Programacin de dispositivos mviles


Proyecto final
PROYECTO FINAL JOSE AUGUSTO MORALES ALZATE PROGRAMACION DISPOSITIVOS MOVILES

Aprovechamos ahora para indicar que deseamos que el MIDlet sea conforme a MIDP1.0.
Para ello se selecciona esta opcin de las disponibles al pulsar sobre Target Platform.
Para indicar el icono asociado, se selecciona la pestaa MIDlets. Una vez hecho esto
aparecer

Para poder cambiar el icono (el valor presente en la figura anterior se introduce por
defecto), basta con seleccionar la lnea con los datos (la fila que aparece rellena), con lo
que se marcar con un color diferente para indicarnos que est seleccionada:

Ahora basta con pulsar sobre el botn Edit, lo que dar lugar a la aparicin de la
ventana de edicin:

24 Programacin de dispositivos mviles


Proyecto final
PROYECTO FINAL JOSE AUGUSTO MORALES ALZATE PROGRAMACION DISPOSITIVOS MOVILES

Sobre esta ventana, en el recuadro Icon escribiremos /icons/iconoPeq.png, tal y como


se aprecia a continuacin:

Al finalizar se pulsa sobre el botn Aceptar de la ventana de edicin. Con esto queda
registrado el cambio de la propiedad correspondiente al icono del MIDlet:

Y pulsando sobre el botn OK desaparece la ventana de propiedades. Esto es todo lo


necesario para poder generar y ejecutar el MIDlet. En primer lugar, procedemos a generar
las clases a partir del cdigo fuente. Para ello se pulsa el botn Build. Si todo ha ido bien,
aparecer un mensaje indicado que la generacin se realiz de forma correcta. En caso de
haber errores, se mostrarn en la ventana principal de KToolbar.

25 Programacin de dispositivos mviles


Proyecto final
PROYECTO FINAL JOSE AUGUSTO MORALES ALZATE PROGRAMACION DISPOSITIVOS MOVILES

En cuanto se ha generado el MIDlet, podemos ejecutar mediante el botn Run. Al


pulsarlo, aparecer el emulador con el MIDlet listo para ejecucin.

Para lanzar la ejecucin del MIDlet se pulsa sobre la tecla bajo el mensaje Launch. En
cuanto se produce esto el MIDlet se crea y el dispositivo invoca al mtodo startApp().
Esto explica los mensajes que se aprecian en la consola de KToolbar:

26 Programacin de dispositivos mviles


Proyecto final
PROYECTO FINAL JOSE AUGUSTO MORALES ALZATE PROGRAMACION DISPOSITIVOS MOVILES

Se muestra el mensaje de traza puesto en el constructor, indicando que la propiedad


color no est definida. Arreglar esto se deja para ms adelante. Tambin se aprecia la
traza ubicada a la entrada del mtodo startApp(), que ha sido invocado por el sistema
de gestin de ejecucin de MIDlets del dispositivo mvil. Los dos mensajes que
aparecen a continuacin son trazas que muestran que el MIDlet se ejecuta por primera
vez.

Para pausar el MIDlet, tras unos segundos de funcionamiento, basta con actuar sobre el
men MIDlet del emulador telefnico y seleccionar la opcin Pause. Al hacerlo el
emulador queda de la forma siguiente:

A su vez, en la consola de KToolbar veremos los siguientes mensajes:

27 Programacin de dispositivos mviles


Proyecto final
PROYECTO FINAL JOSE AUGUSTO MORALES ALZATE PROGRAMACION DISPOSITIVOS MOVILES

Las nuevas lneas de traza indican que se ha invocado al mtodo pauseApp(). Como
comentamos previamente, esto ocurrir al producirse una llamada de telfono sobre el
mvil, por ejemplo. Se observa el valor de la cuenta en el momento en que se produjo la
pausa. Para continuar ejecutando el MIDlet (lo que ocurrira al finalizar la llamada),
forzamos la salida del modo de pausa. Para ello volvemos a actuar sobre el men MIDlet,
seleccionado la opcin Resume. Esto hace que aparezcan nuevas lneas de traza
indicando que se ha producido una nueva llamada al mtodo startApp(), pero sin tratarse
de la primera llamada al mismo.

Por su parte, del emulador desaparece la indicacin de llamada entrante:

28 Programacin de dispositivos mviles


Proyecto final
PROYECTO FINAL JOSE AUGUSTO MORALES ALZATE PROGRAMACION DISPOSITIVOS MOVILES

Si se observa el cdigo del mtodo startApp(), se aprecia que la destruccin del MIDlet
slo se producir en el caso en que ya haya finalizado la tarea de cuenta. Para asegurarnos
que esto ocurre, tras la salida del modo de pausa esperaremos unos segundos, se genera
una nueva pausa (pulsando, como se indicn previamente, sobre la opcin Pause del
men MIDlet) para, a continuacin forzar, mediante Resume (en el men MIDlet), una
nueva llamada a startApp() una vez finalizada la cuenta. Cuando esto ocurra, tendremos:

29 Programacin de dispositivos mviles


Proyecto final
PROYECTO FINAL JOSE AUGUSTO MORALES ALZATE PROGRAMACION DISPOSITIVOS MOVILES

Slo cuando el MIDlet haya sido destruido de forma completa podr volver a lanzarse de
forma correcta.

BIBLIOGRAFIA:

Material de estudio de las fases 1, 2 ,3.

Documentos de apoyo de las Fases 1, 2, 3.

Enlaces externos de las Fases 1, 2, 3.

30 Programacin de dispositivos mviles


Proyecto final

You might also like