JME Java Micro Edition
Índice Introducción: Midlet Introducción a la interfaz de Alto nivel Introducción a la interfaz de Bajo nivel RMS LWUIT Sugerencias
JME: Introducción Midlet Ejemplo MIDlet Elementos
Midlet: Introducción JME es Java con menos librerías JME abarca un gran tipo de dispositivos limitados no sólo teléfonos móviles Mencionar que hay mucho tipos de móviles y lo que se busca agrupar de alguna forma los dispositivos, eso son los perfiles
Midlet: Introducción Configuraciones: Perfiles: 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) - Mencionar que las configuraciones es una agrupación de clases disponibles en un tipo de dispositivos Mencionar que los perfiles es una agrupación de clases que complementan una configuración y permiten la portabilidad de la portabilidad entre dispositivos Perfiles Configuración Foundation Profile (FP) CDC Personal Profile (PP) CDC Personal Basis Profile (PBP) CDC MIDP CLDC PDA Profile CLDC
Midlet: Introducción - Mencionar que las configuraciones es una agrupación de clases disponibles en un tipo de dispositivos Mencionar que los perfiles es una agrupación de clases que complementan una configuración y permiten la portabilidad de la portabilidad entre dispositivos Perfiles Configuración Foundation Profile (FP) CDC Personal Profile (PP) CDC Personal Basis Profile (PBP) CDC MIDP CLDC PDA Profile CLDC
DEMO
Midlet Dos puntos de visión ¿Cómo se ejecuta? 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) MIDP no cubre: – Descarga y gestión de aplicaciones (MIDlets) en los dispositivos – Seguridad a bajo nivel – Seguridad a nivel de aplicación – Seguridad extremo-extremo
Midlet: AMS ¿Que es AMS? Funcionalidad 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 - Es el que comprueba el descriptor del midlet si es correcto o no y comienza la descarga - Llama a los métodos pertinentes para pintar en pantalla, controlar el teclado, los comandos - Si nos llaman corta la aplicación y luego vuelve a ejecutarla
Midlet: Ciclo Vida El AMS llama a los siguientes métodos para controlar la vida de un Midlet starApp pauseApp destroyApp Genera el siguiente ciclo de vida - Es el que comprueba el descriptor del midlet si es correcto o no y comienza la descarga - Llama a los métodos pertinentes para pintar en pantalla, controlar el teclado, los comandos - Si nos llaman corta la aplicación y luego vuelve a ejecutarla
Midlet: Código
Midlet: Jerarquía de clases Las clases Específicas de JME son las siguientes
Midlet: API y JSR JME esta compuesto por varias APIs o JSRs (Java Specification Request) API Alto Nivel API Bajo Nivel RMS LWUIT Bluetooth MMAPI … JSR: son documentos formales que describen las especificaciones y tecnologías propuestas para que sean añadidas a la plataforma Java y es llevado por Java Community Process (JCP)
JME: Introducción a la Interfaz de Alto Nivel Elementos Alto Nivel List Alert TextBox Form Hablar
GUI Alto Nivel: Introducción 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: List 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: 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
GUI Alto Nivel: TextBox 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: Form 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. - Item: superclase de los componentes que se pueden agregar a un Form -ChoiceGroup: similar al list - DateField: se utiliza para fechas - TextField: similar al TextBox pero menos pantalla - StringItem: String - Imageltem - Gauge - Spacer - CustomItem
JME: Introducción a la Interfaz de Bajo Nivel Canvas Elementos Importantes Ejemplos Juegos Sprite
GUI Bajo Nivel: Introducción Trabaja a nivel de pixel Punto (0,0) Esquina superior izquierda Control de eventos Teclado Comandos Eventos pantalla táctiles Permite dibujar primitivas Graficas Escribir texto Dibujar imágenes
Canvas: primitivas Graficas
Canvas: Texto
Canvas: Elementos Importantes Eventos 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. Clase base que para la escritura de aplicaciones que necesitan el manejo de eventos a bajo nivel y dibujo de gráficos.
Canvas: Elementos Importantes Eventos pantalla táctiles Se controlan mediante las funciones pointerDragged, pointerPressed, pointerReleased Comprobar si hay pantalla tacil: hasPointerEvents.
Canvas: Elementos Importantes Mé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: Canvas Implementació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: Canvas DEMO
Juegos: Sprite Es 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: Sprite DEMO
JME: RMS Introducción RecordStore Record
RMS Sencillo sistema de almacenamiento Almacenamiento permanente Compuesto por Record Stores Sincronización implementada Registro accesible desde cualquier MIDlet
RMS: RecordStore Colección de registros La plataforma mantiene su integridad Borrar MIDlet borra RecordStore Manipulación de RecordStore: openRecordStore: abre/crea un RecordStore closeRecordStore: cierra un RecordStore deleteRecordStore: borra un RecordStore
RMS: records Identificados por recordID:int 1er registros recordID =1 Manipulació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
LWUIT Introducción Ideas Básicas Style Themes Painters Fichero de recursos Animaciones Transiciones Layout Managers
LWUIT: Introducción Librería grafica Dispositivos de gama alta Altamente portable Librería Open Source Basado en MIDP 2.0 y Canvas No solo es para Moviles Framework en NetBeans 7.0
LWUIT: Ideas Basicas Trabajar con LWUIT Descargar librería https://lwuit.dev.java.net/ Agregar librería al proyecto
LWUIT:Hola Mundo DEMO
LWUIT: Style Atributos de los componentes Colores Normal Enfocado Fuente Transparencia Imagen Margen, Relleno Bordes Painter Guardado por defecto en archivo .res
LWUIT: Themes Colección de estilos (styles) Declarado en un fichero .res Creado usando: Resource Editor (viene junta con la librería) Ant task Se puede cambiar en tiempo de ejecución
LWUIT: Themes
LWUIT: Painters Componente tiene asociado un painter No es necesario redefinir paint() Define como pintar el fondo del elemento Personificar apariencia Painters Chain Relacionar varios painters Sensación de trabajar con layers
LWUIT: Fichero de recursos Fichero binario de LWUIT Puede contener: Temas Fuentes Imágenes Animaciones Localización Creación Ant Resource Editor
LWUIT: Animaciones Interfaz simple Activación Desactivación 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: Transiciones Transiciones predefinidas Extendibles Aplicable a: Forms Dialogos Menu Componentes
LWUIT: Layout Managers Agrupar elementos Divididos en regiones Mediante Containers podemos anidarlos
LWUIT: Demo Alto Nivel DEMO