1. ACTIVIDAD 4
DISPOSITIVOS MOVILES
Objetivo: Conocer la importancia del sistema
operativo de un dispositivo móvil
Por Jessika Domínguez
G.
2. 1. ¿Qué es un sistema operativo para un
dispositivo móvil?
• Es un sistema operativo que controla un dispositivo móvil al
igual que los PCs utilizan Windows o Linux entre otros. Sin
embargo, los sistemas operativos móviles son mucho más
simples y están más orientados a la conectividad inalámbrica,
los formatos multimedia para móviles y las diferentes maneras
de introducir información en ellos.
3. 2. ¿Cuáles son las características de un
sistema operativo para un dispositivo móvil?
• determinarán las capacidades
• multimedia de los dispositivos, y la forma de éstas de
interactuar con el usuario.
• Existen multitud de opciones, si bien las más extendidas son
Symbian, BlackBerry
• OS, Windows Mobile, y recientemente iPhone OS y el sistema
móvil de Google,
• Android, además por supuesto de los dispositivos con sistema
operativo Linux.
4. 3. Las características del dispositivo móvil
tienen importancia para el tipo de sistema
operativo a utilizar.
• Dependiendo del tipo del dispositivo móvil a utilizar su
capacidad, tipo de sistema operativo que se utilizara es como
se facilita al usuario o al programador las herramientas e
interfaces adecuadas para realizar sus tareas informáticas,
abstrayéndole de los complicados procesos necesarios para
llevarlas acabo.
5. 4. ¿Qué es programación?
• Es el proceso de diseñar, codificar, depurar y mantener el
código fuente de programas computacionales. El código
fuente es escrito en un lenguaje de programación. El
propósito de la programación es crear programas que exhiban
un comportamiento deseado. El proceso de escribir código
requiere frecuentemente conocimientos en varias áreas
distintas, además del dominio del lenguaje a utilizar,
algoritmos especializados y lógica formal. Programar no
involucra necesariamente otras tareas tales como el análisis y
diseño de la aplicación (pero sí el diseño del código), aunque sí
suelen estar fusionadas en el desarrollo de pequeñas
aplicaciones.
6. 5. Criterios que se necesitan para la
programación de aplicaciones en la tecnología
móvil?
• La generalización en los últimos años de teléfonos móviles,
smartphones, PDAs, etc. ha generado un importante necesidad de
aplicaciones para este tipo de dispositivos
• Las prestaciones de los dispositivos móviles se incrementan día a
día, posibilitando la implementación de aplicaciones muy
interesantes
• Acceso a Internet y conectividad mediante Bluetooth
• Envío de mensajes cortos
• Aceleración 2D y 3D
• Reproducción de video y sonido
• Cámara integrada
• Información de localización GPS
• Sensores de orientación
• etc.
7. 6. ¿A que se refiere Java Mobile Edition?
• La única opción real que permite un desarrollo
• multiplataforma para dispositivos móviles
• Tiene una estructura altamente modular para
• adaptarse a las características de cada dispositivo
8. 7. ¿A que se refiere la configuración
Connected Device Configuration?
• Es un acrónimo inglés que coincide con su traducción al
español, y que hace referencia a Connected Device
Configuration. Esta es una especificación realizada por Sun
dentro del conjunto de tecnologías para computación móvil
conocido como J2ME (Java 2 Mobile Edition).
• Define las capacidades básicas que debe tener un dispositivo
móvil con capacidad de conexión y cuya potencia de
computación se encuentra entre la de un teléfono o PDA y la
de un ordenador de mesa, es decir, va dirigido
fundamentalmente a dispositivos con cierta capacidad como
un sistema de navegación GPS para automóvil, un DVR
(grabador de video digital), PVR (grabador de video personal)
o un aparato para navegar por Internet.
9. 8. ¿A que se refiere la configuración
Connected Limited Device Configuration?
• Define requerimientos mínimos en el propio lenguaje, en las
librerías básicas y en la cantidad de memoria usada por la JVM.
• Además CLDC supone que el dispositivo huésped dispone de un
sistema operativo que puede ejecutar y manejar la maquina virtual.
• Sin embargo CLDC no hace suposiciones sobre muchos otros temas.
Por ejemplo:
• No define el tipo de display.
• No define el mecanismo de entrada tal como teclado o ratón.
• No requiere de algún medio especi-fico de almacenamiento para los
datos de aplicación.
• Sin embargo los perfiles de J2ME, si- que dan requerimientos
adicionales para el rango mas limitado de dispositivos a los que se
dirigen.
10. 9. Explica los Applets en J2ME
• Tipos de datos: J2ME no incluye los tipos float y double, ya que la mayoría
de los dispositivos CLDC no tienen unidad de coma flotante debido
fundamentalmente a que es una operación muy costosa.
• Preverificación: La verificación del código en J2ME se hace fuera del
dispositivo, con objeto de reducir la carga de la máquina.
• Inclusión de los ficheros "descriptor" y "manifiesto" al empaquetar ficheros
J2ME, conteniendo información sobre las aplicaciones que incluyen.
• Nueva biblioteca gráfica adaptada a los dispositivos con memorias de poco
tamaño y pantallas también pequeñas.
• No existe un método main como entrada para la ejecución de la función.
Éste se sustituye por el método "start app".
• La recolección de basura se hace de manera manual y no automática como
en el J2EE. Esta decisión se toma así para reducir la utilización de la
memoria.
11. 10. Del siguiente código explica brevemente la
función que realiza.
• import javax.microedition.midlet.MIDlet;
• import javax.microedition.midlet.*;
• import javax.microedition.lcdui.*; // se empieza con una estructura requiere la implementación de un MIDlet, cuya
estructura recuerda los Applets yvServlets de J2SE.
• import java.util.*;
• public class MidletCuenta extends MIDlet {
• private Cuenta c; //Se crea el comando c
• private Display d;// Se crea el objeto Display d
• private TextField tCodigo; // Texto tCodigo
• private Command cEntrar, cSalir, cVolver, cMovimientos // Se rean los comando cEntrar, cSalir, cVolver, cMovimientos
• private Form fPeticionCodigo, fInfoCuenta; //Se crea la funcion peticion codigo la cual tiene un comando FinforCuenta
• private List lMovCuenta; // Se crea una lista MovCuenta
• public class EjemploMidlet extends MIDlet { // Se crea la clase EjemploMidlet
• public void startApp() {
• }
12. • public void pauseApp() {
• }
• public void destroyApp(boolean unconditional) {
• }
• }
• public MidletCuenta() { // Se crea MidletCuenta
• d = null;
• }
• void crearComandos() { // En este apartado se crean los valores de cada comando que fue
asignado.
• cEntrar = new Command("Entrar", Command.OK, 0);
• cSalir = new Command("Salir", Command.EXIT, 1);
• cVolver = new Command("Volver", Command.BACK, 0);
• cMovimientos = new Command("ver Mov.", Command.SCREEN, 0);
• }
13. • }
• public void startApp() {
• if (d == null) {
• d = Display.getDisplay(this);
• }
• crearComandos(); // Se manda a llamar a la funcion crearComandos
• crearFormPeticionCodigo(); // Se manda a llamar a la funcion
crearFormPeticionCodigo
• d.setCurrent(fPeticionCodigo);
• }
14. • void crearFormPeticionCodigo() { //Funcion crearPeticionCodigo
• fPeticionCodigo = new Form("Información de cuentas"); //Valor que van
tomanado los comandos que se crean al principio
• fPeticionCodigo.append(tCodigo = new TextField("Código de cuenta ",
• null, 10, TextField.NUMERIC));
• fPeticionCodigo.addCommand(cEntrar);
• fPeticionCodigo.addCommand(cSalir);
• fPeticionCodigo.setCommandListener(new listenerPeticionCodigo());
• tCodigo.setLayout(Item.LAYOUT_2 | Item.LAYOUT_CENTER);
• }
15. • void crearFormPeticionCodigo() { // Funcion peticionCodigo
• fPeticionCodigo = new Form("Información de cuentas"); // Valores de los
comanos de la funcion.
• fPeticionCodigo.append(tCodigo = new TextField("Código de cuenta ",
• null, 10, TextField.NUMERIC));
• fPeticionCodigo.addCommand(cEntrar);
• fPeticionCodigo.addCommand(cSalir);
• fPeticionCodigo.setCommandListener(new listenerPeticionCodigo());
• tCodigo.setLayout(Item.LAYOUT_2 | Item.LAYOUT_CENTER);
• }
16. • void crearFormInformacionCuenta() { //Funcion FormlformacionCuenta
• // Crear formulario de información de la cuenta
• fInfoCuenta = new Form("Información de cuenta");
• fInfoCuenta.append(new StringItem("Código:",
• Long.toString(c.leerNumero())));
• fInfoCuenta.append(new StringItem("Titular:",
• c.leerTitular())); //Se ingresan los datos de el titular de la cuenta.
• fInfoCuenta.append(new StringItem("Interés:",
• Float.toString(c.leerInteres())));//se ingresan datos de los intereses
• fInfoCuenta.append(new StringItem("Saldo:",
17. • Float.toString(c.leerSaldo()))); //Se leen el saldo del titular
• fInfoCuenta.addCommand(cMovimientos);
• fInfoCuenta.addCommand(cVolver);
• fInfoCuenta.setCommandListener(new listenerInformacionCuenta());
• // Crear lista de movimientos
• lMovCuenta = new List("Ultimos movimientos", List.IMPLICIT);
• Movimiento m;//Declaracion del comando de la cuncion CommandListener
• int nMov, nm;
• for (nMov = 10, nm = c.numMovimientosHistorico() - 1; nMov > 0
• && nm >= 0; nm--, nMov--) {
• m = c.leerMovimientoHistorico(nm);
• lMovCuenta.append(cadenaDate(m.fecha) + ' ' + m.tipo + ' ' +
• m.importe + ' ' + m.saldo, null);
• }
18. • lMovCuenta.addCommand(cVolver);
• lMovCuenta.setCommandListener(new listenerInformacionMovimientos());// Se llama a la funcion Movimientos
y despues retorna para seguir el proceso
• }
• class listenerInformacionCuenta implements CommandListener {// Se inicia la clase ListenerInformacionCuenta
• public void commandAction(Command cm, Displayable s) {
• if (cm == cVolver) {// Se inicia una condicion de movimientos
• d.setCurrent(fPeticionCodigo);
• }
• else if (cm == cMovimientos) {
• d.setCurrent(lMovCuenta);
• }
• }
• }
19. • class listenerInformacionMovimientos implements //Se llama a la clase
InformacionMovimientos
• CommandListener {
• public void commandAction(Command cm, Displayable s) {
• if (cm == cVolver) {
• d.setCurrent(fInfoCuenta);
• }
• }
• }