1
Tópicos Selectos
Tópicos Selectos
de Programación
de Programación
Rafael Rivera López
Departamento de Sistemas y Computación Ago-Dic 2008 Veracruz, Ver.
Ingeniería en Sistemas
Computacionales
2Programación con
Dispositivos Móviles
Unidad VI
3
Cómputo Móvil
Có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
I n t r o d u cció n
Nuevo paradigma “Cómputo Móvil”.
03/12/09 5
A r 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
03/12/09 7
D isp o sit iv o s M ó v ile s
03/12/09 8
D isp o sit 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 o sit iv o s M ó v ile s
PDA / Palm
Smartphone
Tel. Móvil
10
Elementos
Elementos
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
03/12/09 13
Windows CE
W in d o w s CE > W in d o w s M o b ile
Windows Mobile
03/12/09 14S y m b ia n
03/12/09 15
Em b e d d e d Lin u x
Motorola Touch
A1200.
03/12/09 16O p cio n e s d e D e sa r r o llo
- Sun Microsystems
- Plataforma: J2ME
- Lenguaje: Java
- Microsoft
- Plataforma .NET
- Lenguaje: VB y C#
- Nokia
- Plataforma: S60
- Lenguaje: Python
17
J2ME
J2ME
VI.3
03/12/09 18J2 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)
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 CLDC APLICACIÓNJ2ME 26Paquetes y Clases
Paquetes y Clases
VI.4
27
CLDC
28
29
MIDP
03/12/09 30
03/12/09 31
Interfaz Gráfica
32Estructura Básica
Estructura Básica
de un MIDlet
de 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
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) { }
}
03/12/09 37 display Alert Form List TextBox display.setCurrent(objForm); display.setCurrent(objTextBox); display.setCurrent(objAlert); display.setCurrent(objList); 03/12/09 38
LA CLASE FORM
! " #$ # # % # & " #! $ ' " $ ( " ' ) # * " +•
, $ -)•
. - )•
/ 0$1 " )•
2 $ 1 " )•
3 -•
4 5 # 3 !6•
4 " '' % # ' ' " #' . $ 6 Display Form 703/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 J2ME");
}
public void startApp() {
Display.getDisplay(this).setCurrent(principal); }
public void pauseApp() { }
public void destroyApp(boolean unconditional) { } } 42
Comandos de Pantalla
Comandos 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 J2ME"); principal.addCommand(salir);
}
public void startApp() {
Display.getDisplay(this).setCurrent(principal); }
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 J2ME"); 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
NetBeans
NetBeans
VI.7
03/12/09 49
Paso # 1 :
Paso # 2 :
' $' ## #$ -'! # &Mobility
* " # 5Projects
-MIDP Aplication
Seleccionar nuevo proyecto Seleccionar Mobility Seleccionar MIDP Aplication Presionar Botón siguiente 03/12/09 50Paso # 3
Create Hello MIDlet
Seleccionar nuevo proyecto
03/12/09 51
Paso # 4
Presionar finalizar 03/12/09 52Paso # 5
03/12/09 53
Paso # 6
03/12/09 54Paso # 7:
03/12/09 55