Académique Documents
Professionnel Documents
Culture Documents
Contenido de la presentacin
Conceptos J2ME. Entorno de desarrollo. Componentes visuales. Comandos. Gestin de registros RMS. Control de caractersticas J2ME
CARACTERSTICAS
J2ME es la versin del lenguaje JAVA para el desarrollo de aplicaciones mviles.
CLDC (Connected Limited Device Configuration) es la configuracin general para un amplio abanico de dispositivos, que van desde PDAs a telfonos mviles y otros. MIDP (Mobile Information Device Profile) define el perfil, las APIs y caractersticas hardware y software necesarias para el caso concreto de los telfonos mviles.
CLDC
Especificacin diseada para dispositivos con restricciones limitadas (memoria, procesador, conexin, etc..). Proporciona los aspectos bsicos para la ejecucin del lenguaje Java; es la base. Desarrollada junto con las empresas fabricantes de dispositivos wireless, proveedores de servicios y terminales de venta.
MIDP
Proporciona un perfil apoyado en el CLDC que aporta los paquetes JAVA necesarios para la ejecucin de funciones orientadas al desarrollo de aplicaciones. Versiones:
ARQUITECTURA
CLASES
Por el CLDC
Por MIDP
MIDLET
CLASE MIDLET
package hello; import javax.microedition.midlet.*; import javax.microedition.lcdui.*; public class HolaMundoMIDlet extends MIDlet implements CommandListener { private boolean midletPaused = false; public HolaMundoMIDlet() { } public void startApp() { if (midletPaused) { resumeMIDlet (); } else { initialize (); startMIDlet (); } midletPaused = false; } public void pauseApp() { midletPaused = true; } public void destroyApp(boolean unconditional) { } .... }
DESARROLLO DE APLICACIONES J2ME 2008 Jess Soto Carrin.
MANIFIESTO - JAD
MIDlet-1: HelloMIDlet, ,miapp.HolaMundoMIDlet MIDlet-Icon: /icon.png MIDlet-Info-URL: www.imai-software.com MIDlet-Jar-Size: 3016 MIDlet-Jar-URL: MiprimerMIDLET.jar MIDlet-Name: MiprimerMIDLET MIDlet-Vendor: ImaI Software MIDlet-Version: 1.0 MicroEdition-Configuration: CLDC-1.1 MicroEdition-Profile: MIDP-2.0
10
ENTORNO DE DESARROLLO
NetBeans
Plugins:
Plataforma:
11
MI PRIMERA APLICACIN
12
13
PROPIEDADES
14
Flujo Indica el flujo entre los diferentes elementos visibles. Cdigo Muestra el cdigo java del MIDLET. Pantalla Muestra un elemento visual definido en el MIDLET (pantallas, mens, etc..)
15
16
CLASE DISPLAY
Slo existe una instancia del objeto Display por MIDLET. Proporciona mtodos para la:
Obtencin de caractersticas sobre la pantalla del dispositivo: soporte color (isColor), nmero de colores (numcolors), mejor ancho/alto de imagen (getBestImageWidth/Height, vibracin (vibration) etc..)
17
FORMULARIO
stringItem
Comando - Exit
Contenedor - Formulario
18
ELEMENTOS
Cadena (StringItem)
private StringItem stringItem; public StringItem getStringItem() { if (stringItem == null) { stringItem = new StringItem("Mensaje:", "Hola Mundo!"); } return stringItem; }
Comando (Exit)
private Command exitCommand; public Command getExitCommand() { if (exitCommand == null) { exitCommand = new Command("Exit", Command.EXIT, 0); } return exitCommand; }
19
20
Interfaz CommandListener
public void commandAction(Command command, Displayable displayable) { // write pre-action user code here if (displayable == form) { if (command == exitCommand) { // write pre-action user code here exitMIDlet(); // write post-action user code here } } else if (displayable == pantallaxx) { if (command == algnComando) { // write pre-action user code here accinx() // write post-action user code here } } // write post-action user code here }
21
RESULTADO
Exit Command
22
Elementos Displayables
Alert: mensaje de aviso. Form: elemento formulario. List: men tipo lista. Login Screen: pantalla de inicio de sesin. Wait Screen: aviso de espera. PIM Browser: buscador agenda / calendario / lista de tareas. Text Box: caja de texto Splash Screen: pantalla inicial de la aplicacin File browser: localizador de archivos. SMS Composer: formulario de envo de mensajes cortos SMS.
23
Se puede especificar un TimeOut. Cuando el tiempo indicado ha terminado se ejecuta el comando DISMISS_COMMAND. En general este comando muestra el formulario de inicio. La pantalla de presentacin inmediata suele contener un recurso tipo imagen y un texto asociado.
import org.netbeans.microedition.lcdui.SplashScreen; public class MiprimerMIDLET .... { private SplashScreen splashScreen; }
24
25
Elemento ALERT
Las alertas son utilizadas para informar sobre el estado de la ejecucin de determinadas operaciones.
26
Cdigo - Alert
private Alert alert; public Alert getAlert() { if (alert == null) { alert = new Alert("alert", "MENSAJE DE ALERTA", getImgAlerta(), AlertType.ALARM); alert.setTimeout(Alert.FOREVER); } return alert; } public void commandAction(Command command, Displayable displayable) { if (displayable == form) { if (command == exitCommand) { exitMIDlet(); } else if (command == okCommand) { switchDisplayable(getAlert(), getForm()); } } else if ... }
27
Resultado
28
Elemento LIST
Tipos:
IMPLICIT: utilizadas para la construccin de mens, ejecuta un comando (SELECT_COMMAND) cuando un usuario selecciona un elemento. EXCLUSIVE:
MULTIPLE:
29
30
31
getSelectedIndex() : recupera el ndice del elemento seleccionado. deleteAll(): borra todos los elementos de la lista. delete(int index): borra el elemento que se encuentra en el ndice especificado. insert(int index,String str, Image img): inserta un elemento en la lista en el ndice indicado (index). append(String str, Image img): aade al final de la lista el elemento indicado. Las imgenes son opcionales, utilizar null para su omisin en los mtodos.
32
getSelectedFlags(boolean[] arg): devuelve el nmero de elementos seleccionados junto con un array de flags que indica el estado de cada elemento. isSelected(int index): indica si un elemento est seleccionado o no. size(): devuelve el nmero de elementos de la lista. setTitle(String title): establece el nombre de la lista.
33
Permiten crear interfaces de entrada de datos utilizando los siguientes componentes visuales:
Text Field: Campo caja de texto. Es posible asociar restricciones: Telfono, e-mail, URL, valores numricos, password, etc... Date Field: Campo fecha, incluye mecanismos que facilitan la entrada de este tipo de datos.
34
TextField
Propiedades:
Mtodos:
getString(): devuelve el contenido escrito por el usuario en la caja de texto. getMaxSize(): devuelve el tamao mximo permitido.
35
Date Field:
Propiedades:
Input Mode: DATE / TIME / DATE_TIME Time Zone: especifica la zona horaria. Ej: Europe /Madrid
Mtodos:
Gauge:
Propiedades:
Max Value: lmite del mximo valor admitido por la barra de progreso. Value: valor de la barra de progreso.
Mtodos:
set / getValue(int v): establece el valor de la barra de progreso. setMaxValue(int v): establece el lmite mximo de la barra de progreso.
36
ChoiceGroup: Listas
EXCLUSIVE
MULTIPLE
POP-UP (ComboBox)
37
ChoiceGroup
Propiedades:
Mtodos:
getSelectedIndex(): recupera el ndice del elemento seleccionado. getSelectedFlags(boolean[] flags): devuelve el nmero de elementos seleccionados y un array con el estado de cada uno de ellos. getString(int index): devuelve el nombre del elemento ubicado en la posicin index. size(): devuelve el tamao de la lista. Modificacin de elementos: mtodos similares al control Displayable LIST delete / deleteAll / insert / append
38
Image Item: imagen. Spacer: espacio de separacin. String Item: etiqueta. Table Item: tabla
39
Comandos generales
BACK: Volver a la pantalla anterior. EXIT: Salir de la aplicacin. CANCEL: Cancelar operacin. OK: Comando de conformidad. HELP: Comando de ayuda. STOP: Comando de parada de operacin. SCREEN: Comando general aplicable a un elemento Displayable. ITEM: Comando asociado a un control visual de un formulario.
40
Cada control puede tener asociado uno o varios comandos durante su activacin. Este tipo de asociacin se realiza a travs del comando ITEM_COMMAND
public void commandAction(Command command, Item item) { if (item == lstElementos) { if (command == comandoBorrarElementoLista) { } } else if (item == txtTexto) { if (command == comandoBuscar) { } else if (command == comandoEnviar) { } else if (command == comandoInsertarElementoLista) { insertarElemento(); } } }
41
42
Entry Point: Llamada a un mtodo. If: Accin condicional Call Point: Llamada de ejecucin de una seccin de cdigo. List Action: cdigo asociado a un elemento de una lista. Switch: seleccin basada en una serie de casos.
43
44
Cdigo - Formulario
public Form getFrmCliente() { if (frmCliente == null) { frmCliente = new Form("NUEVO CLIENTE", new Item[] { getTxtNombre(), getTxtApellidos(), getTxtTelefono(), getFecha(), getSpacer(), getSexo(), getChoiceGroup(), getSpacer1(), getImageItem(), getStringItem1(), getSpacer2(), getTableItem()}); frmCliente.addCommand(getBackCommand1()); frmCliente.setCommandListener(this); } return frmCliente; }
45
Crear un formulario con 1 caja de texto y una lista de tipo POPUP. Incluir 1 comando de insercin asociado a la caja de texto.
Cuando un usuario seleccione el comando, el contenido de la caja de texto ha de incluirse como un nuevo elemento al final de la lista. Si la cadena introducida en la caja de texto existe, el control avisa con un mensaje de informacin sobre la situacin. Cuando un usuario seleccione el comando, el elemento elegido de la lista ha de eliminarse.
46
Pantalla utilizada para indicar al usuario de forma activa sobre la ejecucin de una tarea larga. Dos comandos: SUCCESS_COMMAND / FAILURE_COMMAND
47
48
Formulario creado para el envo de SMS. Sobre la mquina virtual se han de conceder los permisos para el envo de SMS.
49
getSelectedFile()
GetSelectedFileURL()
50
Pantalla - LOGIN
Formulario genrico utilizado para el acceso a un sistema remoto. Ej. escenario de autentificacin de sesin para la ejecucin de operaciones remotas contra un servidor. Mtodos importantes:
getPassword() getUserName()
51
Librera utilizada para gestionar registros en la plataforma J2ME. Proporciona los mecanismos bsicos de gestin para:
52
Creacin de un almacn
import javax.microedition.rms.RecordEnumeration; import javax.microedition.rms.RecordStore; import javax.microedition.rms.RecordStoreException; import javax.microedition.rms.RecordStoreNotOpenException; RecordStore rs = null; try { rs = RecordStore.openRecordStore( "myrs", true ); } catch( RecordStoreException e ){ // error en apertura o creacin }
53
Insercin de un registro
Cliente c=new Cliente(txtNombre.getString(), txtApellidos.getString()); byte[] cbytes=c.serialize(); try { rs.addRecord(cbytes,0,cbytes.length); rs.closeRecordStore(); } catch (RecordStoreNotOpenException ex) { ex.printStackTrace(); } catch (RecordStoreException ex) { ex.printStackTrace(); }
54
Eliminacin de un registro
public void listClientesAction() {
String __selectedString = getListClientes().getString(getListClientes().getSelectedIndex()) int index=this.getListClientes().getSelectedIndex(); int p=__selectedString.lastIndexOf('.'); int rsindex=Integer.parseInt(__selectedString.substring(0,p)); this.getListClientes().delete(index); RecordStore rs = null; try { rs = RecordStore.openRecordStore( "myrs", true ); rs.deleteRecord(rsindex); rs.closeRecordStore(); } catch( RecordStoreException e ){ // error. } }
55
Lectura de un almacn
try { int i; RecordEnumeration re=rs.enumerateRecords(null,null,false); while (re.hasNextElement()) { try{ i=re.nextRecordId(); int size = rs.getRecordSize( i ); if( data == null || data.length < size ){ data = new byte[size]; } rs.getRecord(i,data,0); Cliente c=new Cliente(data); getListClientes().append(i + "." + c.getNombre() + " " + c.getApellidos(),null); }catch(Exception recordException){ recordException.printStackTrace(); } } } catch (Exception ex) { ex.printStackTrace(); }
DESARROLLO DE APLICACIONES J2ME 2008 Jess Soto Carrin.
56
57
Tamao C1
Tamao C2
[NOMBRE]
[APELLIDOS]
58
Gestin de permisos
59