Download Federación Murciana de Fútbol
Document related concepts
no text concepts found
Transcript
Juan José López Espinosa Servicio de Desarrollo, ATICA juanjolp@um.es Universidad de Murcia 02/06/2007 Arquitecturas multimedia - Programación Móvil 1 Indice Introducción Ventajas de la programación móvil Tipos de programación El lenguaje J2ME Arquitectura Midp Clases Mejoras en el codigo Caso práctico Caso real Dudas Arquitecturas multimedia - Programación Móvil 2 Ventajas de la programación móvil I Movilidad Estará conectado a internet en cualquier lugar e instante, pagina web, correo, base de datos… Economía Tener un dispositivo móvil (teléfono móvil, smart phone, blackberry…) para acceder a los programas o internet, es más económico que un pc, portátil, tabletPc… Arquitecturas multimedia - Programación Móvil 3 Ventajas de la programación móvil I Comodidad Tanto a la hora de transportarlo por su reducido tamaño… Como por el tiempo de puesta en funcionamiento Sencillo, intuitivo Es más fácil de utilizar que un pc. Cualquier persona es capaz de utilizar las aplicaciones sin un tutorial previo. Arquitecturas multimedia - Programación Móvil 4 Tipos de programación móvil I Programación web Implementaríamos una página web adaptada a las limitaciones de los dispositivos: Tamaño pantalla Velocidad de descarga Procesador Navegador del cliente Inconveniente: gran variedad. Arquitecturas multimedia - Programación Móvil 5 Tipos de programación móvil II Programación flash Implementaríamos una aplicación flash: Tamaño pantalla Velocidad de descarga Procesador Inconvenientes Carga inicial lenta Dispositivos que soportan flash Arquitecturas multimedia - Programación Móvil 6 Tipos de programación móvil III Programación Java Implementaríamos una aplicación java Tamaño pantalla Velocidad de descarga Procesador Navegador del cliente Inconveniente: Mantenimiento, reinstalación en el cliente. Arquitecturas multimedia - Programación Móvil 7 Arquitectura de los dispositivos I La KVM (Kilobyte Virtual Machine) Se trata de una máquina virtual java altamente portable y compacta pensada y diseñada para funcionar en dispositivos con recursos limitados y con conexión a red. La CVM (Compact Virtual Machine) . Está orientada a dispositivos electrónicos con procesadores de 32 bits de gama alta y entorno a 2Mb o más de memoria RAM. Arquitecturas multimedia - Programación Móvil 8 Arquitectura de los dispositivos II Las aplicaciones se desarrollan sobre un determinado perfil que a su vez está implementado sobre una determinada configuración. Un perfil define un conjunto de APIs y características comunes para una franja vertical de dispositivos. Las clases de un perfil permiten el acceso a funcionalidades específicas de los dispositivos como la interfaz gráfica, funcionalidades de red, almacenamiento persistente, etc. Las aplicaciones desarrolladas sobre un determinado perfil van a ser portables a cualquier dispositivo que soporte ese perfil. Los perfiles identifican un grupo de dispositivos por la funcionalidad que proporcionan (electrodomésticos, teléfonos móviles, etc.) y el tipo de aplicaciones que se ejecutarán en ellos. Esto hace que a la hora de construir una aplicación se cuente tanto con las APIs del perfil como de la configuración Arquitecturas multimedia - Programación Móvil 9 Arquitectura de los dispositivos III Foundation Profile. Dispositivos que carecen de interfaz gráfica. Personal Profile. Proporciona un entorno con un completo soporte gráfico AWT. RMI Profile. El perfil RMI soporta un subconjunto de las APIs J2SE v1.3 RMI. PDA Profile. Pretende abarcar PDAs de gama baja, tipo Palm, con una pantalla y algún tipo de puntero. MID Profile. Perfil más usado actualmente para el desarrollo de aplicaciones. Arquitecturas multimedia - Programación Móvil 10 Arquitectura de los dispositivos III El ciclo de vida de un MIDP esta muy bien definido ya que ayuda al MIDlet a coexistir con otros programas en el MIDP. Fases: Retrieval Installation Launching Version Management Removal Arquitecturas multimedia - Programación Móvil 11 El perfil MIDP Este perfil esta diseñado para funcionar especialmente con CLDC. Las clases que contiene son: javax.microedition.midlet: se ocupa del ciclo de vida de la aplicación javax.microedition.lcdui: interfaz de usuario javax.microedition.rms: sistema de mantenimiento de registros (Record Management System) usado para guardar información javax.microedition.io: clases para usar redes java.lang: clases de lenguaje java.util: clases de utilidades Arquitecturas multimedia - Programación Móvil 12 Lenguaje J2ME: MIDlets Un MIDlet es más parecido a un applet que a una aplicación Java estándar. Un MIDlet tiene que ejecutarse en un entorno muy concreto (un dispositivo con soporte J2ME) Un MIDlet tiene que heredar de la clase MIDlet Tres métodos especialmente importantes: startApp() – Estado = ejecución. pauseApp() – Estado = pausa. destroyApp() - Estado = finalizado. Arquitecturas multimedia - Programación Móvil 13 Lenguaje J2ME: Elementos Un MIDlets nos permite dos tipos de entorno: Por un lado podremos trabajar con ‘Screens’ sobre las que podremos colocar elementos de la interfaz de usuario, como textos, menus, etc. Por otro, podremos basar nuestras aplicaciones en ‘Canvas’ sobre las que podemos trabajar a nivel gráfico, es decir, a más bajo nivel. Tanto Screen como Canvas son objetos que heredan de la clase ‘Displayable’. Arquitecturas multimedia - Programación Móvil 14 Lenguaje J2ME: Screen Un Form es un elemento de tipo contenedor, es capaz de contener una serie de elementos visuales con los que podemos construir interfaces más elaboradas int append(Item elemento) void delete(int índice) void insert(int índice, Item elemento) void set(int índice, Item elemento) size() Arquitecturas multimedia - Programación Móvil 15 Lenguaje J2ME: MIDlets -> Elementos FORM Arquitecturas multimedia - Programación Móvil 16 Lenguaje J2ME: MIDlets -> CANVAS Esta clase es capaz de mostrar información gráfica a nivel de píxel, a bajo nivel. void setColor(int rojo, int verde, int azul); Tres métodos importantes en canvas: void drawLine (int x1, int y1, int x2, int y2); kieyPressed() void drawRect (int x, int y, int ancho, int alto); KeyReleased() void drawRoundRect () igual que drawRect KeyRepeated() Arquitecturas multimedia - Programación Móvil 17 Canvas: Scrolling, primera visión Un fondo estático no es demasiado atractivo, además, un mapa de 7X7 no da demasiado juego (que es lo que cabría en la pantalla suponiendo celdas de ½ cm), necesitamos un mapa más grande. Para el caso de un juego será de 7X20. Se hace evidente que un mapa de 7x20 tiles no cabe en la pantalla. SOLUCION: según se mueva nuestro personaje principal (hombre, avión, coche..) por el escenario, el mapa avance en la misma dirección. Este desplazamiento del escenario se llama scrolling. int map[]={1,1,1,1,1,1,1, 1,1,1,1,1,1,1, 1,2,1,1,1,1,1, 1,1,1,4,1,1,1, 1,1,1,1,1,1,1, 1,1,3,1,2,1,1, 1,1,1,1,1,1,1, 1,4,1,1,1,1,1, 1,1,1,1,3,1,1, 1,1,1,1,1,1,1, 1,4,1,1,1,1,1, 1,1,1,3,1,1,1, 1,1,1,1,1,1,1, 1,1,1,1,1,1,1, 1,2,1,1,1,1,1, 1,1,1,4,1,1,1, 1,1,1,1,1,1,1, 1,1,3,1,2,1,1, 1,1,1,1,1,1,1, 1,4,1,1,1,1,1}; Arquitecturas multimedia - Programación Móvil 18 Mejoras en el código II Eliminar subexpresiones comunes El siguiente código: b = Math.abs(a) * c; d = e / (Math.abs(a) + b); Puede ser optimizado de la siguiente forma: int tmp = Math.abs(a); b = tmp * c; d = e / (tmp + b); Arquitecturas multimedia - Programación Móvil 19 Mejoras en el código III Aprovechar las variables locales El siguiente código: for (int i=0; i<1000; i++) a = obj.b * i; Puede ser optimizado de la siguiente forma: int localb = obj.b; for (int i=0; i<1000; i++) a = localb * i; Arquitecturas multimedia - Programación Móvil 20 Mejoras en el código IV Expandir los bucles El siguiente código: for (int i=0; i<1000; i++) a[i] = 25; Puede ser optimizado de la siguiente forma: for (int i=0; i<100; i++){ a[i++] = 25; a[i++] = 25; a[i++] = 25; a[i++] = 25; a[i++] = 25; a[i++] = 25; a[i++] = 25; a[i++] = 25; a[i++] = 25; a[i++] = 25; } Arquitecturas multimedia - Programación Móvil 21 Estructura, ejemplo BBDD Programación de la BBDD en MySQL Controlador BBDD Programación del controlador de BBDD en PHP (genera páginas web que serán accedidas por el terminal móvil) Arquitecturas multimedia - Programación Móvil Cliente Móvil Programación del cliente móvil en J2ME. “Llama” a las páginas php 22 Caso practico Arquitecturas multimedia - Programación Móvil 23 Caso real Secretaría virtual móvil Servicios ofrecidos al usuario Reserva de alas Reserva Instalaciones deportivas Consulta estado CI Consulta de notas Consulta de expediente Arquitecturas multimedia - Programación Móvil 24 Juan José López Espinosa Servicio de Desarrollo, ATICA juanjolp@um.es Arquitecturas multimedia - Programación Móvil 25