UNIVERSIDAD CARLOS III DE MADRID DEPARTAMENTO DE INGENIERÍA TELEMÁTICA



Documentos relacionados
INTRODUCCIÓN A LA PROGRAMACIÓN DE DISPOSITIVOS MÓVILES

Programación para sistemas en red IV. Conceptos básicos II

Capítulo 5 Introducción al Desarrollo de Aplicaciones Móviles usando J2ME

J2ME (Java to Micro Edition)

UNIVERSIDAD AUTÓNOMA DE CHIAPAS LICENCIATURA EN SISTEMAS COMPUTACIONALES

Programación para sistemas en red IV. Tomar información desde la pantalla

J2ME ENTORNO DE EJECUCIÓN. Un entorno de ejecución determinado de J2ME se compone entonces de una selección de:

Java TM MicroEdition -Conceptos Básicos-

>> Programación de dispositivos móviles.

Java ME. Aplicaciones Móviles Curso de Adaptación Grado en Ingeniería de Sistemas Audiovisuales

Manual del Programa Conecta 3V Para Teléfonos Móviles.

Java, JavaME y el entorno Eclipse - Ejercicios

Capítulo 5-2 J2ME: Componentes de Interfaces de Usuario

Taller de Programación de Dispositivos Móviles. José Miguel Rubio L. Oficina

Identificar problemas y proponer soluciones integrando las tecnologías emergentes en Internet.

DEPARTAMENTO DE INGENIERÍA TELEMÁTICA UNIVERSIDAD CARLOS III DE MADRID SOFTWARE EN DISPOSITIVOS MÓVILES. Celeste Campo.

DIRECCIÓN REGIONAL DE EDUCACIÓN PUNO INSTITUTO DE EDUCACIÓN SUPERIOR TECNOLÓGICO PÚBLICO MACUSANI

Tema 1. Introducción a JAVA

Programación Orientada a Objetos con Java

J2ME Programando un cronómetro para nuestro celular

1. INTRODUCCIÓN Y OBJETIVOS

Android y Java para Dispositivos Móviles

Desarrollo de software para móviles con Java 2 Microedition

Sistema Web con Acceso a Bases de Datos Multiplataforma a Través de Teléfonos Celulares

Visualización y modelado de elementos geográficos en dispositivos móviles. Capítulo 5: Aplicaciones cliente

Scientia Et Technica ISSN: Universidad Tecnológica de Pereira Colombia

Lic. Sofia J. Vallejos

CAPÍTULO 3 VISUAL BASIC

Sebastián García Galán

Unidad I. Introducción a la programación de Dispositivos Móviles (Continuación )

0DQXDOGHGHVDUUROORGH DSOLFDFLRQHVHQ-0( 9HUVLyQGHOGRFXPHQWR )HFKDGHOGRFXPHQWRGH0DU]RGH

Sebastián García Galán

U2. Introducción al desarrollo de aplicaciones móviles Smartphone y Android Desarrollo de Aplicaciones III TIC-UTSV Enero 2015 I.S.C.

Gestor de aplicaciones Java. Esta herramienta es el intérprete de los archivos de clase generados por el javac (compilador).

Moving Java into mobile phones

PROGRAMACIÓN DE JUEGOS PARA MÓVILES CON J2ME

Programación para sistemas en red IV. Manejo de gráficos

Programación Avanzada Ingeniería Civil en Computación

PROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez

Manual del Protocolo XML-RPC de Mensajería Negocios

Programació de jocs per mòbils amb J2ME.

Ejercicios - Persistencia en Android: ficheros y SQLite

Capitulo 4. JavaFX. Se da a conocer la plataforma de desarrollo JavaFX, los niveles en el cual se encuentra

Introducción a Java LSUB. 15 de enero de 2015 GSYC

Programación para sistemas en red IV. Estructura básica de un MIDlet

Implementación de tecnologías móviles para celular en una biblioteca universitaria

Capítulo V. Implementación

Ejercicio 1 (3 puntos).-

App para realizar consultas al Sistema de Información Estadística de Castilla y León

Curso de Java POO: Programación orientada a objetos

SINAC - Sistema de Información Nacional de Agua de Consumo MENU PRINCIPAL. Copyright Ministerio de Sanidad y Consumo

Arquitectura de Aplicaciones

Tema 2: La Tecnología Java

%& %)& '$!%*+ $, %%%&$ %%

Programa Control SMS para Teléfonos Android.

INTRODUCCIÓN A JAVA. Índice

Generación de código a partir de UML

Tópicos Selectos de Programación

Capitulo 5. Implementación del sistema MDM

Evaluación de Alternativas de Comunicacion entre PC- Teléfono Móvil sobre Java

Anexo IV Configuración del Entorno de Desarrollo. Guía de puntos de interés de la Ciudad de Madrid

2.2.- Paradigmas de la POO

INF 473 Desarrollo de Aplicaciones en

Guía de uso del SoftPHONE IP para PDA

Programación Orientada a Objetos en Java

Kaldeera Advanced Forms 2009 Guía del usuario

MODELO DE IMPLEMENTACIÓN

AVD, el emulador de Smartphone y Tablets Android que incluye el SDK de Google

Práctica 2: Simón dice

Microsoft Access proporciona dos métodos para crear una Base de datos.

PROYECTO PROPIO Ciclo Formativo Grado Superior en Desarrollo de Aplicaciones Multiplataforma y Programación de Juegos para Dispositivos Móviles

Utilización de J2ME sobre Linux en plataformas embebidas

Universidad de Cantabria

I. Introducción a la programación orientada a objetos y al lenguaje JAVA Colegio Reuven Feuerstein Javier Navarro

Formularios. Formularios Diapositiva 1

Sebastián García Galán

Unitronics UniOPC. Tutorial. Unitronics Remote Operator. En este tutorial veremos como funciona el software Unitronics UniOPC

Introducción al lenguaje Java

IVista: es la interfaz con la que el Presentador se comunica con la vista.

MANUAL DE LA APLICACIÓN DE ENVÍO DE SMS

Manual CMS Mobincube

19. Packages o paquetes

Desarrollo de un Sistema de Gestión de Proyectos mediante el framework GWT

ESCUELA SUPERIOR DE INFORMATICA Prácticas de Estadística UNA SESIÓN EN SPSS

Programación Java J2ME: Java para dispositivos móviles

1.- MENU DE CONTROL O MENU VENTANA: permite cerrar la ventana cambiarla de tamaño y pasar a otra ventana

PANEL DE CONTROL (Zona de Administración) MANUAL DE USO Por conexanet. Revisión 1.1 Fecha

INTELIGENCIA ARTIFICIAL 2015 TALLER RÁPIDO DE PROGRAMACIÓN EN JAVA

La informática es el conjunto de técnicas y conocimientos necesarios para el tratamiento automático de la información mediante el ordenador.

Windows Server 2012: Infraestructura de Escritorio Virtual

Programación en Java. Programación en OO

Modelo de Objetos Distribuidos

Unidad II. Interfaz Grafica

Desarrollo de aplicaciones móviles J2ME. BloobsME - Memoria de Proyecto

DESARROLLO DE UN CLIENTE SOFIA2 (KP) SIGUIENDO ARQUITECTURA KP-MODELO

Por qué Mobility Live?

Programación J2ME con Netbeans. Interfaz gráfico para el tetris Septiembre de 2006

El lenguaje de programación Java

APLICATECA. didimo Marketing. Manual de usuario. By DIDIMO Servicios Móviles.

MANUAL DE USUARIO FACTURACIÓN ELECTRÓNICA

Transcripción:

UNIVERSIDAD CARLOS III DE MADRID DEPARTAMENTO DE INGENIERÍA TELEMÁTICA Mobile Information Device Profile (MIDP) Florina Almenárez Mendoza Celeste Campo Departamento de Ingeniería Telemática Universidad Carlos III de Madrid florina@it.uc3m.es, celeste@it.uc3m.es Parte de este material se basa en transparencias de Natividad Martínez Madrid (nati@it.uc3m.es) Objetivo Aprender a desarrollar aplicaciones utilizando el API de MIDP 2.0 Bibliografía: J2ME : Java 2 micro edition : manual de usuario y tutorial. Froufe, Agustín y Jorge, Patricia. i Ra-Ma. [2004]. L/S 004.438438 JAVA FRO, L/D 004.438 JAVA FRO. Capítulos 6, 9 al 12. Especificación de MIDP 2.0 (JSR 118). Disponible en http://www.jcp.org Wireless Java Programming with Java 2 Micro Edition. Feng, Yu and Zhu, Jun. SAMS [2001]. L/D 004.438 JAVA FEN. Capítulos 5 al 9. Pág. 1 1

Índice Generalidades y conceptos básicos MIDlets y MIDlet Suite desarrollo y despliegue Librerías de MIDP Interfaz de usuario API de alto nivel API de bajo nivel API de juegos Conectividad Almacenamiento persistente Pág. 2 Versiones de MIDP MIDP 1.0 JSR 30 Final Release: Sep, 2000 MIDP 2.0 JSR 118 Final Release: Nov, 2002 Final Release 2: Jun, 2006 MIDP 3.0 JSR 271 Final Release : Dic, 2009 MIDlets en CLDC, CDC, y OSGi Pág. 3 2

Generalidades Requisitos hardware: Memoria: 256 KB de memoria novolátil para los componentes MIDP 8 KB de memoria no volátil para creación de datos persistentes 128 KB de memoria volátil para la ejecución de Java Pantalla: Tamaño: 96x54 Profundidad: 1 bit Aspecto pixel 1:1 Entrada, uno o más de los siguientes mecanismos: Teclado one-handed o two-handed Pantalla táctil Conectividad: Limitada, típicamente wireless Sonido: Tonos, vía hardware dedicado o algoritmo software Pág. 4 Alcance Define el conjunto de APIs disponibles para el desarrollo de aplicaciones portables entre dispositivos móviles. MIDP cubre: ciclo de vida de la aplicación interfaz de usuario soporte de red almacenamiento persistente sonidos juegos en 2D seguridad extremo a extremo timers, excepciones, Pág. 5 3

Alcance (II) MIDP no cubre: descarga y gestión de aplicaciones (MIDlets) en los dispositivos. seguridad a bajo nivel. gestión de baterías, codificadores de voz, Se asume la existencia de Application Management System (AMS): dependiente del dispositivo. instala, interacciona con y borra MIDlets. instalación (ej. accediendo a un servidor web vía red inalámbrica) actualización de versiones de MIDlets Pág. 6 Propiedades MIDP MIDP debe proporcionar al menos las siguientes propiedades microedition.locale microedition.profiles MIDP 2.0 especifica dos propiedades más dependientes de la implementación microedition.commports t microedition.hostname Pág. 7 4

MIDlets Un MIDlet es la unidad básica de ejecución en MIDP tiene un ciclo de vida bien definido. da información descriptiva sobre sí mismo. extiende javax.microedition.midlet.midlet Existe el concepto de MIDlet permanente: reside, al menos en parte, en memoria no volátil (ROM, EEPROM). puede descargarse de la red y grabarse en memoria persistente. pueden ser ejecutados repetidas veces por el usuario sin necesidad de volver a descargarlos. Pág. 8 MIDlet Suite Conjunto de aplicaciones (MIDlets) que comparten recursos en el contexto de una única máquina virtual. Aunque sólo desarrollemos un MIDlet se debe empaquetar en un MIDlet Suite. Pág. 9 5

Desarrollo y despliegue de MIDlets 1. Creación (etapas de desarrollo) 2. Publicación 3. Descarga 4. Instalación 5. Ejecución 6. Actualización (gestión de versiones) 7. Borrado A M S Pág. 10 1. Creación Escribir el código y compilar Preverificar el código Empaquetar en un JAR y crear el descriptor (JAD) Ejecutar en el emulador Depurar los fallos prog.java javac prog.class preverificador prog.class Entorno de desarrollo prog.jar prog.jad De escarga verificador intérprete Pág. 11 6

2. Publicación MIDlet publicar Servidor Descargar crear MIDlet MIDlet Entorno de desarrollo Dispositivo móvil Pág. 12 3. Descarga Gestionada por el Application Management System (AMS) El dispositivo obtiene el MIDlet de alguna fuente: red inalámbrica (Wi-Fi, Bluetooth, UMTS, GPRS,...) puerto serie IrDA... Negociación sobre capacidades del dispositivo según los requisitos del MIDlet, coste,... Se descarga el MIDlet a la memoria del dispositivo Pág. 13 7

4. Instalación Gestionado por el AMS información al usuario sobre el proceso Puede comprobar que el MIDlet no vulnera las políticas de seguridad del móvil Puede transformar (convertir) el MIDlet de formato público a un formato específico del dispositivo: ejemplo: en PalmOS se transforma a formato PRC. El MIDlet queda almacenado en una zona de memoria persistente Pág. 14 5. Ejecución El usuario selecciona el MIDlet y lo ejecuta En este momento, el MIDlet entra en la VM y se invocan los métodos que gestionan su ciclo de vida: Paused: Ha sido new() creado pero aún no pauseapp() se ha ejecutado y en espera. Active: En ejecución. Paused Active Destroyed: Ha startapp() liberado recursos, destruido hilos y destroyapp() terminado toda su actividad. Destroyed Pág. 15 destroyapp() 8

6. Actualización Puede publicarse una nueva versión del MIDlet. AMS debe gestionar la lista de MIDlets instalados y sus versiones puede así actualizar de versiones más antiguas a más recientes del MIDlet Los atributos del MIDlet, incluida la versión, están: en el descriptor del MIDlet (JAD). en el manifiesto del MIDlet contenido en el JAR. Pág. 16 7. Borrado El AMS debe permitir al usuario eliminar MIDlets Desintalar una aplicación ió instalada previamente Se borra: MIDlet todos los registros en memoria permanente escritos por ese MIDlet los recursos asociados al mismo Pág. 17 9

JAR y Manifiesto Incluye los ficheros de clases y otros recursos asociados al MIDlet, por ejemplo imágenes. Fichero JAR puede contener un MIDlet Suite El manifiesto está incluido en el JAR y contiene información sobre los contenidos del fichero JAR: Atributos obligatorios MIDlet-Name MIDlet-Version MIDlet-Vendor MIDlet-<n> (name, icon, class) MicroEdition-Profile MicroEdition-Configuration Pág. 18 Atributos opcionales MIDlet-Description MIDlet-Icon MIDlet-Info-URL MIDlet-Data-Size MIDlet-Permissions MIDlet-Permissions-Opt MIDlet-Push-<n> Otros atributos específicos de la aplicación Descriptor (JAD) Permite que el AMS verifique si el MIDlet es indicado antes de descargarlo. Esun fichero de textot con extensión.jad. Atributos obligatorios MIDlet-Name MIDlet-Version MIDlet-Vendor MIDlet-Jar-URL MIDlet-Jar-Size Pág. 19 Atributos opcionales MIDlet-<n> (name, icon, class) MicroEdition-Profile MicroEdition-Configuration MIDlet-Description MIDlet-Icon MIDlet-Info-URL MIDlet-Data-Size MIDlet-Permissions i MIDlet-Permissions-Opt MIDlet-Push-<n> MIDlet-Install-Notify MIDlet-Delete-Notify MIDlet-Delete-Confirm Puede incluir otros atributos específicos de la aplicación 10

Ejemplo HolaMundo Manifiesto y Descriptor MIDlet-Name: HolaMundo MIDlet-Version: 1.0 MIDlet-Vendor: ITSWC MIDlet-1: HolaMundo, /hola.png, uc3m.it.swc.holamundo MIDlet-2: HolaCanvas, /canvas.png, uc3m.it.swc.holacanvas MicroEdition-Profile: MIDP-2.0 MicroEdition-Configuration: CLDC-1.1 MIDlet-Description: Mi primer MIDlet MIDlet-Jar-URL: HolaMundo.jar MIDlet-Jar-Size: 100 Pág. 20 Desarrollo de aplicaciones SDK de Java 2 compilar aplicaciones J2ME Kits de desarrollo Sun Wireless Toolkit SDK 3.0 Java ME Nokia carbide.j Eclipse, Sun One Studio, Borland JBuilder Siemens Siemens Mobile Toolkit Entornos de desarrollo integrados Eclipse EasyEclipse Mobile Java Plugins: EclipseME, SIPTech J2ME, Wirelesoft VistaMax, NetBeans WTK, Plugin J2ME, Mobility Pack 4.1 Websphere Studio Device Developer (WSDD), IBM Pág. 21 11

Índice Generalidades y conceptos básicos MIDlets y MIDlet Suite desarrollo y despliegue Librerías de MIDP Interfaz de usuario API de alto nivel API de bajo nivel API de juegos Almacenamiento persistente Conectividad Pág. 22 Librerías Ciclo de vida de la aplicación (MIDlet): javax.microedition.midlet Interfaz de usuario javax.microedition.lcdui Memoria persistente: javax.microedition.rms Conectividad javax.microedition.io io Núcleo java.io java.lang java.util Pág. 23 12

MIDP 1.0 lcdui Interfaz de Usuario Command Display Graphics Image Displayable Screen Canvas Alert List Form TextBox javax.microedition midlet Ciclo de vida Item MIDlet ChoiceGroup DateField Gauge ImageItem StringItem TextField java io Red rms Almacenamiento persistente io lang Connector RecordStore util Pág. 24 Connection HttpConnection DatagramConnection ContentConnection InputConnection RecordEnumeration RecordComparator RecordFilter Librerías añadidas en MIDP 2.0 Interfaz de usuario javax.microedition.lcdui javax.microedition.lcdui.game Seguridad: Clave pública javax.microedition.pki Sonidos javax.microedition.media javax.microedition.media.control Pág. 25 13

MIDP 2.0 (respecto MIDP 1.0) lcdui Interfaz de Usuario Displayable Item Canvas MIDP 1.0 CustomItem Spacer javax.microedition lcudi.game Interfaz de Usuario Juegos midlet Ciclo de vida io Red GameCanvas Layer LayerManager MIDP1.0 HttpsConnection UDPDatagramConnection socketconnection Sprite TiledLayer media media.control Sonido rms Almacenamiento persistente pki Clave Pública Manager Certificate Player PlayerListener Control ToneControl VolumeControl java io lang Programación util con MIDP Pág. 26 MIDlet javax.microedition.midlet.midlet Clase abstracta base para todos los MIDlets: Constructor: protected MIDlet() protected abstract void startapp() throws MIDletStateChangeException protected abstract void pauseapp() protected abstract void destroyapp(boolean unconditional) throws MIDletStateChangeException public final void notifydestroyed() Comunica al AMS que el MIDlet ha limpiado la memoria y ha terminado. public final void notifypaused() Comunica al AMS que el MIDlet está en pausa. public final String getappproperty(string key) Se le llama para obtener las propiedades del MIDlet (descriptor JAD) Pág. 27 14

Ciclo de vida de un MIDlet New Application() pauseapp Paused Active startapp destroyapp destroyapp Destroyed Pág. 28 Código ejemplo HolaMundo (I) import javax.microedition.midlet.*; import javax.microedition.lcdui.*; Implementa startapp(), pauseapp(), destroyapp() public class HolaMundo extends MIDlet implements CommandListener { // Componentes de UI del MIDlet Implementa commandaction(c,s) private Display display; Gestor de la pantalla y dispositivos de entrada. Uno por MIDlet private TextBox mainscreen = null; Permite introducir y editar texto private Command exit = new Command("exit", Command.EXIT, 2); Botón de comando que permite ejecutar una acción Pág. 29 15

Código ejemplo HolaMundo (II) // Constructor sin parámetros Obtiene una referencia del public HolaMundo() { display del MIDlet display = Display.getDisplay(this); mainscreen = new TextBox("Text Box", "Hola Mundo", 512,0); mainscreen.addcommand(exit); addcommand(exit); d( Comando asociado a mainscreen mainscreen.setcommandlistener(this); } Se establece mainscreen como escuchador de exit Pág. 30 Código ejemplo HolaMundo (III) // Implementa el método startapp() public void startapp() { display.setcurrent(mainscreen); } Hace el TextBox visible // Implementa el método pauseapp() public void pauseapp() { } // Implementa el método destroyapp() public void destroyapp(boolean unconditional) { } Ciclo de vida del MIDlet Pág. 31 16

Código ejemplo HolaMundo (IV) } /* * El MIDlet implementa el método escuchador * correspondiente del interfaz CommandListener */ public void commandaction(command c, Displayable s) { if (c == exit) { destroyapp(true); notifydestroyed(); t } } Pág. 32 Índice Generalidades y conceptos básicos MIDlets y MIDlet Suite desarrollo y despliegue Librerías de MIDP Interfaz de usuario API de alto nivel API de bajo nivel API de juegos Almacenamiento persistente Conectividad Pág. 33 17

API de alto nivel: Interfaz de usuario muy portable. orientada a screen y widget. las aplicaciones que usan este API deberían funcionar en todos los dispositivos. no hay acceso a todas las funciones del dispositivo. más sencillo y menos potente que AWT. API de bajo nivel: primitivas de dibujo. eventos de teclado. menos portabilidad, mejor experiencia del usuario. Pág. 34 Interfaz gráfico Paquete: javax.microedition.lcdui Clases básicas: Displayable: Información a ser visualizada. Display: Selecciona qué objeto Displayable se muestra al usuario. Pág. 35 18

Interfaz gráfico Clase Displayable Existen tres categorías de objetos Displayable: Screen con estructura predefinida: Alert, List o TextBox (subclases de Screen) no se pueden enriquecer con nuevos componentes. Screen genérico: Form (subclase de Screen) se pueden llenar con texto, imágenes u otros componentes (objetos Item) ) de interfaz gráfico. Canvas (API de bajo nivel): Usuario tiene control total sobre los componentes del display y puede acceder a eventos de bajo nivel. Pág. 36 Interfaz gráfico Clase Display Métodos para controlar la visualización de objetos Displayable y obtener propiedades del dispositivo color, número de colores, vibración, etc. Sólo uno por MIDlet (singleton). Obtener el objeto Display: static Display getdisplay(midlet m) Obtener el Displayable que se está visualizando: Displayable getcurrent() Establecer el Displayable a visualizar void setcurrent(displayable nextdisplayable) void setcurrent(alert alert, Displayable nextdisplayable) Pág. 37 19

Interfaz gráfico Gestión de eventos Mismo modelo que AWT: Fuentes de eventos y escuchadores (listeners) de evento Gestión de eventos en el mismo hilo en el que se produce el evento. Eventos de alto nivel: CommandAction(Command c, Displayable d) CommandListener Fuente: Displayable ItemStateChanged(Item i) ItemStateListener Fuente: Form Item interactivos: Gauge, ChoiceGroup, TextField, Pág. 38 Interfaz gráfico Gestión de eventos (II) Eventos de bajo nivel: Relacionados con pulsaciones de teclas, de puntero, keypressed, keyreleased, keyrepetead, pointerpressed, pointerreleased, Una aplicación no puede acceder a eventos de bajo nivel a través de un objeto Displayable de alto nivel. Pág. 39 20

Interfaz gráfico Clase Command Un objeto command tiene tres atributos: Command(String label, int Type, int priority) 1. Label: String representando el significado del comando, lo que la aplicación muestra al usuario. 2. Type: BACK, CANCEL, HELP, EXIT, ITEM, OK, SCREEN y STOP. 3. Priority: Entero que indica la importancia del comando. Mayor cuanto menor sea el número. Añadir comando a un Displayable: addcommand(command) Eliminar comando de un Displayable: removecommand(command) Pág. 40 Interfaz gráfico Imágenes Clase Image: Imágenes inmutables: No se pueden modificar. Generadas a partir de un fichero (recurso, descargado, ) Tipo de imágenes en un Alert, List o Form Imágenes mutables: Se pueden modificar. Cómo se crean? Inmutables createimage(string nombre) createimage(byte[] data, int offset, int longitud) createimage(image imagen) createimage(inputstream stream) Mutables createimage(int ancho, int alto) Pág. 41 21

API UI de alto nivel Clase Screen Elemento funcional de la interfaz de usuario Título, múltiples comandos, y un objeto Ticker Un objeto de tipo Ticker (marquesina) consiste en un texto que se desplaza continuamente a través de la pantalla Ticker(String texto) Cuatro subclases: Alert List TextBox Form Pág. 42 API UI de alto nivel Clase Alert Permite visualizar datos (texto, imágenes) durante un cierto tiempo (timeout) antes de pasar a otra pantalla Constructores: Alert(String title) Alert(String title, String alerttext, Image alertimage, AlertType alerttype) Timeout en milisegundos: Establecido con el método: settimeout(int time) Temporizador infinito (Alert.FOREVER): cambio de pantalla mediante comando. Tipos de alertas ALARM, CONFIRMATION, ERROR, INFO, WARNING Pág. 43 22

API UI de alto nivel Clase List Implementa el interfaz Choice Los tipos de listas son definidos id en el interfaz Implícitas, exclusivas y de selección múltiple Constructores: List(String title, int listtype): Se crea una lista vacía, los elementos de selección se pueden añadir después. List(String title, int listtype, String[] stringelements, Image[] imageelements: Se indican los elementos de la lista y posibles imágenes asociadas a cada elemento. Pág. 44 1. EXCLUSIVE API UI de alto nivel Interfaz Choice Exactamente t unelemento seleccionado simultáneamente. t 2. IMPLICIT Sólo se puede utilizar en listas (List), donde el elemento que está enfocado es el que se selecciona implícitamente. 3. MULTIPLE Se puede seleccionar cualquier número de elementos, incluido ninguno, y en cualquier combinación. 4. POPUP Tiene exactamente un elemento seleccionado a la vez. No es válido para objetos List Pág. 45 23

API UI de alto nivel Interfaz Choice (II) Método int append(string, Image) void delete(int) String getstring(int) Image getimage(int) void insert(int, String, Image) void set(int, String, Image) Descripción Añade el elemento Borra el elemento Obtiene el texto del elemento Obtiene la imagen del elemento Insertaunelementoenlaposición previa al elemento indicado Modifica el elemento indicado void Modifica el estado de selección de setselectedflags(boolean[]) todos los elementos void setselectedindex(int, Modifica el estado de un elemento boolean) concreto int size() Obtiene el número de elementos Pág. 46 API UI de alto nivel Ejemplos List y Choice Ver código: ListDemo.java (WTK UIDemo) ListExample.zip (proyecto WTK) Pág. 47 24

API UI de alto nivel Clase TextBox Permite al usuario introducir y editar texto Constructor TextBox(String title, String text, int maxsize, int constraints) Tamaño máximo: En el constructor y se puede modificar con setmaxsize. Restricciones de entrada: ANY: cualquier texto DECIMAL: Números con parte decimal EMAILADDR: dirección de correo electrónico NUMERIC: valor entero PHONENUMBER: número de teléfono URL: URL Pág. 48 API UI de alto nivel Clase TextBox (II) Restricciones de entrada: PASSWORD: Caracteres introducidos se muestran sustituidos por otro carácter (asteriscos) UNEDITABLE: El texto no se puede editar SENSITIVE: El texto no debe almacenarse NON_PREDICTIVE: Indica el formato de entrada INITIAL_CAPS_WORD: Mayúscula la letra inicial de cada palabra ab a INITIAL_CAPS_SENTENCE: Mayúscula la primera letra de cada frase Pág. 49 25

API UI de alto nivel Clase TextBox (III) Métodos Descripción Establece el contenido como array void setchars(char[] data, Establece el contenido como array int offset, int legth) int getchars(char[] data) Obtiene el contenido como array void setstring(string text) Establece el contenido como String String getstring() Obtiene el contenido como String void insert(char[] data, Modifica el contenido a partir de una int offset, int length, int posición position) void insert(string src, int position) void delete(int offset,int length) Borra el contenido Pág. 50 API UI de alto nivel Clase Form Contiene un número arbitrario de componentes (items) El dispositivo controla la posición y el desplazamiento Constructores: Form(String title) Form(String title, Item[] items) Métodos: int append(image img) int append(item item) int append(string str) void delete(int itemnum) void insert(int itemnum, Item item) void set(int itemnum, Item item) Item get(int itemnum) Un Item sólo puede colocarse en un Form Pág. 51 26

API UI de alto nivel Clase Item Conjunto de elementos que pueden añadirse a un Form, con una etiqueta asociada. Superclase de: StringItem: Visualizar texto (sólo las aplicaciones interaccionan, no el usuario) ImageItem: Con parámetro layout para alineación TextField: Editar texto DataField: Visualizar fechas y horas Pág. 52 Superclase de: API UI de alto nivel Clase Item (II) ChoiceGroup: Item que implementa la interfaz Choice (no implícita) Parecido a List. Gauge: Diagrama de barras Spacer: Ajustar el espacio entre componentes visibles CustomItem: Clase abstracta que permite definir nuevos tipos de Items. MIDP 2.0. Pág. 53 27

API UI de alto nivel Ejemplos Form e Item Ver código: UIExample.zip (proyecto ejemplo WTK 2.2) Pág. 54 28