JME Java Micro Edition. Índice Introducción: Midlet Introducción a la interfaz de Alto nivel...

Post on 26-Jan-2015

12 views 4 download

Transcript of JME Java Micro Edition. Índice Introducción: Midlet Introducción a la interfaz de Alto nivel...

JMEJME

Java Micro Edition

ÍndiceÍndiceIntroducción: MidletIntroducción a la interfaz de Alto nivelIntroducción a la interfaz de Bajo nivelRMSLWUITSugerencias

JME: Introducción MidletJME: Introducción MidletIntroducciónEjemploMIDletElementos

Midlet: IntroducciónMidlet: IntroducciónJME es Java con menos libreríasJME abarca un gran tipo de dispositivos

limitados no sólo teléfonos móviles

Midlet: IntroducciónMidlet: IntroducciónConfiguraciones:

◦CDC (Connected Device Configuration) Dispositivos más potentes (TV con internet,

sistemas Navegación). CVM

◦CLDC(Connected Limited Device Configuration) Dispositivos de capacidad limitada (PDA, Móviles). Utilizan KVM

Perfiles:◦MIDP (Mobile Information Device Profile)◦PDA Profile (Opcional)

Midlet: IntroducciónMidlet: Introducción

DEMO

MidletMidletDos puntos de visión

◦Clase superior jerarquía JME◦Aplicación en si

¿Cómo se ejecuta?◦No tiene Main◦Ni las configuraciones ni los perfiles poseen

Main◦Se encarga de el AMS (Application

Management System)

Midlet: AMSMidlet: AMS¿Que es AMS?

◦Programa pre-instalado dependiente del dispositivo

◦Dependiente de la implementación de JME del fabricante

Funcionalidad◦Gestiona la descarga de los Midlet◦Gestiona la ejecución de los Midlet◦Controla el acceso a los recursos del dispositivo

Midlet: Ciclo VidaMidlet: Ciclo VidaEl AMS llama a los siguientes métodos

para controlar la vida de un Midlet◦starApp◦pauseApp◦destroyApp

Genera el siguiente ciclo de vida

Midlet: CódigoMidlet: Código

Midlet: Jerarquía de clasesMidlet: Jerarquía de clasesLas clases Específicas de JME son las siguientes

Midlet: API y JSRMidlet: API y JSRJME esta compuesto por varias APIs o JSRs

(Java Specification Request)◦API Alto Nivel◦API Bajo Nivel◦RMS◦LWUIT◦Bluetooth◦MMAPI◦…

JME: Introducción a la Interfaz de Alto NivelJME: Introducción a la Interfaz de Alto Nivel

IntroducciónElementos Alto Nivel

◦ List◦ Alert◦ TextBox◦ Form

Ventajas◦Facilidad de uso◦Rapidez en el desarrollo◦Portabilidad

Desventajas◦Incapacidad de manejar funciones de bajo

nivel◦Poca flexibilidad con componentes

prefabricados

GUI Alto Nivel: IntroducciónGUI Alto Nivel: Introducción

Mediante la clase List podemos crear listas de elementos seleccionables.

Tipos:◦ EXCLUSIVE - Sólo se puede seleccionar un elemento ◦ IMPLICIT - Se selecciona el elemento que tiene el foco ◦ MULTIPLE - Permite la selección múltiple

GUI Alto Nivel: ListGUI Alto Nivel: List

GUI Alto Nivel: AlertGUI Alto Nivel: Alert Permiten mostrar una pantalla durante un tiempo o hasta

que se produzca un comando de tipo OK. Se utiliza para mostrar errores u otro tipo de mensajes al usuario.

Tipos◦ ALARM◦ CONFIRMATION◦ ERROR◦ INFO◦ WARNING

La clase TextBox permite introducir y editar texto a pantalla completa. Es como un pequeño editor de textos.

Las limitaciones pueden ser alguna de los siguientes: ◦ ANY - Sin limitación ◦ EMAILADDR - Sólo una dirección de email ◦ NUMERIC - Sólo se permiten números ◦ PASSWORD - Los caracteres no serán visibles ◦ PHONENUMBER - Sólo números de teléfono ◦ URL - Sólo direcciones URL

GUI Alto Nivel: TextBoxGUI Alto Nivel: TextBox

Un Form es un elemento de tipo contenedor, es decir, es capaz de contener una serie de elementos visuales con los que podemos

construir interfaces más elaboradas no más vistosas.

GUI Alto Nivel: FormGUI Alto Nivel: Form

JME: Introducción a la Interfaz de Bajo NivelJME: Introducción a la Interfaz de Bajo Nivel

IntroducciónCanvas

◦Elementos Importantes◦Ejemplos

Juegos◦Canvas◦Sprite

GUI Bajo Nivel: IntroducciónGUI Bajo Nivel: IntroducciónTrabaja a nivel de pixel

◦Punto (0,0) Esquina superior izquierdaControl de eventos

◦Teclado◦Comandos◦Eventos pantalla táctiles

Permite dibujar primitivas GraficasEscribir textoDibujar imágenes

Canvas: primitivas GraficasCanvas: primitivas Graficas

Canvas: TextoCanvas: Texto

Canvas: Canvas: Elementos ImportantesElementos ImportantesEventos Teclado

◦Se controlan mediante las funciones keyPressed, keyReleased, keyRepeated

◦Teclas KEY_NUM0, KEY_NUM1, KEY_NUM2,… KEY_NUM9,

KEY_STAR y KEY_POUND◦Game Actions

getGameAction o getKeyCode UP, DOWN, LEFT, RIGHT, FIRE, GAME_A, GAME_B,

GAME_C y GAME_D.

Canvas: Canvas: Elementos ImportantesElementos ImportantesEventos pantalla táctiles

◦Se controlan mediante las funciones pointerDragged, pointerPressed, pointerReleased

◦Comprobar si hay pantalla tacil: hasPointerEvents.

Canvas: Canvas: Elementos ImportantesElementos ImportantesMétodo Paint

◦Método mediante el cual pintamos todos los elementos en pantalla

◦Graphics: Objeto que nos proporciona las primitivas para pintar todos los elementos por pantalla: drawArc, drawChar, drawImage, drawLine, fillRect,

translate…◦Se llama mediante el método repaint

Juegos: CanvasJuegos: CanvasImplementación de todos los métodos

necesarios◦Animaciones: movimiento de las figuras por

pantalla.

◦Detección de Colisiones entre figuras del juego

◦Acciones: Diferentes eventos que se desencadenan al haber una colisión.

Juegos: CanvasJuegos: Canvas

DEMO

Juegos: SpriteJuegos: SpriteEs un elemento visual que almacena una

imagen, que contiene un único dibujo o bien varios dibujos.

Nos permite◦Detectar colisiones: Cuadrados y pixel◦Realizar animaciones indicando la secuencia de

frames◦Indicar un punto de referencia de la imagen

Juegos: SpriteJuegos: Sprite

DEMO

JME: RMSJME: RMSIntroducciónRecordStoreRecord

RMSRMSSencillo sistema de almacenamientoAlmacenamiento permanenteCompuesto por Record StoresSincronización implementadaRegistro accesible desde cualquier MIDlet

RMS: RecordStoreRMS: RecordStoreColección de registrosLa plataforma mantiene su integridadBorrar MIDlet borra RecordStoreManipulación de RecordStore:

◦ openRecordStore: abre/crea un RecordStore◦ closeRecordStore: cierra un RecordStore◦ deleteRecordStore: borra un RecordStore

RMS: recordsRMS: recordsIdentificados por recordID:int1er registros recordID =1Manipulación de registros:

◦ addRecord: añade un registro◦ deleteRecord: borra un registro◦ getRecord: obtiene los datos de un registro◦ setRecord: establece los datos de un registro

LWUITLWUITIntroducciónIdeas BásicasStyleThemesPaintersFichero de recursosAnimacionesTransicionesLayout Managers

LWUIT: IntroducciónLWUIT: Introducción

Librería graficaDispositivos de gama altaAltamente portableLibrería Open SourceBasado en MIDP 2.0 y CanvasNo solo es para MovilesFramework en NetBeans 7.0

LWUIT: Ideas BasicasLWUIT: Ideas Basicas

Trabajar con LWUIT◦Descargar librería https://lwuit.dev.java.net/◦Agregar librería al proyecto

LWUIT:Hola MundoLWUIT:Hola Mundo

DEMO

Atributos de los componentes◦Colores

Normal Enfocado

◦Fuente◦Transparencia◦Imagen◦Margen, Relleno◦Bordes◦Painter

Guardado por defecto en archivo .res

LWUIT: StyleLWUIT: Style

Colección de estilos (styles)Declarado en un fichero .resCreado usando:

◦Resource Editor (viene junta con la librería)◦Ant task

Se puede cambiar en tiempo de ejecución

LWUIT: ThemesLWUIT: Themes

LWUIT: ThemesLWUIT: Themes

Componente tiene asociado un painterNo es necesario redefinir paint()Define como pintar el fondo del elementoPersonificar aparienciaPainters Chain

◦Relacionar varios painters◦Sensación de trabajar con layers

LWUIT: PaintersLWUIT: Painters

Fichero binario de LWUITPuede contener:

◦Temas◦Fuentes◦Imágenes◦Animaciones◦Localización

Creación◦Ant◦Resource Editor

LWUIT: Fichero de recursosLWUIT: Fichero de recursos

Interfaz simple◦Animate(), si devuelve ‘True’ llama a paint()

Activación◦No basta con agregar la animación◦Tenemos que notificar que es una animación

Desactivación

LWUIT: AnimacionesLWUIT: Animaciones

Transiciones predefinidasExtendiblesAplicable a:

◦Forms◦Dialogos◦Menu◦Componentes

LWUIT: TransicionesLWUIT: Transiciones

Agrupar elementosDivididos en regionesMediante Containers podemos anidarlos

LWUIT: Layout ManagersLWUIT: Layout Managers

LWUIT: Demo Alto NivelLWUIT: Demo Alto Nivel

DEMO