Java ME es una plataforma para desarrollar aplicaciones móviles que provee APIs para interfaces gráficas, multimedia y más. Las aplicaciones se llaman MIDlets y siguen un ciclo de vida de inicio, pausa y destrucción. Los MIDlets usan elementos GUI como Forms, TextFields e Images para crear interfaces de usuario.
1ro Programación Anual D.P.C.C planificación anual del área para el desarroll...
Java ME (Micro Edition)
1. 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)
2. 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
3. MIDlets
Las aplicaciones Java ME, se denominan 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
4. Modelo de compilación
Ejecución del programa
[Compilacion JIT]
JVM (Maquina Virtual)
Bytecode (Código intermedio) .jar
.class
[Compilador]
Código Fuente
.java
5. Distribución
Archivo .jar Archivo .jad
que contiene el que describe los
bytecode del contenidos del
programa archivo .jar.
10. Ciclo de vida de un MIDlet
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 Métodos
• -Active public void startApp() { }
• -Paused public void pauseApp() { }
• -Destroyed 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.
11. Ciclo de vida de un MIDlet
AMS
Application Management Software
new()*
startApp()
Paused Active
pauseApp()
destroyApp() destroyApp()
Destroyed
12. Estado Paused
En este estado el MIDlet está esperando por ser pasar al estado ACTIVE
y no consume recursos del dispositivo.
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)
13. Estado Active
En este estado el MIDlet la aplicación ejecuta todas sus funciones
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
14. Estado Destroy
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
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
15. Secuencia de eventos
Dispositivo libre El usuario
Usuario inicia Llamada Finalización
Evento para iniciar la desea cerrar
la Aplicación App entrante de la llamada
la App
Método Constructor()
ejecutado
startApp() pauseApp() startApp() destroyApp()
Estado Paused Active Paused Active Destroyed
Secuencia de eventos
19. Interfaz grafica de Usuario
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
Objeto Displayable
Elemento Administrador (Contenedor)
Clase Display Form
20. Clase Display
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()
Creación de un objeto tipo Display
Display display;
display= Display.getDisplay(this);
21. Clase Form
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
Creación de un objeto tipo Form
Form form;
form = new Form("Titulo Form");
22. Interfaz grafica de Usuario
Display display; Form form;
display= Display.getDisplay(this); form = new Form("Titulo Form");
display form
display.setCurrent(form)
26. Desarrollo de la actividad
Aplicación Aplicación
Aplicación
de de
Móvil
Consola escritorio
27. Clase TextField
Es un componente editable que debe ir ubicado dentro de un Form
Input Constraints o Restricciones de entrada
• NON_PREDICTIVE
• ANY
• NUMERIC
• DECIMAL
• PASSWORD
• EMAILADDR
• PHONENUMBER
• INITIAL_CAPS_SENTENCE
• SENSITIVE
• INITIAL_CAPS_WORD
• UNEDITABLE
• URL
Constructor
TextField(String label, String text, int maxSize, int constraints)
Ejemplo
userName = new TextField("LoginID:", "", 30, TextField.ANY);
28. Clase Image
Representa un conjunto de datos gráficos.
Creando la imagen
Image img;
try{
img=Image.create(«/ruta_imagen»)
}
catch(){
}
Agregándola al Form
form.append(img);
29. Clase Command
Es una clase que encapsula la información semántica para una acción
Tipos
• BACK
• CANCEL
• EXIT
• HELP
• ITEM
• OK
• SCREEN
• STOP
Constructor
Command(String label, int commandType, int priority)
Agregándolo al Form
form.addCommand(cancel);
30. Interface CommandListener
CommandListener asociado con el Displayable, es el que define en
realidad que acción se llevo a cabo.
Asociándolo al Form
form.setCommandListener(this);
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
}
}
31. Clase Alert
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
Constructor para un Alert vacío
Alert(String title)
Constructor para un Alert completo
Alert(String title, String alertText, Image alertImage, AlertType alertType)
32. Clase Alert
Ejemplo constructor
Alert error = new Alert("Login Incorrect", "Please try again", imge, AlertType.ERROR);
Ejemplo
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);