Java ME (Micro Edition) Es una plataforma orientada a proveer una colección de APIs de desarrollo de software para dispositivos móviles. *Teléfonos celulares (Feature phones) *Apps para BlackBerry (gracias a la BlackBerry® Java® Virtual Machine)
Jun 08, 2015
Java ME (Micro Edition)
Es una plataforma orientada a proveer una
colección de APIs de desarrollo de software para
dispositivos móviles.
*Teléfonos celulares (Feature phones)
*Apps para BlackBerry (gracias a la
BlackBerry® Java® Virtual Machine)
Java ME (Micro Edition)
Características
*Flexibilidad en la creación de interfaces gráficas
*Variedad de APIs para distintos dispositivos de
acuerdo a sus recursos y capacidades.
*Seguridad
*Soporte para aplicaciones que utilizan SMS o
Internet
*Multiplataforma
MIDlets
<<Así como se le llama APPLET , a
una aplicación que corre en un
navegador web>>
La gran mayoría de
MIDlets desarrollados, son
juegos para celulares, que
implementan APIs para el
manejo 2D y 3D
Las aplicaciones Java ME, se denominan MIDlets
Modelo de compilación
Código Fuente .java
[Compilador]
[Compilacion JIT] JVM (Maquina Virtual)
Ejecución del programa
Bytecode (Código intermedio) .class
.jar
Distribución
Archivo .jad que describe los
contenidos del
archivo .jar.
Archivo .jar que contiene el
bytecode del
programa
Arquitectura
Paquetes opcionales APIs para juegos 3D, multimedia
Perfiles MIDP
Configuración CLDC
Sistema Operativo
JVM (Java Virtual Machine)
AMS (Application Management Software)
Hola Mundo!
Actividad 1
Instalación del IDE y
complementos
Creación del proyecto
Los dispositivos móviles (ya sea emulador o uno real), interactúa con un
MIDlet a través de su propio software, llamado Application Management
Software (AMS)
Estados • -Active
• -Paused
• -Destroyed
Ciclo de vida de un MIDlet
Métodos
public void startApp() { }
public void pauseApp() { } public void destroyApp(boolean unconditional) { }
Son métodos que extienden de la clase Midlet y en los cuales podemos
ubicar código que queremos que se ejecute en un momento dado.
Ciclo de vida de un MIDlet
destroyApp()
Destroyed
Active Paused
destroyApp()
startApp()
pauseApp()
AMS Application Management Software
new()*
En este estado el MIDlet está esperando por ser pasar al estado ACTIVE
y no consume recursos del dispositivo.
Estado Paused
Causas
-Cuando se llama el método pauseApp()
-Cuando el ASM exige recursos del teléfono (por ejemplo, cuando el
teléfono recibe una llamada entrante. EL ASM invoca el método
pauseApp() ).
-Cuando se dispara MIDletStateChangeException (En caso de un error, se
pone en estado PAUSED)
En este estado el MIDlet la aplicación ejecuta todas sus funciones
Estado Active
Causas
-Cuando se inicia la aplicación (El AMS permite crear una nueva instancia
de nuestra aplicación)
-Cuando se llama el método startApp()
-Cuando se llama el método ResumeRequest()
ResumeRequest() es un método que permite pasar de estado Paused a
Active
Se puede destruir una aplicación que esté tanto en estado ACTIVE como
PAUSED. Al destruir, lo que hacemos es eliminar la instancia creada, pero
no desinstalar la aplicación
Estado Destroy
Causas
-El usuario apaga repentinamente el dispositivo
-Cuando se llama el método destroyApp(boolean unconditional)
unconditional es una variable booleana que define si es completamente
necesario destruir la aplicación o no
*true - La aplicación se destruirá obligatoriamente, independientemente de lo que este
haciendo.
*false - La aplicación se destruirá, siempre y cuando, NO esté haciendo nada importante, si se
encuentra ejecutando algún proceso importante, se dispara MIDletStateChangeException
Secuencia de eventos
Evento
Constructor()
Paused
Método ejecutado
startApp() pauseApp() startApp() destroyApp()
Active Paused Active Destroyed
Usuario inicia
la Aplicación
Dispositivo libre
para iniciar la
App
Llamada
entrante Finalización
de la llamada
El usuario
desea cerrar
la App
Estado
Secuencia de eventos
Importando paquetes
javax.microedition.midlet Nos provee la clase MIDlet
javax.microedition.icdui
• Alert
• AlertType
• Canvas
• ChoiceGroup
• Command
• DateField
• Display
Paquetes fundamentales
• Displayable
• Font
• Form
• Gauge
• Graphics
• Image
• ImageItem
• Item
• List
• Screen
• StringItem
• TextBox
• TextField
• Ticker
Bases de la GUI
Debe haber un objeto «Displayable» o Contenedor, que contendrá los
demás elementos y un administrador para ese objeto.
Solo puede existir un objeto «Displayable» por MIDlet
Interfaz grafica de Usuario
Objeto Displayable
(Contenedor) Administrador
Form Display Clase
Elemento
Representa el administrador para la visualización correcta del MIDlet y la
entrada desde el dispositivo.
Provee métodos para obtener información sobre las capacidades del
dispositivo.
• isColor()
• numColors()
• numAlphaLevels()
Clase Display
Display display; display= Display.getDisplay(this);
Creación de un objeto tipo Display
Es un contenedor en el que se pueden insertar diferentes elementos
• Campos de texto de solo lectura
• Campos de texto editables
• Imágenes
• Grupos de botones
• Elementos personalizados
• En general, cualquier clase hija de la clase Item
Clase Form
Form form; form = new Form("Titulo Form");
Creación de un objeto tipo Form
form display
display.setCurrent(form)
Display display; display= Display.getDisplay(this);
Form form; form = new Form("Titulo Form");
Interfaz grafica de Usuario
Código Actividad 1
Emulador
Sistema de Login
Actividad 2
Desarrollo de la actividad
Aplicación
de
escritorio
Aplicación
de
Consola
Aplicación
Móvil
Es un componente editable que debe ir ubicado dentro de un Form
Input Constraints o Restricciones de entrada
• ANY
• DECIMAL
• EMAILADDR
• INITIAL_CAPS_SENTENCE
• INITIAL_CAPS_WORD
Clase TextField
TextField(String label, String text, int maxSize, int constraints)
Constructor
• NON_PREDICTIVE
• NUMERIC
• PASSWORD
• PHONENUMBER
• SENSITIVE
• UNEDITABLE
• URL
Ejemplo
userName = new TextField("LoginID:", "", 30, TextField.ANY);
Representa un conjunto de datos gráficos.
Clase Image
Image img; try{ img=Image.create(«/ruta_imagen») } catch(){ } form.append(img);
Creando la imagen
Agregándola al Form
Es una clase que encapsula la información semántica para una acción
Tipos
• BACK
• CANCEL
• EXIT
• HELP
• ITEM
• OK
• SCREEN
• STOP
Clase Command
Command(String label, int commandType, int priority)
Constructor
Agregándolo al Form
form.addCommand(cancel);
CommandListener asociado con el Displayable, es el que define en
realidad que acción se llevo a cabo.
Interface CommandListener
form.setCommandListener(this);
Asociándolo al Form
Identificando el evento
public void commandAction(Command c, Displayable d) { String label = c.getLabel(); if (label.equals("Cancel")) { //Metodo a ejecutar } else if (label.equals("Login")) { //Metodo a ejecutar } }
Es una pantalla que muestra datos al usuario y espera por un cierto
periodo de tiempo antes de procesar el siguiente objeto "Displayable"
Puede contener un String y/o una imagen
Es similar al JOptionPane de Java SE
Clase Alert
Alert(String title)
Constructor para un Alert vacío
Alert(String title, String alertText, Image alertImage, AlertType alertType)
Constructor para un Alert completo
Clase Alert
Alert success = new Alert("Login Successfully", "Your Login Process is completed!", img2, AlertType.INFO); success.setImage(img); userName.setString(""); password.setString(""); display.setCurrent(success, form);
Ejemplo
Ejemplo constructor
Alert error = new Alert("Login Incorrect", "Please try again", imge, AlertType.ERROR);