1
Tópicos SelectosTópicos Selectosde Programaciónde Programación
Rafael Rivera López
Departamento de Sistemas y Computación
Ago-Dic 2008
Veracruz, Ver.
Ingeniería en Sistemas Computacionales
2
Programación con
Dispositivos Móviles
Unidad VI
3
Cómputo MóvilCómputo Móvil
IV.1
03/12/09 4
Wireless Local Area Network
Wireless Personal Area Network
Wireless Wide Area Network
GSM
IEEE 802.11a/b/g/h/i
IEEE 802.15.1
In t r o d u cció n� Nuevo paradigma “Cómputo Móvil”.
03/12/09 5
Ar q u it e ct u r a
03/12/09 6
D isp o sit iv o s M ó v ile s
Características:
- Gran capacidad de comunicación- Tamaño reducido- Usan bateria- Tienen un procesador simple- Memoria pequeña- Interfaz con el usuario reducida
03/12/09 7
D isp o sit iv o s M ó v ile s
03/12/09 8
D isp osit iv o s M ó v ile s
- Teléfono Móvil: - Portátil, conectado a una red celular. - Comunicación en tiempo real de dos vías
- PDA (Asistente Digital Personal) - Agenda electrónica personal - Gran capacidad de memoria - Visualización mejorada
- Híbridos - PDA + Teléfono : Comunicadores - Telefono + PDA : Smartphones
03/12/09 9
D isp osit iv o s M ó v ile s
PDA / PalmSmartphone Tel. Móvil
10
ElementosElementos
VI.2
03/12/09 11
Ele m e n t o s
- Hardware - Procesador: 16 ó 32 bits - Memoria: 160 KB a 2 MB o más - Conectividad
- Software (Sistema Operativo) - PalmOS, Symbian, Windows Mobile, Linux
- Interfaz con el usuario: - Pantallas, Teclados, Plumas, Conectores
03/12/09 12
P a lm O S
Nació en 1996
03/12/09 13
Windows CE
W in d o w s CE > W in d ow s M o b ile
Windows Mobile
03/12/09 14
Sy m b ia n
03/12/09 15
Em b e d d e d Lin u x
Motorola Touch A1200.
03/12/09 16
O p cio n e s d e D e sa r r o l lo
- Sun Microsystems - Plataforma: J2ME - Lenguaje: Java
- Microsoft - Plataforma .NET - Lenguaje: VB y C#
- Nokia - Plataforma: S60 - Lenguaje: Python
17
J2MEJ2ME
VI.3
03/12/09 18
J2 M E
Java 2 se divide en tres plataformas
– J2EE (Java2 Enterprise Edition) Aplicaciones para negocios.
– J2SE (Java2 Standard Edition) Aplicaciones generales.
– J2ME (Java2 Micro Edition) para pequeños dispositivos tales como PDA, celulares, etc.
03/12/09 19
J2ME está basada en configuraciones y perfiles de dispositivo.
J2 M E
20
Componentes del ambiente J2ME
• El entorno de desarrollo J2ME– Configurations (configuraciones) – Profiles (perfiles)– Extensions (extensiones)
21
Configuraciones
• Las Configuraciones (Configurations) están compuestas por:• Java Virtual Machine• Conjunto mínimo de clases base.
• Proveen la funcionalidad básica para un cierto conjunto de dispositivos con características similares de memoria, conectividad a la red, etc.
• Existen dos tipos de configuraciones• Connected Limited Device Configuration (CLDC) • Connected Device Configuration (CDC)
22
Configuraciones
• CLDC es la configuración más pequeña.
• Se utiliza para dispositivos con poca memoria y procesadores lentos (teléfonos celulares)
• CDC es para dispositivos con más memoria y procesadores más rápidos como ser dispositivos de vehículos, y PDAs muy potentes. Incluye un subconjunto mucho más grande de J2SE, y una JVM más completa que CLDC.
23
Perfiles
• Para completar el entorno de desarrollo para una categoría específica de dispositivos, se necesita un “Perfil” (Profile)
• Es un Conjunto de APIs de más alto nivel que permiten acceder a propiedades específicas del dispositivo, definir la interfaz de usuario, etc).
• Hay 4 perfiles básicos: • MIDP• Foundation Profile• Personal Profile• Personal Basis Profile.
24
Extensiones
• La plataforma J2ME puede extenderse mediante el uso de paquetes opcionales
• Dichos paquetes ofrecen por ejemplo APIs standard para multimedia, Bluetooth, y otras tecnologías emergentes.
• Al ser modulares se evita el overhead de cargar con funcionalidad adicional que no se utiliza.
25
Ejemplo de entorno J2ME
• Un ejemplo es combinar CLDC con el “Mobile Information Device Profile” (MIDP) para proveer un entorno de desarrollo para teléfonos celulares.
MIDP
VM
CLDCAPLICACIÓN
J2ME
26
Paquetes y ClasesPaquetes y Clases
VI.4
27
CLDC
28
MIDP
29
MIDP
03/12/09 30
Ciclo d e v id a d e u n M id le t
03/12/09 31
Interfaz Gráfica
32
Estructura BásicaEstructura Básicade un MIDletde un MIDlet
VI.5
03/12/09 33
Estructura básica de un MIDLET
import javax.microedition.midlet.*;
public class HolaMIDlet extends MIDlet {
public void startApp() { }
public void pauseApp() { }
public void destroyApp(boolean unconditional) { }�
Este metodo hace acopio de los
recursos que va ha necesitar
Este metodo es invocado cuando se necesita detener la ejecucion del midlet
temporalmente
Este metodo es invocado por el sistema cuando el
midlet tiene que ser destruido
03/12/09 34
Cla se s d e LCD U I
03/12/09 35
03/12/09 36
Display
import javax.microedition.midlet.*;import javax.microedition.lcdui.*;
public class HolaMIDlet extends MIDlet { public HolaMIDlet(){ }
public void startApp() { Display display; display=Display.getDisplay(this); display.setCurrent(objetoacolocar); }
public void pauseApp() { }
public void destroyApp(boolean unconditional) { }}
display
03/12/09 37
����������� � ����� � �� �� ��� �� �� ����� �������display
AlertForm
ListTextBox
display.setCurrent(objForm);
display.setCurrent(objTextBox);
display.setCurrent(objAlert);
display.setCurrent(objList);
03/12/09 38
�LA CLASE FORM��� ���������� �� !� " #��$ � � #������ �#��%���#�&� " #��!�� �$ ' " �� ��$ ���(" �'�����) ��#��* �"�+•,$���-)
•.��- )
•/ 0$1� �")
•2�$�1� �")
•3��-
•45��# 3���!6
•4������ �� " ��' '�%#��' ' " �� #��' .$ �6
Display
Form
����� 7��
03/12/09 39
����� 7��import javax.microedition.midlet.*;import javax.microedition.lcdui.*;
public class HolaMIDlet extends MIDlet{ private Form principal; public HolaMIDlet(){ principal = new Form("Principal"); } public void startApp() { Display.getDisplay(this).setCurrent( principal ); }
public void pauseApp() { }
public void destroyApp(boolean unconditional) { }}
03/12/09 40
Display
Form
������������� �������� �� ��� ������� � �� �� �������� ��� �Ø ���������Ø ��������� !Ø "#�������Ø $��%���&&
����� 7��
Ø '� �($�"� �!! �")* ! ���$ ��' �$�� #��!�� �$ ' � �����������
03/12/09 41
����� 7��import javax.microedition.midlet.*;import javax.microedition.lcdui.*;
public class HolaMIDlet extends MIDlet{ private Form principal; public HolaMIDlet(){ principal = new Form("Principal"); principal.append("Hola Mundo Móvil desde J2M E"); } public void startApp() { Display.getDisplay(this).setCurrent(principa l); }
public void pauseApp() { }
public void destroyApp(boolean unconditional) { }}
42
Comandos de PantallaComandos de Pantalla
VI.6
03/12/09 43
�������� ��� ���� � �������� � � � � ����� � ������ �������� � ����� � �������� ��������� ���� ��������� �� ���������� ��� �� ������� �� ����� ����� �������� � � ��� � �� ����������� � � �� ������ ���� �� ������� ��������� ���� ���������� ���� � ���� ��������� �� � ��� � � � ����� ���� � ����� ��� � � �� ��������� � �� ���� �� ��� ������ �� � ��� ���� ������ �������� �� ������� ��� ����� � � ���������� ��� �� ����� �
�������� �� ��������
03/12/09 44
�������� �� ��������import javax.microedition.midlet.*;import javax.microedition.lcdui.*;
public class HolaMIDlet extends MIDlet{ private Form principal; private Command salir; public HolaMIDlet(){ salir = new Command("Salir",Command.EXIT,0); principal = new Form("Principal"); principal.append("Hola Mundo Móvil desde J2M E"); principal.addCommand(salir); } public void startApp() { Display.getDisplay(this).setCurrent(principa l); }
public void pauseApp() {}
public void destroyApp(boolean unconditional) { }}
03/12/09 45
Display
Form
Comando de Pantalla
�������� �� ��������
03/12/09 46
�� � � ��� � � �������� ������ ����� ���� � ������ � �������� ������������ ��������������� ������ �� ����� � � �� ��� ���� ����������������� ����� ������� �� ��� � �������� ��� ���� ������������� ��
������� �� �������� �� ��������
03/12/09 47
������� �� �������� �� ��������import javax.microedition.midlet.*;import javax.microedition.lcdui.*;
public class HolaMIDlet extends MIDlet implements CommandListener { private Form principal; private Command salir; public HolaMIDlet(){ salir = new Command("Salir",Command.EXIT ,0); principal = new Form("Principal"); principal.append("Hola Mundo Móvil desde J2M E"); principal.addCommand(salir); principal.setCommandListener(this); } public void commandAction(Command a,Displayable b){ notifyDestroyed(); } ...}
48
Proyectos para Proyectos para Dispositivos Móviles en Dispositivos Móviles en
NetBeansNetBeans
VI.7
03/12/09 49
�Paso # 1 : ���� �� ����������� ��Paso # 2 : '� �� � �$��� ' � ##����� � #�$ -����' �� �!#�&�Mobility * � �� " � #5� � Projects � -�� MIDP Aplication
Seleccionar nuevo proyecto
Seleccionar Mobility
Seleccionar MIDP Aplication
Presionar Botón
siguiente
03/12/09 50
�Paso # 3� ������ � ������ � ������ �� �� ����������Create Hello MIDlet
Seleccionar nuevo proyecto
03/12/09 51
�Paso # 4� ���������� ������
Presionar finalizar
03/12/09 52
�Paso # 5 � ������ � ����� � ���� ������ �
03/12/09 53
�Paso # 6 � ���� �� ���� �
03/12/09 54
�Paso # 7: ����� ������ �� ���� �
03/12/09 55
�Paso # 8: ���� �� ����
03/12/09 56
�Paso # 9: ����� ������ �� ����