You are on page 1of 131

PROYECTO FIN DE CARRERA

CREACIN DE UNA PLATAFORMA DE DESARROLLO DE APLICACIONES PARA ANDROID

AUTOR:

JOS MIGUEL REYES IBARRECHE

Madrid, Septiembre de 2010

Autorizada la entrega del proyecto del alumno/a:

Jos Miguel Reyes Ibarreche

EL DIRECTOR DEL PROYECTO Mario Castro Ponce

Fdo.: Fecha: / /

V B del Coordinador de Proyectos David Contreras Brcena

Fdo.: Fecha: / /

PROYECTO FIN DE CARRERA

CREACIN DE UNA PLATAFORMA DE DESARROLLO DE APLICACIONES PARA ANDROID

AUTOR: DIRECTOR:

JOS MIGUEL REYES IBARRECHE MARIO CASTRO PONCE

Madrid, Septiembre de 2010

RESUMEN
El proyecto Creacin de una plataforma de desarrollo de aplicaciones para Android tiene como objetivo principal dar existencia a una mquina virtual con sistema operativo Ubuntu-Linux desde la que se desarrollen aplicaciones en el sistema operativo Android. Estas aplicaciones son: Creacin de una interfaz de usuario, formacin de bases de datos, uso de mapas, utilizacin de herramientas del Sistema de Posicionamiento Global (GPS), y reproduccin de archivos multimedia. La utilizacin de una mquina virtual tiene como propsito proporcionar al usuario un entorno de desarrollo completamente configurado, eficiente y evite al usuario los problemas asociados a la configuracin y actualizacin de dicho entorno de desarrollo. El desarrollo de este proyecto permitir conocer el efecto del sistema Android en el mercado de la telefona mvil y las ventajas de uso comparndolo con el resto de sistemas operativos actuales como iPhone, Symbian Las caractersticas de este sistema operativo son que las aplicaciones pueden programarse en lenguaje Java, el software proporcionado est bajo licencia Apache, y se facilita un Kit de Desarrollo Software (SDK) que puede incorporarse a un IDE tan conocido como Eclipse mediante un plug-in. La principal finalidad desde el punto de vista del desarrollador es: Obtener el mximo partido de la plataforma, que la aplicacin sea portable, fcil de ejecutar y reutilizable, y que tenga facilidad para integrar todo tipo de programas con las aplicaciones Web de Google. La estructura del sistema operativo Android consta de: Un ncleo de Linux, libreras escritas en lenguaje C/C++, Android Run Time, Framework de aplicaciones y una capa de aplicaciones. Las herramientas utilizadas para desarrollar aplicaciones son: la SDK proporcionada por Google, una JDK de Java y un IDE de desarrollo Java como es Eclipse. El proyecto pretende mostrar, de una manera didctica, el uso y potencial de esta plataforma de desarrollo. Por esta razn, se ha dedicado la mayor parte del proyecto (y de la memoria del mismo) a describir los pasos necesarios para que un usuario con poca experiencia sea capaz de desarrollar sus propias aplicaciones Android.

iv

ABSTRACT
The project "Creation of a developing platform for Android applications has as main objective is to create a virtual machine running Ubuntu-Linux from which to develop applications on the Android operating system. These applications are: Creation of a user interface, database sharing, use of maps, using tools of the Global Positioning System (GPS), and playback of multimedia files. The use of a virtual machine has as main purpose to provide the final user with a development framework, efficient and completely setup, to avoid the potential problems related to the configuration and update of that framework. Furthermore, the development of this project will reveal the effect of Android in mobile phone market and use advantages compared with other current operating systems such as iPhone, Symbian... The project itself shows the features of this OS is that applications can be programmed in Java, the software provided is licensed under Apache, and provides a Software Development Kit (SDK) to be incorporated as well known as an Eclipse IDE through a plug-in . Also, the main purpose from the point of view of the developer is: getting all of the best of the platform, the portability of the main applications, the facility to run and reusable the code, and has easy to integrate all kinds of programs with Google's Web applications. The Android operating system structure consists of: Linux kernel, libraries written in C / C + +, Android Run Time Application Framework and an application layer. In addition the tools used for developing applications are the SDK provided by Google, a Java JDK and Java development IDE like Eclipse. Finally, this project aims to show, from a didactic point of view, the use and potential of this framework. Thus, it has been devoted the largest part of the project (and, consequently, its documentation) to describe accurately the steps needed for an inexperienced programmer to develop his/her own applications.

ndice
Captulo 1 Introduccin 1.1 1.2 Motivacin Objetivos 1 4 5

Captulo 2 Tecnologa en la actualidad 2.1 2.2 Introduccin El mercado tecnolgico en la actualidad

6 6 8 8 10 13 15 15 18 20 24 27

2.2.1 Principales demandas de mercado 2.2.2 Representacin del mercado 2.2.3 Comparativa de los diferentes SSOO 2.3 SSOO mviles

2.3.1 Symbian 2.3.2 Windows Mobile 2.3.3 iPhone 2.3.4 Blackberry 2.3.5 Android

Captulo 3 El sistema Operativo Android 3.1 3.2 3.3 3.4 Introduccin Estructura de Android Estructura de una aplicacin Android Ciclo de vida de una aplicacin en Android

28 28 30 34 36

vi

3.4.1 Prioridad de procesos 3.5 Herramientas para el desarrollo

37 39 39 41 42 42 43 44 45 45 46

3.5.1 Instalar SDK Android 3.5.2 Instalar plugin en Eclipse 3.5.3 Completar la instalacin 3.5.3.1 Referenciar SDK 3.5.3.2 Configurar emulador AVD y actualizar plugin 3.5.4 Otras herramientas tiles 3.5.4.1 Otras funcionalidades del emulador 3.5.4.2 Dalvik Debug Monitor Service 3.5.4.3 Android Debug Bridge

Captulo 4 Creacin de una aplicacin Android 4.1 Hola Mundo

48 48 48 53 53 54 55 55 55 56 56 57

4.1.1 Nuevo proyecto Android 4.2 Organizacin de una aplicacin Android

4.2.1 Android Manifest 4.2.1.1 Nodo <application> 4.2.1.2 Nodo <uses-permission> 4.2.1.3 Nodo <permision> 4.2.1.4 Nodo <instrumentation> 4.2.2 Carpeta src 4.2.3 Carpeta res 4.2.4 Carpeta gen

vii

4.2.5 Carpeta bin 4.3 Interfaz de usuario en Android

57 58 58 59 66 72 72 78 80 81 83 86 86 88 89 89 91 94 103

4.3.1 View 4.3.1.1 Widgets 4.3.2 View Groups 4.3.3 Otros elementos de la interfaz 4.3.3.1 Menu 4.3.3.2 Dialogs 4.4 Uso de Intents para lanzar nuevas Activities

4.4.1 Paso de parmetros y resultados 4.5 4.6 Creacin de BBDD Aplicaciones multimedia

4.6.1 Reproduccin de archivos locales 4.6.2 Reproduccin de archivos remotos 4.7 Localizacin GPS y Mapas

4.7.1 Uso de la seal GPS 4.7.2 Uso de mapas 4.7.2.1 Creacin de una aplicacin Android con uso de mapas 4.8 Uso de recursos de Internet

Captulo 5 Mquina Virtual 5.1 Creacin de una Mquina Virtual

105 107

viii

Captulo 6 Valoracin econmica

112

Captulo 7 Conclusiones y trabajos futuros 7.1 7.2 Conclusiones obtenidas Trabajos futuros

114 114 116

Captulo 8 Bibliografa

117

Captulo 9 ndice de figuras

119

ix

Captulo 1

Introduccin

El avance tecnolgico de los ltimos aos demuestra el impacto ste ha tenido en la sociedad. Est comprobado cmo estos avances han servido de gran ayuda en el da a da y en el desarrollo econmico de sta. El acceso a esta tecnologa fue dificultoso porque slo estaba al alcance de muy pocas personas. Adems estos complejos dispositivos parecan una excentricidad cuando se lanzaron al mercado. Actualmente el uso de estas tecnologas, como por ejemplo el telfono mvil y el ordenador, es habitual; hasta tal punto que muchas personas son totalmente dependientes de ellas. Esto es debido al abaratamiento de los costes de produccin motivado por el precio competitivo. Estos dos factores: la accesibilidad y el coste, han sido claves en el boom tecnolgico ya que la mayora de las tecnologas no estaban destinadas fuera de un mbito cientfico. Las tecnologas de la Informacin y Comunicacin (TIC) han tenido un papel importantsimo debido a la asombrosa evolucin que han sufrido. Desde las primeras computadoras que servan de ayuda para elaborar clculos complejos de diversas operaciones matemticas hasta los actuales ordenadores porttiles. Esta transformacin ha sido posible a la investigacin llevaba a cabo en nuevos componentes sustitutivos que han modificado considerablemente el tamao de los ordenadores, ya que antes eran autnticos mastodontes; pasando por los primeros PCs hasta llegar a los actuales ordenadores. De la misma manera que las nuevas investigaciones en diferentes tipos introdujeron una reduccin considerable en el tamao de los ordenadores, y la accesibilidad a este tipo de productos tambin fue importante el desarrollo de la intercomunicacin entre ordenadores. Que las TIC estn cambiando la sociedad es un hecho indiscutible debido en gran medida a la utilizacin de estas tecnologas en nuestra vida diaria que estn haciendo que cambie la manera de relacionarnos. Ha cambiado la forma de comprar, acceder a la prensa o la bsqueda de informacin. Gracias a las TIC, las empresas han conseguido mejorar la productividad, hacindolas ms competitivas y generar nuevas lneas de negocio. Por ltimo, a raz del avance obtenido gracias a Internet y a factores anteriormente comentados, los ordenadores aumentaron y diversificaron su funcionalidad. En cierta manera acompaado de un cambio sustancial en los sistemas operativos que gobiernan los recursos del ordenador, sus mltiples caractersticas y cualidades. Y en la actualidad stos ofrecen diversas funcionalidades, desde procesadores de textos hasta reproductores de vdeo y audio, etc. Los ordenadores son una herramienta imprescindible de trabajo.

Centrndonos en el tema principal de este documento, y en especial en una rama de las TIC. Los dispositivos o telfonos mviles han sufrido un cambio de imagen realmente impactante en un corto perodo de tiempo han supuesto una revolucin tecnolgica impresionante. El telfono mvil naci para la comunicacin entre personas desde cualquier lugar del planeta. Con el paso del tiempo, este tipo de dispositivos evolucion en diversos aspectos como por ejemplo su aspecto fsico, pasando de tener un aspecto similar a un ladrillo, hasta llegar a tener un aspecto similar al de una cartera de bolsillo. Los nuevos componentes no slo proporcionaron la reduccin en el tamao sino que permiti que personas de todas las clases sociales pudieran tener acceso a ellos. Por otro parte, esta renovacin tambin viene acompaada en las diversas funcionalidades que han sido introducidas en este tipo de telfonos, ya que a la principal finalidad es la de comunicar. Otro tipo de caractersticas son: el envo de mensajes va SMS, diversas aplicaciones multimedia, videoconferencia, acceso a Internet, transferencia de archivos, etc. A raz de las nuevas funcionalidades incluidas, era necesario administrar los diferentes recursos que ofreca el hardware del telfono para ello se desarrollaron diferentes sistemas operativos (SSOO). Los sistemas operativos de los primeros telfonos mviles slo se encargaban de gestionar las llamadas recibidas y/o enviadas y los recursos de la energa proporcionada por la batera. Con el paso del tiempo y con las nuevas funcionalidades incorporadas, los SSOO de los dispositivos mviles han adquirido mayor importancia y complejidad, de tal modo que casi se podran equiparar con los SSOO que hoy se comercializan para cualquier tipo de ordenador. Uno de los primeros sistemas operativos para dispositivos mviles fue PalmOS, despus le siguieron Blackberry y Windows. Este tipo de SSOO iban destinados para dispositivos PDA pero poco a poco se fueron implantando en telfonos mviles hasta que Apple con su iPhone introdujo un nuevo concepto para dispositivos mviles, que fue el desarrollo de pantallas tctiles. Cuando iPhone se lanzo al mercado se pens que slo acaparara la cuota de mercado destinada a los telfonos mviles y dentro de sta, slo aquel segmento cuyo perfil no fuera ejecutivo, debido a que este perfil se relacionaba ms con SSOO como Palm, Blackberry o Windows Mobile. A la larga, se vio que estas previsiones fueron errneas de modo que los diferentes proveedores de SSOO o fabricantes de telfonos mviles tuvieron que ponerse manos a la obra para no perder an ms cuota de mercado frente a iPhone.

A partir de la revolucin introducida por la compaa Apple, multitud de fabricantes vieron como su cuota de mercado se desvaneca de modo que una buena parte de ellos se vieron forzados a introducir cambios en sus dispositivos. Varias compaas Nokia,Samsung,Siemens,etc se vieron obligadas a introducir cambios sustanciales en su modelo productivo, as que se llevo a cabo el desarrollo de un nuevo sistema operativo para este tipo de dispositivos llamado Symbian. Con este nuevo lanzamiento, dichas compaas se volvieron a posicionar en el mercado, ya que las principales caractersticas de este SSOO son muy similares a las caractersticas del iPhone. La mayora de los SSOO para dispositivos mviles se han desarrollo bajo un hardware especfico que apenas permite hacer modificaciones de alguna caracterstica de stos. Este agravante perjudica al desarrollo de aplicaciones para cualquier dispositivo mvil, debido a la dependencia del software del dispositivo y a que el conocimiento de ste es extendido slo por los propios desarrolladores del mismo, lo que dificulta que se puedan desarrollar aplicaciones por terceras partes. Con el transcurso del tiempo, y con el nacimiento de los dispositivos de ltima generacin, los SSOO han ido evolucionando y han permitido que se puedan desarrollar aplicaciones por terceras personas, puesto que permiten implementarse en lenguajes de alto nivel como puede ser Java (J2ME), pero con un ligero inconveniente, en cierta manera, las aplicaciones desarrolladas por particulares son dependientes de la firma del software para su implantacin o de la interfaz de usuario necesaria. Google irrumpi en el mercado, lanzando su propio sistema operativo llamado Android cuyas caractersticas estn basadas en el movimiento OpenSouce, y permiten a cualquier persona desarrollar todo tipo de aplicacin para este nuevo sistema operativo. Android es un stack de software desarrollado exclusivamente para dispositivos mviles cuyo kernel o ncleo est basado en Linux y todas sus aplicaciones se escriben en lenguaje Java. Adems Android est bajo licencia Apache.

1.1 Motivacin
Este proyecto tiene dos fundamentos importantes: Android facilita la creatividad porque sus aplicaciones se desarrollan bajo un lenguaje de programacin fcilmente accesible ya que permite a cualquier persona que tenga conocimientos bsicos sobre Java poder desarrollar su propia aplicacin. Esta facilidad de desarrollar en un lenguaje de alto nivel, permite que una amplia gama de aplicaciones puedan ser desarrolladas por terceras personas, de forma que el desarrollador se abstrae por completo de los requerimientos de hardware que en un principio requieren las aplicaciones de mviles. Otra caracterstica que soporta Android es que se basa en un cdigo abierto (licencia APACHE) por el cual toda persona tiene acceso al cdigo fuente y de este modo puede adaptarlo a las necesidades que el propio desarrollador considere oportunas sin necesidad obligada de distribuir los cambios realizados. Todo esto acompaado de poderosas libreras que facilitan la labor de la programacin y que en un futuro las aplicaciones desarrolladas puedan ser desplegadas en un telfono mvil. Es importante la innovacin generada por Android. La tecnologa en este mbito ha crecido a pasos agigantados, permitiendo incorporar utilidades tanto en las telecomunicaciones (Bluetooth, 3G,) como en el campo multimedia (reproductores de msica, vdeo) hasta tal punto que los telfonos mviles pueden ser considerados mini- ordenadores ya que incluyen iguales funcionalidades que un ordenador cualquiera. El principal promotor de la idea es Google que son los principales innovadores en el continuo avance tecnolgico.

La principal aptitud es que las aplicaciones creadas en Android son ligeras, en contrapartida a otras arquitecturas en las cuales las aplicaciones son totalmente dependientes del hardware hacindolas ms robustas. Por ltimo, introducir un argumento a favor del proceso de cambio al igual que el creativo que permite el desarrollo de las aplicaciones por terceras personas en vez de por empresas de software especializadas. Aunque existan herramientas para otro tipo de SSOO no todos ofrecen la misma facilidad que ofrece Google.

1.2 Objetivos
Los objetivos principales son los siguientes: Desarrollar una mquina virtual que sirve de plataforma para poder ejecutar aplicaciones para Android. Dicha plataforma debe ser portable para que se pueda trabajar con ella. Para llevar a cabo estas aplicaciones de Android, el entorno de programacin debe ser sencillo contando con un simple IDE de programacin instalado como puede ser Eclipse y la SDK proporcionada por Google. Conocer la estructura del sistema operativo Android. Averiguar qu existe dentro del nuevo sistema, conociendo de primera mano los entresijos que son necesarios como es su arquitectura, su diseo, al igual que las ventajas y desventajas que nos puede proporcionar frente a otros competidores. Establecer los principios bsicos para el desarrollo de aplicaciones. Conocer todo el entorno de programacin necesario: SDK esencial, APIs que se necesitan y todo tipo de paquetes o clases necesarias para poder abordar la programacin de cualquier tipo de aplicacin que se desee.

Captulo 2 Tecnologa en la actualidad


2.1 Introduccin
Se puede considerar a la industria de la telefona mvil como una de las industrias punteras as como estratgicas puesto que sta puede generar un total de un 1 milln de millones de dlares aproximadamente. Este ratio se deriva debido a la principal fuente de ingresos que son las llamadas y mensajera, pero poco a poco va ganando peso los ingresos obtenidos mediante otros servicios como puede ser el trfico de datos, y principalmente a travs de Internet. La irrupcin de Internet en este tipo de dispositivos no slo ha provocado una fuente de ingresos a tener en cuenta dentro de las operadoras telefnicas, si no que ha permitido un avance simblico desde el punto de vista tecnolgico.

A principios de la dcada de los 90 cuando aparecieron los primeros telfonos mviles, slo permitan establecer llamadas, ms tarde con el paso de los aos se fueron introduciendo nuevas funcionalidades como el envo de mensajes, despus se aadieron diversos juegos interactivos hasta llegar a navegar por Internet, realizar fotos e incluso ejecutar diversas aplicaciones multimedia como reproductores de vdeo y/o audio.

La capacidad de realizar y recibir llamadas es solamente una de las funciones de estos dispositivos ya que hoy son autnticos miniordenadores. Son capaces de procesar datos, poseen un teclado similar al de los ordenadores, con ellos se pueden procesar cualquier tipo de textos, acceder a Internet, reproducir archivos de msica y vdeo, y adems poder realizar fotos. Pero, cules son las principales diferencias o similitudes frente al ordenador convencional?

La principal diferencia que existe entre un sistema operativo que corre en un dispositivo mvil frente a una que se encuentra en un ordenador, es que para el primer caso, el sistema operativo debe lidiar contra restricciones mucho ms estrictas en cuanto a limitaciones en la memoria, procesamiento de datos y a que la ejecucin debe ser exacta y en un tiempo de respuesta mnimo. De modo que la gestin de recursos para este caso debe ser estrictamente minuciosa para las diferentes funcionalidades que otorga. Principalmente este hecho se debe a que este tipo de sistemas deben saber acoplarse a las necesidades tcnicas del terminal mvil, hacindolos totalmente robustos y a medida de los requerimientos planteados.

Tambin deben aportar una mayor fiabilidad y estabilidad, y estar debidamente analizados y testeados ante fallos. El sistema operativo debe manejar con sumo cuidado el tipo de aplicaciones que se pueden ejecutar. No como en el caso de los sistemas operativos convencionales que estn sujetos a errores y continuamente muestran soluciones a los supuestos fallos producidos, solucionndolos mediante nuevas actualizaciones o versiones del software.

La mayora de estos sistemas operativos deben funcionar en todo momento como si fuera un sistema 24X7 y que proporcione un alto nivel de usabilidad, de forma que el usuario pueda utilizarlo sin ningn requerimiento formativo especfico. As, la usabilidad se sita como un punto clave en el desarrollo de este tipo de dispositivos, ya que con esta funcionalidad se da respuesta a la necesidad demandada por los usuarios, donde el empleo de pantallas tctiles, abren un camino apasionante y excitante en la experiencia de uso en entornos mviles.

Los terminales mviles con grandes pantallas y teclado virtual se han hecho un hueco en el mercado y figuran en los catlogos de los fabricantes importantes. El uso del telfono mvil se ha transformado en algo placentero, divertido y sencillo, lo que ha motivado que la interfaz de usuario se haya vuelto ms atractiva y humana. De modo que los usuarios de telfonos mviles demandan aplicaciones y servicios que se diseen pensando en ellos.

2.2 El mercado tecnolgico en la actualidad


2.2.1 Principales demandas de mercado
Antes de ver cmo es cada sistema operativo, hace falta realizar una breve reflexin para observar qu se demanda en el mercado. Usabilidad En primer lugar, lo que la gente demanda es el diseo, los servicios y las aplicaciones, es decir, la usabilidad.

El principal detonante en la revolucin tecnolgica sufrida en este sector fue la llegada del iPhone. Este hecho ha producido un cambio importante en el diseo de los terminales mviles, provocando el nacimiento de nuevos dispositivos inspirados en l. Y es que, gracias al terminal de Apple, los usuarios de telfonos mviles, que hasta el momento eran grandes desconocedores del mundo del diseo mvil, han comenzado a escuchar expresiones como multitouch e interfaz de usuario. Esta evolucin no ha escapado a diseadores y fabricantes de mviles, que han seguido muy de cerca las evoluciones en este aspecto. Desde los primeros modelos con pantallas monocromo y mens lineales, pasando por la llegada del color, que increment la demanda de capacidades grficas, incluida la reproduccin de fotografas. El aumento de tamao en la pantalla fue una consecuencia casi inmediata, haciendo que la interfaz pasase de un modelo basado en texto a uno ms grfico. Sin embargo, no basta con llenar la pantalla de iconos y hacer que los mens tengan animaciones. Lo importante es apoyarse en esas nuevas posibilidades para hacer que la experiencia del usuario sea lo ms grata y satisfactoria posible. El mayor desafo en el mercado es cmo agregar toda la funcionalidad que se desea cuando el espacio en pantalla sigue siendo bastante pequeo en relacin al de un PC convencional. Por ello, a la hora de pensar en una nueva aplicacin hay que considerar aspectos tan importantes como si el usuario va a manejar el terminal con una sola mano o con ambas, o el contexto en el cual se va a utilizar la aplicacin.

Conectividad Otro aspecto a tener en cuenta en el desarrollo de aplicaciones es el diseo de servicios Web que sean utilizados desde el mvil.

Primeramente, hay que considerar las limitaciones tecnolgicas que impone el propio dispositivo; algunos terminales no est adaptados a cdigos complejos basados en Java Script y muchos no pueden con pginas que pesen mucho. Otra dificultad es conocer en qu tipo de mvil se va a ejecutar el contenido Web, es decir, las dimensiones de pantalla en las que se ver ese contenido, el tipo de navegador, etc. Tambin existen otro tipo de necesidades como pueden ser servicios de localizacin. Dichos servicios constituyen otra rea de soluciones de movilidad que ha evolucionado, expandindose a otros sectores, ms all del tradicional y pionero de transporte. En los tiempos actuales cobra especial importancia la relevancia del contexto, donde no slo interesa dnde se localiza al usuario sino de los servicios que pueden encontrar a su alrededor. Son muchas las soluciones basadas en la localizacin que estn dirigidas a la gestin, control, planificacin, seguimiento de recursos, etc... Tradicionalmente se ha asociado este tipo de servicios con el sector transporte pero ahora tambin permiten ampliarse a sectores como la publicidad o marketing. La apertura de los servicios de localizacin a mltiples sectores ha dado lugar a la aparicin de novedades tecnolgicas, nuevos tipos de soluciones y aplicaciones que aprovechan las oportunidades que brinda la localizacin, como puede ser la geolocalizacin y las aplicaciones que utilizan estas caractersticas. Por ltimo, los servicios de comunicacin entre mquinas (M2M) tiene cada vez ms aplicaciones y estn presentes en numerosos sectores verticales, gracias a los cambios producidos en las tecnologas de red y los dispositivos mviles. La comunicacin entre mquinas y dispositivos es algo habitual. Y se utiliza en los mbitos de telemetra, recogida de datos, control de trfico, mantenimiento remoto, etc. Actualmente estas tecnologas estn revolucionando el mercado. El desarrollo de las redes mviles GPRS y 3G, as como las tecnologas greles Bluetooth, WiFi, WiMAX y RFID que permiten establecer enlaces entre mquinas, han potenciado de forma muy importante las aplicaciones de mquina a mquina (M2M). Al igual que el desarrollo en las mquinas y dispositivos, puesto que estos ltimos son cada vez ms pequeos e inteligentes, formando parte de nuestra vida diaria, con mayores prestaciones, y permitiendo automatizar a travs de los mismos, tareas que antes eran inviables.

Movilidad corporativa Cada vez son ms los empleados que tele trabajan o que realizan sus actividades cotidianas fuera de una oficina y que durante su horario laboral deben acceder a aplicaciones, servicios y recursos de la empresa. Acceder a bases de datos comunes, compartir archivos y mantener sincronizados sus equipos de manera rpida, sencilla y sobre todo, segura es vital para la productividad diaria. Un simple dispositivo mvil puede convertir a cualquier persona en un trabajador en movilidad, posibilitando una sensible mejora de muchos sectores en los que los trabajadores se desplazan constantemente. El rango que pueden abarcar estas soluciones pueden ir desde la movilizacin de ERPs y CRMs hasta herramientas ofimticas y servicios de correo corporativo.

2.2.2 Representacin del mercado


El mercado actual de las TIC est en continua evolucin y transformacin, y ms an si nos fijamos nicamente en el sector de la telefona mvil. Es en l, donde se ha llegado a tener ms impacto sobre la sociedad y donde se constatado la mayor revolucin tecnolgica del momento. Los terminales mviles han pasado de ser simples a ser dispositivos altamente complejos; siendo equiparados a ordenadores, ofreciendo mayor fiabilidad y funcionalidad de todo tipo. Dichos dispositivos son imprescindibles en la vida de las personas para disfrutar de los componentes de ocio que ofrecen. Las nuevas oportunidades y caractersticas que ofrecen estos terminales, han hecho que el mercado de la telefona mvil sea el escenario de una lucha encarnizada. Realmente no hay un ganador claro ni un perdedor absoluto, lo que existe es un ajuste y posicionamiento en funcin de las habilidades de cada fabricante para convencernos de las prestaciones de sus sistemas operativos. El xito de que un terminal mvil triunfe depende de varios factores relacionados con el sistema operativo que contenga. Estos factores tan importantes pueden ser que el sistema operativo tenga las garantas suficientes de poder administrar los recursos y aplicaciones del terminal, de la robustez que ste posea y de que el hardware del dispositivo sea capaz de soportar las instrucciones generadas. Aparte de estas cualidades, lo que generalmente hace ms vistoso a un terminal de este tipo es que el sistema operativo sea fcil de usar y que posea aplicaciones bastante potentes y necesarias.

10

La guerra est abierta y mientras unos intentan mantener la cuota de mercado, otros sin embargo van ganando terreno en este difcil marco en el cual el riesgo de quedarse obsoleto o anticuado puede pagarse caro. Si lo que se quiere son nmeros que reflejen el mercado en la actualidad, segn estudios realizados en Diciembre de 2009, el sistema operativo que lidera actualmente el mercado es el iPhone OS con un porcentaje del 51%, a la estela de iPhone se sitan tanto Symbian OS como Android con porcentajes casi similares, 21% y 16% respectivamente. Por ltimo se encuentran los sistemas operativos de BlackBerry y Windows los cuales suman en total un 9% del mercado. Para poder aclarar, un poco lo datos sobre los porcentajes o cuotas de mercado que anteriormente se han comentado, decir, como nota aclaratoria, que los datos vertidos, representan el nmero mundial de smatphones, es decir, aquellos telfonos mviles que disponen de un sistema operativo identificable. Tambin cabe destacar que el porcentaje de smartphones representan el 14% del montante de telfonos mviles de 2009.

Figura 1. Diagrama de sectores del mercado de la telefona mvil

Para saber cmo se ha hecho fuerte en el mercado iPhone, no hace falta ms que ver la grfica en la cual se puede comprobar que este sistema operativo domina prcticamente en el mercado ocenico llegando a tener un porcentaje del 92%. El sistema operativo de Apple no slo domina el mercado en el continente ocenico, sino que domina tambin domina en mercados tan competitivos como el americano y europeo.

11

Especialmente relevantes son estos datos, pues iPhone OS slo se puede implantar en los dispositivos que propiamente Apple proporciona, mientras que otros sistemas operativos competidores pueden encontrarse en diferentes terminales y de diferentes fabricantes a la vez.

Figura 2. Cuota de mercado de los diferentes competidores Por otro lado, uno de los mayores competidores de iPhone, es Symbian OS, el sistema operativo desarrollado principalmente por Nokia, es por el contrario el lder indiscutible en el continente africano. En este continente Symbian es el claro dominador del mercado con un 87%. Del mismo modo, Symbian, es tambin el principal sistema operativo escogido en el continente asitico con un 69% de la cuota de mercado. Symbian, sigue teniendo un porcentaje significativo en mercados como el europeo o el representado en el mercado suramericano. Tambin hay que destacar que este sistema operativo no tiene representacin alguna en el mercado norteamericano, donde es incapaz de hacer sombra al software de Apple. Otro dato revelador, es que Symbian, es el sistema operativo elegido en al menos 5 de cada 10 telfonos mviles en cualquier tipo de mercado sin considerar el mercado norteamericano o el de Europa del Este. En cuanto al tercer sistema operativo sobre el cual se dirige gran parte de la documentacin elaborada es Android. ste est posicionando en el mercado norteamericano donde Apple es el dominador. Del mismo modo en Europa se est intentando introducirse a pesar de que sus porcentajes no sean muy significativos. Lo que s es realmente significativo, es el crecimiento que Android, poco a poco, est adquiriendo. Respecto al ao 2008, en mercados como el americano o el europeo, ha evolucionado desde un 1% que representaba hasta llegar a un 16%.

12

Por ltimo, comentar que los sistemas operativos como BlackBerry Os y Windows Mobile, slo tienen valores especialmente representativos en el mercado americano, donde tienen unos porcentajes pequeos pero los suficientes para ser considerados en un mercado en el cual el principal sistema operativo reinante es el iPhone OS. La principal causa, puede ser que ambos sistemas operativos, son tambin los representativos de un sector de consumidores con perfil empresarial.

2.2.3 Comparativa de los diferentes SSOO


Antes de pasar a comentar cada uno de los sistemas operativos se realizar una breve comparacin introductoria para conocer los aspectos bsicos de cada uno de los sistemas operativos que se comentarn en el apartado siguiente y que se pueden encontrar en diferentes dispositivos mviles. El revolucionario en este mundo sin duda alguna fue Apple, que fue la chispa que inici una gran batalla en un mercado en el cual la tarta estaba repartida entre otros dos gigantes del sector, Windows Mobile y Symbian. Windows Mobile, uno de los decanos en el mundo de la telefona mvil ha logrado mantenerse con en el paso de los aos. A lo largo de los aos son grandes las desventajas adquiridas frente a sus competidores, dichas caractersticas negativas pueden ser su excesivo consumo de recursos, la limitacin que presentan sus aplicaciones, sin embargo una de sus grandes ventajas y por la cual destaca el sistema operativo de Windows es su gran capacidad de integracin con la versin que corre en cualquier ordenador de sobremesa. En cuanto al abanderado de Nokia, Symbian, intenta mantener el liderazgo que obtuvo en aos anteriores. Para volverlo a recuperar, la nueva versin de su software hace hincapi en una pantalla de inicio completamente personalizable mediante widgets. Por otro lado, Apple, la sencillez de su uso y su interfaz, son sin duda alguna las claves del iPhone OS, que resulta ser una especificacin del sistema operativo MacOS para este tipo de dispositivos. Y todo ello a pesar de no ser un software que soporte ser una plataforma multitarea, llegando a ser bastante restrictivo en cuanto al uso del hardware. El recin llegado a este mercado y que parece haberse hecho un hueco en l es, Android, un sistema operativo de plataforma abierta basada en Linux. La fcil integracin con las herramientas Web de Google, as como el uso moderado de recursos hacen que sea una plataforma a tener en cuenta a largo plazo.

13

Otra plataforma que se mantiene en la lucha es BlackBerry, la cual se presenta como una estructura cerrada en lo que a aplicaciones adicionales se refiere, pero ofrece una amplia gama de herramientas multimedia y empresariales.

A continuacin se va a mostrar una tabla comparativa con cada una de las caractersticas ms importantes de las diferentes plataformas que se han descrito en este apartado.

Conectividad Creador Disponibilidad de aplicaciones Disponibilidad de App Store Dispositivos compatibles Licencia Multitarea Tctil/Multitctil Tipo de ncleo

3G,GSM,WiFi

3G,GSM,WiF CDMA

3G,GSM,WiFi, CDMA

3G,GSM,WiFi

3G,GSM,WiFi, GPRS

Nokia Alta

Microsoft Alta

RIM Mediana

Apple Alta

Google Mediana /Alta S


Smartphones /netbook

S
Smartphone / telfono

S
PDA / Smartphone

S
Smartphone

S
Smartphone

Privada S S Symbian

Privada S S WindowsCE

Privada S S Propio

Privada S S iPhoneOS

Abierta S S Linux

Tabla 1. Comparativa de los principales sistemas operativos para dispositivos mviles

En el apartado siguiente se va analizar con profundidad todas las cualidades descritas, as como otras ms especficas de cada uno de los sistemas operativos enunciados.

14

2.3 SSOO mviles


Actualmente se pueden encontrar diversos sistemas operativos destinados para dispositivos mviles, a continuacin se describirn uno a uno las caractersticas principales de cada uno de ellos, as como las posibilidades de poder programar aplicaciones para dichos sistemas.

2.3.1 Symbian
Symbian es uno de los sistemas operativos para mviles ms extendido en el mercado. Este software naci en parte gracias al desarrollo de Psion, que junto a fabricantes de este tipo de terminales como son Nokia, Ericsson y Motorola formaron este joint venture en el ao 1998. Aunque en la actualidad la mayora de los activos pertenecen a Nokia. En 2008, y ante la aparicin de iPhone y Android en este mercado, la compaa finlandesa decidi liberar el cdigo, mediante licencias Eclipse, y unir las diferentes personalizaciones que haban surgido de Symbian.

Symbian empez con su primera release en el ao 1998 y estaba basado en el sistema EPOC hasta la actualidad cuya ltima versin lanzada que corresponde a la 9.5 en Marzo de 2007.

Figura 3. Dispositivo con sistema operativo Symbian

15

La estructura del sistema operativo Symbian consiste en : Symbian tiene un microkernel, en realidad un nanokernel de tiempo real que permite que existe slo lo imprescindible proporcionando de este modo mayor robustez, disponibilidad y capacidad de respuesta. Este microkernel est formado por un planificador, un gestor de memoria y controladores de dispositivos. La capa base de servicios, es el nivel ms bajo al que pueden llegar todas las operaciones desde el lado del usuario y en esta capa se incluyen el sistema de archivos, un sistema gestor de BBDD, biblioteca del usuario, as como un gestor de todos los plugins y servicios criptogrficos. El sistema de archivos escogido en Symbian y que vino predeterminado por EPOC es el sistema FAT, lo cual ha permitido una compatibilidad con otro tipo de dispositivos. En la capa de servicios del SSOO, se incluyen todos los servicios genricos del SSOO al mismo modo que tambin se incluyen servicios de comunicaciones y conectividad, y de servicios multimedia y grficos. Por ltimo, destaca la capa de interfaz de usuario. Puesto que en funcin de esta ltima capa se forman las distintas ediciones de Symbian. Dichas ediciones dependen de las diferentes interfaces, las cuales son las siguientes: Serie 60: Es una de las series ms utilizadas en smartphones debido principalmente a que su mayor divulgador ha sido Nokia aunque tambin lo utilizan fabricantes como Siemens, Samsung y Panasonic. Esta serie incluye diferentes versiones de Symbian debidas principalmente a la generacin de los terminales, as podemos encontrarnos para telfonos mviles de primera generacin, los cuales se comercializaron con una versin 6.1 del software destacando por ejemplo al Nokia N-gage o al Siemens SX1. Pasando por versiones desde la 7.0 a la 8.1 para mviles de segunda generacin hasta llegar a los terminales de tercera, cuarta y quinta generacin que incluyen versiones desde la 9.1 en adelante.

Figura 4. Dispositivo N-gage

16

Serie 80: Esta edicin va especialmente orientada a dispositivos que disponen de pantalla tctil y funcionalidades multitarea, es decir, tener corriendo varias aplicaciones simultneamente. Para este tipo de interfaz, utilizan versiones 6 y 7 de Symbian para mviles de primera y segunda generacin. Serie 90: Esta versin slo ha sido comercializada en el Nokia 7710, realmente es similar a la serie anterior. Serie UIQ: Fue desarrollado por los creadores de Symbian para su uso en mviles de la marca Motorola y Sony Ericsson. La principal caracterstica de esta serie, es que implementan una especie de multitarea virtual, dando la sensacin de poder realizar varias acciones simultneas pero a la postre elevan el tiempo de respuesta. Las versiones utilizadas principalmente para este tipo de terminales son la 7.0 y 9.x.

MOAP: Para este tipo de interfaz cuyo desarrollo ha sido promovido por el consorcio FOMA, el mayor inconveniente es que su divulgacin slo se ha realizado por Japn.

Las ventajas que ofrece Symbian, es la capacidad que tiene el sistema para adaptar e integrar todo tipo de aplicaciones que pueden ser programadas por diferentes desarrolladores. Tambin hay que tener en cuenta que dichas comodidades que Symbian proporciona se deben en buena medida a la estandarizacin de los protocolos, las interfaces y la gestin de los servicios de la integracin de sus aplicaciones. Adems de tener en cuenta como referencia a la hora de desarrollar dicho sistema bases tan importantes como proporcionar la energa, memoria y gestin de entrada y salida de los recursos requeridos especficamente. En cuanto a la hora de desarrollar aplicaciones, Symbian permite utilizar lenguajes de alto nivel como bien pueden ser Java, C++, Visual Basic o Perl. Por otro lado para el desarrollo de terceras partes, se proporcionan todo tipo de herramientas como SDKs para desarrollar aplicaciones para este tipo de sistema operativo, el inconveniente en este punto es que existen entornos de desarrollo y APIs diferentes en funcin de la interfaz sobre la cual se va a implementar la aplicacin a realizar. Al mismo tiempo que la firma del software generado.

17

2.3.2 Windows Mobile


Windows Mobile es el sistema operativo destinado a satisfacer las necesidades de los usuarios de dispositivos mviles; es uno de los sistemas operativos para mviles ms veterano que camina por la versin 6.5. Su origen se remonta a las agendas electrnicas denominadas Pocket PC, aunque luego se adapt ante la mejora de prestaciones de los telfonos. Su diseo proviene de Microsoft y representa la evolucin de la primera plataforma conocida que fue Windows CE. Con el desarrollo de este sistema operativo, Microsoft busca un sistema operativo mvil capaz de asegurar flexibilidad, productividad y usabilidad. Estos tres objetivos se alcanzan hacindolo semejante en cuanto a interfaz se refiere, a un Windows normal y corriente que se ejecuta en cualquier PC, pero el diseo de este caso en particular, se ha llevado a cabo teniendo en cuenta las necesidades del terminal. De tal forma, que los sistemas desarrollados, suelen ser modulares para facilitar al fabricante el acoplamiento de dicho sistema a las necesidades del hardware de su dispositivo. Esto se debe en cierta parte al complejo sistema de gestin de procesos e hilos de ejecucin, con el cual se puede ofrecer un tiempo de respuesta que lo convierte en un sistema de tiempo real duro, haciendo satisfacer de esta manera las necesidades de las aplicaciones ms exigentes.

Figura 5.Dispositivos con Windows Mobile Otro punto importante de Windows Mobile es su compatibilidad con los estndares de correo electrnico. Esto supone una mayor facilidad de adaptacin de las aplicaciones y familiarizacin por parte del usuario con ellas. Microsoft dispone de versiones de Office, Outlook, Internet Explorer o Windows Media Player para esta plataforma. Adems en el campo de la ofimtica, tambin ofrece una compatibilidad de esta plataforma con la suite Office, permitiendo de esta manera poder acceder a la visualizacin o edicin de archivos Word, Excel y Power Point que se han elaborado en el PC y favoreciendo de esta manera la continuidad del trabajo fuera de la oficina.

18

Esta integracin y compatibilidad permite a los usuarios disfrutar de una experiencia igual o al menos similar a la que estn habitualmente acostumbrados en su PC.

La estructura bsica de este tipo de sistema operativo, es la siguiente: OEM Layer: Esta es la capa situada en el ms bajo nivel, de modo que se sita entre el hardware del dispositivo mvil y entre el kernel del sistema operativo. Y su funcionalidad bsica es la permisividad que proporciona a los fabricantes para as poder desarrollar sus propios drivers y controlar los diferentes recursos del hardware. Operating System Layer: En esta capa es donde se sita el kernel del sistema operativo y donde tambin residen todas las bibliotecas de comunicaciones, el gestor grfico, y el gestor de ficheros y registros. Application Layer: Es la ltima capa y es sobre la cual se despliegan todas las aplicaciones de los usuarios al igual que las aplicaciones que vienen por defecto en el sistema operativo.

Para poder desarrollar aplicaciones en Windows Mobile es necesario descargarse las SDKs proporcionadas o para smartphones o para PocketPC, la diferencia entre ambos es que Microsoft considera a un Smartphone como de un Pocket PC (phone edition ) pero ms pequeo y sin Office Mobile. Para instalar las herramientas de desarrollo se han de cumplir una serie de requisitos software necesarios, principalmente se resume a que es necesario disponer del IDE de desarrollo de Microsoft, es decir, de Visual Studio. Dicha restriccin supone un serio inconveniente ya que para poder desarrollar es necesario tener software de pago. Existen dos formas de poder desarrollar aplicaciones en este sistema operativo: la primera es crear aplicaciones en cdigo nativo, es decir, cdigo C++ , de manera que se pueden utilizar las APIs de Windows Mobile, y a la vez permite que el cdigo sea mucho ms rpido que de la otra. La segunda forma de poder desarrollar aplicaciones en Windows Mobile, es la de poder programar aplicaciones en cdigo administrado, utilizando de esta manera las clases de .NET Compact Framework. Aunque las aplicaciones sean ms extensas, son ms sencillas de programar pero de esta manera no se permite el acceso a algunas caractersticas del hardware que slo pueden accederse desde el cdigo nativo.

19

En sntesis, es muchsimo ms sencillo programar desde el Compact Framework, puesto que el tamao que ocupe una aplicacin no es tan importante como la rapidez , y cmo pueden existir partes crticas del cdigo que pueden desarrollarse slo en cdigo nativo, por tanto aquellas partes difciles se dejan en cdigo nativo y el resto desde el administrado. Este sistema operativo se puede encontrar en marcas como HTC, Samsung, LG o Sony Ericsson.

2.3.3 iPhone
En Junio de 2007, Apple lanz su ansiado telfono. Acostumbrados a revolucionar los diferentes mbitos en los mercados en los que participa este ente. El iPhone prometa cambiar el panorama en cuanto a los dispositivos mviles y ha conseguido una importante penetracin en el mercado.

Figura 6. iPhone El telfono inteligente de Apple ha sido revolucionario principalmente porque incorpora un completo sistema operativo. El iPhone OS, nombre del sistema operativo del iPhone, del iPod Touch y del reciente iPad, ha concitado mucha atencin gracias a su sistema patentado de manejo mediante una pantalla multitctil que no requiere de ningn lpiz ptico. La usabilidad y su atractivo diseo se contraponen a carencias como que no reproduzca vdeos en flash (excepto si se libera e instala alguna aplicacin especfica), la imposibilidad de que las aplicaciones trabajen en un segundo plano simultneo, a diferencia de lo que ocurre en las dems plataformas, y a configuraciones ms restrictivas, que restan libertad al usuario. Resulta apropiado para disfrutar del ocio multimedia: escuchar msica, ver vdeos o jugar a videojuegos, entre otras distracciones ya que cuenta con programas adaptados como su propio browser, es decir, Safari, el reproductor iTunes y multitud de aplicaciones ms, por tanto, es normal que destaque el xito de su tienda de aplicaciones entre empresas, programadores y usuarios. Sin embargo, en entornos profesionales se revela como poco eficiente, debido a que su pantalla tctil no resulta cmoda para escribir mensajes, correos electrnicos o para editar archivos de texto.

20

Principalmente, el kernel es un aspecto importante en todo sistema operativo, pero lo que realmente aprecia el usuario, es la interfaz. De este modo, iPhone ha marcado estilo con sus iconos y su fcil acceso a las aplicaciones, adems de la mencionada pantalla tctil que no necesita utilizar ningn puntero o lapicero, al mismo tiempo que en sus ltimas versiones permite personalizar la interfaz. Tcnicamente el iPhone OS deriva del Mac OS X, concretamente basado en una variante del March Kernel que se encuentra en todo dispositivo Mac. Y que al igual que sus hermanos mayores, este sistema operativo mantiene su estructura en cuatro capas. La primera y situada en el nivel ms bajo, est la capa del ncleo del sistema operativo, sobre sta se coloca una capa de servicios principales, y por ltimo las capas de medios de comunicacin y la capa de Cocoa Touch. De estas cuatro capas nombradas, hay que resaltar que las tres primeras son un fiel reflejo de lo que se puede encontrar en cualquier Mac OSX, sin embargo es en la ltima capa, en la Cocoa donde se encuentran las diferencias significativas puesto que se ha tenido que adaptar a los requerimientos de una pantalla tctil.

A continuacin se va a comentar detalladamente cada una de las capas que lo conforma:

Figura 7. Estructura iPhone OS

Capa de ncleo de sistema operativo o Core OS: Es la primera capa del sistema operativo, y es donde residen los pilares bsicos de ste. La importancia de esta capa se debe a que es donde reside el kernel OSX, as como todo el sistema de bibliotecas como de archivos, y toda la gestin de energa, seguridad, certificados y sockets.

21

Capa de servicios principales o Core Services: La capa de servicios principales, est situada por encima de la capa de ncleo y en ella se encuentran los servicios bsicos del sistema. Servicios como son el acceso a archivos, colecciones, redes (acceso a wifi y 3G), hilos (Posix), preferencias del sistema, y acceso a base de datos (sqlite). Capa de medios de comunicacin o Media: Por encima de la capa de los servicios principales del iPhone OSX reside la capa de servicios de comunicacin sobre la cual se otorga toda la responsabilidad de la gestin multimedia, bien sean grficos, audio, videos, etc En sta residen todo tipo de manejadores de audio, reproductores de vdeo, manejadores de archivos fotogrficos o documentos, etc Tambin maneja las bibliotecas necesarias para dibujar 2D y 3D. Adems incluye lo necesario para poder programar en C con soporte a tecnologas como openGL-ES, Quartz y CoreAudio. En ltimo lugar se sita la capa Cocoa Touch: Es en esta ltima capa donde se fija el framework de desarrollo tanto para iPhone, iTouch o iPad. Desde esta capa se puede acceder a la interfaz proveyendo una biblioteca para el manejo de ventanas, cuadros de dilogo, vistas y diversos controladores multi touch. Tambin se pueden acceder a las fotos, los contactos, el acelermetro,

Vista la estructura del sistema operativo del iPhone, existe otra caracterstica existe en estos dispositivos, y es que tanto el iPhone como los iTouch o iPad utilizan procesadores ARM en contraposicin a los x86 que se utilizan en las versiones de sistemas operativos destinadas para PCs. Este hecho desemboca en que cualquier aplicacin probada y ejecutada en cualquier Mac OSX no se puede ejecutar en iPhone OS. Entonces, toda aquella aplicacin que se desee que funcione dentro de un iPhone o similares, tiene que haber sido compilada y escrita para la disposicin ARM y hipen OS. Al igual que una aplicacin debe ser creada para una arquitectura especfica, otra desventaja que muestra iPhone OS, es que no se permite ms de una aplicacin ejecutndose a la vez, y las aplicaciones de terceros no se pueden ejecutar en segundo plano. De esta forma, Apple se evita toda serie de complicaciones y problemas relacionados principalmente con la batera, todo ello a cambio de que los programadores vuelvan a los tiempos de la multitarea cooperativa. Tambin se debe garantizar el buen funcionamiento de la aplicacin cuando otra aplicacin reemplace su lugar y que tampoco se queden a la espera de algn evento por un tiempo indefinido. Aunque en la ltima versin de iPhone (4.0) dicho problema se solventa y permite la multitarea.

22

La nica manera de instalar legalmente un programa en iPhone es a travs de la AppStore. El desarrollador enva la aplicacin finalizada a Apple, quien decide si la publica o no, basndose en criterios propios. El xito de la plataforma est en que la demanda del consumidor obliga a los desarrolladores a seguir trabajando sobre el iPhone, impidiendo Apple la competencia sobre su propio software. En este sentido, iPhone es el nuevo paradigma de la plataforma cerrada, ya que en el ltimo momento es Apple el que decide que se puede instalar sobre su plataforma, realizando un control exhaustivo sobre qu se puede desarrollar, quin puede distribuir las aplicaciones y qu puede hacer el usuario con el dispositivo mvil. Como se ha comentado antes, el desarrollo de aplicaciones para el iPhone no es de fcil acceso debido a las polticas establecidas por Apple, que en cierta manera son restrictivas o arancelarias, dificultando la propagacin entre desarrolladores y no proporcionado APIs tan consolidadas como pueden hacer otros sistemas operativos. Para concluir con este sistema operativo se va a explicar los diversos pasos que se deben realizar para poder desarrollar una aplicacin para iPhone y las facilidades o trabas que se pueden encontrar para poder realizar aplicaciones para este entorno.

1) Inscribirse en el iPhoneDevCenter: este es el portal de Apple donde se da de alta para poder desarrollar aplicaciones para iPhone, aqu, en este website se puede descargar la SDK y diversa documentacin para poder programar en este entorno. Realizado este primer paso, se puede empezar a desarrollar aplicaciones, compilarlas, probarlas en el simulador pero no se pueden instalar en el iPhone.

2) Registrarte en el programa de desarrollo de iPhone (iPhone Developer Program): tras registrarse y tras abonar una cantidad prxima a los 100 dlares se obtiene el derecho a ejecutar la aplicacin que se haya elaborado en el propio iPhone.

3) Obtener certificados: como por defecto slo se pueden ejecutar aplicaciones firmadas por Apple, y como cada vez que se hagan modificaciones en el cdigo programado, no se lo est enviando constantemente los programadores para poder probarlo. Se crea un perfil con el identificador del telfono, y adems se debe obtener otro certificado para poder firmar las aplicaciones.

23

4) Xcode: en este paso, si todos los anteriores han ido bien, ya podemos desarrollar aplicaciones con el IDE que proporciona Apple (Xcode). Anteriormente, Apple tena prohibido a los desarrolladores de aplicaciones hablar sobre su SDK, aunque en la actualidad se ha elevado el nivel de permisividad y se puede comentar entorno a aplicaciones e intercambiar cdigo. Y si por ltimo se desea que la aplicacin sea distribuida para el resto de usuarios del iPhone, se debe de obtener otra certificacin y esperar la verificacin por parte de Apple y una vez que la aplicacin sea aprobada, esperar a que los usuarios quieran utilizar la aplicacin desarrollada.

2.3.4 Blackberry
BlackBerry es el sistema operativo de los mviles del mismo nombre fabricados por RIM. Gran parte de sus modelos se han concebido para uso empresarial y para exprimir su teclado completo, aunque el software tambin soporta en la actualidad las pantallas tctiles La BlackBerry es una seria oportunidad de unir el mundo de los negocios con las necesidades personales. Si bien BlackBerry no aporta una interfaz bonita, su sistema operativo sigue siendo el tradicional BlackBerry OS desarrollado por RIM. Un sistema con interesantes cualidades multitarea, que el sistema operativo hace sello de identidad de l mismo, puesto que se puede ejecutar aplicaciones de mensajera instantnea de fondo, mientras navegamos por Internet o redactamos un correo electrnico.

Figura 8. Dispositivo BlackBerry La capacidad de trabajar en entornos multitarea con eficiencia es algo que se valora bastante al realizar la eleccin sobre qu tipo de terminal mvil a utilizar, y muchos usuarios demandan la productividad que se consigue al utilizar varias aplicaciones al mismo tiempo.

24

Con BlackBerry, no solo conseguimos una productividad efectiva, sino que el sistema se vuelve ms dinmico al realizar notificaciones y operaciones en tiempo real mientras realizamos otras tareas. Tambin ofrece amplias garantas a las demandas de que los sistemas operativos ofrecieran servicios de correo electrnico, amn de que fuera fcil de usar y rpido. Estas demandas se ven satisfechas puesto que hoy das RIM aparte de ser el encargado de construir y desarrollar el BlackBerry OS, es una empresa que ofrece un amplio abanico de dispositivos y es tambin proveedor de servicios de correo electrnico a dispositivos que no son BlackBerry como pueden ser Symbian, Windows Mobile o Palm, gracias al programa BlackBerry Connect.

Figura 9. Logotipo empresa RIM En cierta manera, BlackBerry fue el pionero en el campo de introducir servicios de correo electrnico mediante la tecnologa push la cual permite a los usuarios poder seguir conectados al correo electrnico y a muchas aplicaciones corporativas. Dicha tecnologa consiste principalmente en que los mensajes se reciben constantemente, sin necesidad de que el usuario tenga que realizar una conexin y comenzar a descargarlos. As, en un dispositivo BlackBerry es posible redactar, enviar y recibir todo tipo de mensajes de correo electrnico, al igual que en un PC cualquiera. Destaca por la forma en que integra el correo electrnico y enva los mensajes segn se reciben, un servicio que requiere de una tarifa plana de datos para disfrutarlo con comodidad. El sistema operativo deja que funcionen varias aplicaciones al mismo tiempo. Las desventajas que puede ofrecer el sistema operativo de BlackBerry se pueden encontrar que su navegador se caracteriza por ser ms lento que el de sus rivales y no tiene tanta variedad de software de terceros disponible como los dems, y de que no ofrece conectividad va wifi pero s dispone de las aplicaciones ofimticas principales lo cual lo hacer ser la mejor eleccin y ms competitivo para entornos laborales.

25

La estructura en s del sistema operativo de BlackBerry, es propio de la empresa canadiense RIM (Research In Motion) y como bien se ha comentado anteriormente en un ejemplo claro de icono de los entornos de oficina.

Aunque la estructura de este sistema operativo no ste divulgado, ya que ste es propio y cerrado, la base del kernel de BlackBerry es AMX, y la gran parte del sistema operativo est desarrollado bajo los estndares de Java, concretamente Java ME. De lo que se puede extraer de la informacin que puede ser accesible desde la web para saber ms o menos sobre cmo es este sistema operativo se puede tener constancia que la configuracin utilizada por BlackBerry, es decir, el conjunto de clases bsicas destinadas a conformar el corazn de la aplicacin es CLDC (Connected Limited Device Configuration). Este tipo de configuracin va enfocada a todos aquellos dispositivos que tengan toda clase de restricciones de procesamiento y memoria. Sabiendo la configuracin escogida, se puede saber la mquina virtual utilizada, que es la CVM (Compact Virtual Machine). Dicha mquina virtual, tiene las mismas caractersticas que la JVM que se utiliza normalmente para JSE, sin embargo la CVM est orientada para dispositivos electrnicos con procesadores de 32 bits de alta gama y con 2Mb de RAM.

A la hora de programar o poder desarrollar aplicaciones para BlackBerry, hay que tener en cuenta que la plataforma utilizada es Java ME y que la funcionalidad de la mayora de las aplicaciones van destinadas u orientadas hacia entornos corporativos o empresariales.

Es conveniente saber que existe un entorno para poder crear todo tipo de programas empresariales bajo la herramienta BlackBerry MDS Studio, desde la cual se pueden crear interfaces de usuario con la tcnica drag and drop para as poder acceder a datos empresariales va webservice. Tambin desde Blackberry se proporciona gratuitamente una JDE, concretamente el BlackBerry Java Development Enviroment, desde este IDE se proporciona el acceso a las APIs de Java ME como a las propias de BlackBerry, adems de incluir diversos simuladores de este tipo de dispositivos desde donde se puede probar el cdigo desarrollado. El nico inconveniente a la hora de desarrollar para BlackBerry, es que se debe de estar registrado para poder programar y que el cdigo que se quiere desplegar dentro de un terminal de este tipo tiene que estar previamente firmado por RIM.

26

2.3.5 Android
Y en ltimo lugar Android. Antes de hablar sobre este sistema operativo, aclarar previamente que su estructura as como la posibilidad de desarrollar programas bajo este entorno, se van a explicar detalladamente en apartados posteriores, realizando de esta manera en este punto una breve introduccin a este nuevo sistema operativo. Android es un sistema operativo que impuls Google y ahora promueve la Open Handset Alliance (con fabricantes como HTC, Samsung, LG o Motorola adems de la propia Google). Ha sido uno de los ltimos en llegar a este segmento, pero ha irrumpido con fuerza en varios terminales avanzados, como los de HTC. Constituye una pila de software pensada para telfonos mviles y que incluye tanto un sistema operativo, un middleware y diversas aplicaciones de usuario.

Las aplicaciones de Android se programan en lenguaje Java y son ejecutadas en una mquina virtual diseada a medida para este sistema. Cuenta con el aval de la compaa Google. En el aspecto tcnico destaca su creacin a partir del kernel Linux(2.6) y dispone de una licencia libre Apache. Desde el punto de vista de un desarrollador, Android, proporciona de forma gratuita una SDK y un plug-in para el entorno de desarrollo Eclipse, as como un emulador integrado para su ejecucin.

Figura 10. Android En sntesis, la visin que se intenta tener de Android, es la de una misma plataforma que rene todos los elementos que permitan desarrollar, controlar y aprovechar las funcionalidades que ofrecen los dispositivos mviles. Del mismo modo que tambin se busca que todas las aplicaciones sean portables, reutilizables y fciles de desarrollar. Slo recordar que en apartados venideros se hablar con mayor pausa y detenimiento sobre las caractersticas tcnicas que Android ofrece, as como de las facilidades que se ofrecen para poder desarrollar aplicaciones en el sistema operativo de Google.

27

Captulo 3 El sistema Operativo Android


3.1 Introduccin

Android es una pila de software de cdigo abierto que incluye un sistema operativo, middleware, y aplicaciones clave con una series de libreras API para poder desarrollar aplicaciones en terminales mviles a las cuales se las pueden dar la forma y el funcionamiento especfico para que pueda funcionar en telfonos mviles. Hasta hace poco, poder desarrollar aplicaciones para telfonos mviles era dificilsimo porque se programaban bajo sistemas operativos propios y en entornos de desarrollo cerrados, a los cuales era imposible acceder. As mismo, los propios terminales priorizaban las aplicaciones nativas, hacindolas prevalecer frente a aplicaciones que se hayan desarrollado por terceras partes. Esto supona una barrera infranqueable para los desarrolladores de este tipo de aplicaciones. En Android las aplicaciones tanto nativas como las desarrolladas por terceras partes son escritas usando la misma API y ejecutadas en las mismas condiciones. Es por ello que en Android todas las aplicaciones son iguales sin hacer ninguna distincin ni discriminacin.

Figura 11. Icono de Android Histricamente, los desarrolladores codificaban sus aplicaciones en lenguajes de bajo nivel, para lo que era necesario entender el hardware especfico sobre el que iban a trabajar, y generalmente solan ser un dispositivo sencillo o un rango de dispositivos provenientes del mismo fabricante. En la actualidad, los avances realizados en el desarrollo de aplicaciones para terminales mviles, han hecho que se pueda programar con un nivel de abstraccin para que el programador se asle de la capa hardware y no estar pendiente de ella.

28

Entre las caractersticas del sistema operativo Android destacamos: Todas sus aplicaciones se programan en lenguaje Java y son ejecutadas en una mquina virtual especfica diseada para esta plataforma.

Todo su software se ha realizado bajo una licencia Apache, de modo que el cdigo es de libre distribucin. Tambin una de las causas primordiales por las cuales se ha escogido una licencia Apache, es porque este tipo de licencia permite que se realicen modificaciones sobre el software inicial y una vez que se realicen los oportunos cambios, no exige que el software alterado se distribuya como software libre. Permite a las operadoras modificar a su gusto la plataforma, aadir nuevas funcionalidades y no tener que compartir el cdigo ni permitir su uso a terceros. As, de este modo, se puede entender como algunos operadores y fabricantes hayan visto con buenos ojos esta iniciativa y es por ello que se hayan sumado a Android. La principal causa de esta adhesin es que dichas compaas podrn modificar el cdigo y desarrollar todo tipo de aplicaciones o trabajos sin la necesidad de verse obligados a compartir todo la elaboracin producida. De todas formas, la licencia Apache propuesta por Android, permite que cualquier persona se pueda descargar, acceder al cdigo fuente, modificarlo y redistribuirlo pero con el ligero inconveniente que a cualquier persona se le exime de este ltimo punto.

A cualquier desarrollador que se plantee programar sobre esta plataforma, se le proporciona de forma totalmente gratuita un entorno de desarrollo, es decir una SDK que se puede instalar junto con un plugin en uno de los IDEs ms famosos y conocidos como es Eclipse. Adems se integra un emulador en el cual se pueden realizar todo tipo de pruebas sobre el programa elaborado y s stas han salido satisfactorias se puede importar el proyecto elaborado al propio dispositivo mvil.

La principal finalidad que busca Android desde el punto de vista del desarrollador, es que ste pueda sacar de s lo mayor posible de la plataforma, poder controlar y aprovechar cualquier funcionalidad que se proporcione desde el sistema operativo, y que toda aplicacin que se pueda crear sea portable, fcil de desarrollar y reutilizable. Con todo ello, se intenta buscar un estndar para el desarrollo de este tipo de aplicaciones. Por ltimo, cabe destacar la gran facilidad que desde Android se ofrece para poder integrar todo tipo de aplicacin con las aplicaciones Web de Google.

29

3.2

Estructura de Android

El stack de software a grandes rasgos, est formado por: un ncleo de Linux, una serie de libreras escritas en cdigo C/C++,un entorno de ejecucin propio (Android Run Time), un framework de aplicaciones y las propias aplicaciones. A continuacin se puede ver el esqueleto de este sistema operativo, y debajo de la misma se explicarn cada una de las partes que lo conforman.

Figura 12.Estructura del sistema operativo Android La estructura del sistema operativo es la siguiente: El ncleo de Linux: es la capa ms baja situada y es donde se sitan los servicios bsicos, es decir, en esta capa se establecen los drivers del hardware, la gestin de procesos y memoria, la seguridad, y las gestiones de redes y de energa. Todo ello est manejado por un kernel de Linux con versin 2.6, y cuya funcin principal es abstraer a las diferentes capas sucesivas que soporta la estructura de Android del hardware de la mquina. Aparte de las propiedades que puede dar dicho kernel de Linux, tambin hay que decir que precisamente dicho ncleo, incluye diversos drivers lo cual le hace semejante a cualquier otro kernel que corre en un ordenador personal. Por otro lado, este kernel, al ser Linux cumple con las expectativas con las que Android se lanzar bajo licencia Apache.

30

Figura 13.Icono licencia Apache Por encima del ncleo de Android se establecen una serie de libreras escritas en lenguaje C/C++, y al igual que el ncleo, estas libreras son iguales de bsicas. Dentro de las libreras, las ms importantes son las siguientes: o Libc: esta librera incluye todas las cabeceras y funciones segn el estndar de C. o SQLite: es la librera que implementa un motor de base de datos. SQLite es software libre, por lo tanto el cdigo fuente es de dominio pblico. o Surface Manager (Administrador de Superficies): es la que realiza toda la gestin del acceso a los subsistemas de pantallas. Adems es la encargada de gestionar todas aquellas pantallas de las diferentes aplicaciones activas que se encuentren en ese preciso instante. o SSL & WebKit: ambas libreras son las encargadas de integrar un navegador para Internet y de proporcionar seguridad cuando se acceda a sta. o Media: el principal uso de esta librera es para poder reproducir tanto archivos de audio o video, as como los archivos fotogrficos. Cabe destacar que en esta librera se proporcionan los cdecs necesarios para poder reproducir los formatos ms populares. o OpenGL / ES y SGL: la ltima libre, la SGL, es la encargada de proporcionar el motor grfico de 2D. Sin embargo, la OpenGL / ES maneja los grficos 3D en el caso de que el hardware del telfono mvil lo disponga. o FreeType: es la encargada de la renderizacin de fuentes, para mapas de bits y vectores.

31

La siguiente capa, y que se sita en el mismo nivel que la anterior, es el entorno de ejecucin de Android, o la Android Run Time. Android incluye un set de libreras base que proveen la mayor parte de las funcionalidades disponibles en las libreras base del lenguaje de programacin Java. Todas las aplicaciones se programan en Java y para poder ejecutarlas se ha creado especficamente para Android una mquina virtual, la Dalvik Virtual Machine. Lo particular de esta mquina virtual, es que ha sido especialmente optimizada y adaptada para las caractersticas de cualquier telfono mvil. Cada aplicacin Android corre su propio proceso, con su propia instancia en la mquina virtual Dalvik. Esta mquina virtual, ha sido escrita de forma que un dispositivo puede correr mltiples mquinas virtuales de forma eficiente. Dalvik ejecuta archivos en el formato Dalvik Executable (.dex), y no con el bytecode generado por Java, de forma que los .dex estn optimizados para un uso mnimo de la memoria y pensados para procesadores pequeos. Dicha mquina virtual est basada en registros, y ejecuta las clases compiladas por el compilador Java y que se han transformado en el formato .dex por la herramienta dx. Para hacernos una idea real de lo que sucede, y de la eficiencia de esta mquina virtual, se va a explicar un poco como se realiza todo el proceso. Una vez que se genera el bytecode de la aplicacin escrita en Java, es decir, una vez que obtenemos los .class la mquina virtual genera un .dex con toda la agregacin de estos cdigos objeto, por hacer un smil sencillo, un .dex podra asemejarse a un archivo jar.

La penltima capa dentro de la estructura del sistema operativo Android es la del Framework de Aplicaciones. A partir de aqu, las ltimas capas de la plataforma, se sustentan sobre Java. En esta capa se proporcionan todas las clases necesarias para poder crear aplicaciones en Android. Del mismo modo, este framework proporciona un nivel de abstraccin del acceso al hardware y la gestin de la interfaz del usuario y de los recursos de la aplicacin. Los desarrolladores tienen acceso a las mismas APIs que las aplicaciones base, con el nico objetivo de poder reutilizar los componentes utilizados para la aplicacin realizada. En cuanto a las APIs ms conocidas son las siguientes: o Administrador de Telfono: destinada para que el desarrollador pueda interactuar con las funcionalidades del telfono, como son los mensajes SMS, llamadas, o Proveedor de Contenidos: con esta API, se pueden compartir los datos de cualquier aplicacin.

32

o Administrador de Ubicaciones: permite que las aplicaciones obtengan informacin sobre la localizacin y posicionamiento de sta. o Administrador de Actividad: es la API encargada de gestionar el ciclo de vida de las aplicaciones. o Administrador de Ventanas: con ella se pasan a gestionar las ventanas de las aplicaciones. o Vista del Sistema: es con la cual se realiza toda la interfaz de usuario.

La capa de Aplicaciones es la ltima capa del software, en la que se encuentran tanto las aplicaciones nativas provistas por Android como las desarrolladas por terceras partes. Todas ellas, han sido construidas en esta capa y utilizando las mismas APIs y bajo el mismo lenguaje de programacin, Java.

33

3.3

Estructura de una aplicacin Android

A la hora de construir una aplicacin en Android, hay que tener en cuenta que dicha aplicacin puede estar compuesta de un tipo especfico de componente o de la combinacin de ambos. Estos componentes son los que a la postre van a identificar y caracterizar a la aplicacin que se llegue a crear, ya que en funcin de stos la clase que se desarrolle heredar las caractersticas del componente, y por lo tanto pueden existir diferentes formas de comportamiento, en cuanto a la aplicacin se refiere, segn el tipo de componente que se decida a usar. Los diferentes tipos de componentes con los cuales podemos crear aplicaciones en Android son los siguientes: Activity Es el componente ms importante en cualquier aplicacin Android, debido principalmente a que es la capa de presentacin para todo tipo de aplicacin. Cualquier pantalla que se muestre al usuario, ser una extensin de la clase Activity. Y para dicha presentacin se sirve de Views, para poder realizar la interfaz con la cual el usuario podr interactuar. Est clase puede ser equivalente a lo que es un formulario en la arquitectura web. Services Este componente, es totalmente opuesto al anteriormente explicado. La clase Services al contrario que la Activity, no interacta para nada con el usuario, y es completamente invisible a los ojos del usuario. Se puede decir prcticamente, que este componente corre por debajo, en un segundo plano, realizando cualquier tipo de procedimiento que est obligado a realizarse sin la necesidad de que sea visible al usuario. La clase Service por as decirlo, son las clases que se ejecutan en background. Content Provider Los Content Provider, son principalmente utilizados para gestionar y almacenar las bases de datos de la aplicacin. Tambin permiten que cualquier aplicacin almacenen los datos en un fichero o cualquier otro formato. La gran ventaja que presenta este tipo de componente, es que permite a cualquier aplicacin acceder a los datos que estn siendo utilizados por otras aplicaciones a la vez.

34

Intent Un Intent, es un simple mensaje, que se utiliza para determinar el objetivo de la aplicacin, es decir, su propsito. La principal peculiaridad es la forma en la cual los Intent describen la tarea que se va a llevar a cabo y los datos necesarios para realizarla. En ltima estancia, es el sistema el que finalmente decide que k ser el ms indicado para realizar sus acciones. Este componente, est muy ligado al Activity, puesto que las Activities, realizan los cambios de vista o de interfaz por medio de los Intent.

Broadcast Receivers Con esta clase, la aplicacin que se crea, est a la escucha de cualquier Intent proveniente de distintas aplicaciones. Al utilizar este componente, la aplicacin puede empezar automticamente y responder al Intent que est a la escucha. Se puede decir que la aplicacin est a la escucha de un evento para llevar a cabo la accin a la cual est predestinada. Generalmente las aplicaciones que utilizan esta clase, se utilizan para lanzar eventos provenientes de cualquier tipo de Intent. Un claro ejemplo puede ser la gestin de las llamadas entrantes que recibe el dispositivo mvil.

35

3.4

Ciclo de vida de una aplicacin en Android

Los componentes que forman las aplicaciones en Android, tienen bien definido un ciclo de vida de manera que se puede saber en cualquier momento en que estado est la aplicacin para poder gestionar los flujos de sta en funcin de su estado. A la hora de ejecutar una aplicacin en Android, sta se lleva a cabo en su propio proceso, de tal modo que Android es el encargado de gestionar todas las aplicaciones, arrancarlas o pararlas en funcin de los recursos que la aplicacin necesite. Android asla totalmente al usuario del dispositivo de la labor que el sistema operativo est realizando para poder ejecutar la aplicacin que el poseedor del telfono desee. Android ejecutar tantos procesos en funcin de los recursos que tenga disponibles, los cuales pueden estar a la vez formados por ms de una actividad (Activity). A diferencia de otros entornos, las aplicaciones en Android, no tienen el control sobre su propio ciclo de vida. En cambio, los componentes de los que est formada dicha aplicacin estn al tanto de los cambios de estado que sta pueda generar. De modo que durante la ejecucin puede suceder que una actividad pare mientras otra sea lanzada, de tal manera que el proceso es consciente del estado en cual se ha quedado para que en un futuro vuelva a dicho estado cuando el sistema le conceda el mando. El caso ms conocido de ciclo de vida, es el del componente Activity, cuyo diagrama es el siguiente:

Figura 14.Ciclo de vida componente Activity

36

Como se puede observar en la figura anterior, los diferentes estados que conforman el ciclo de vida de una actividad son los siguientes: onCreate: Es el estado en el cual da comienzo el ciclo de vida de la aplicacin. onDestroy: Estado en el que se da por finalizado el ciclo de vida. onStart: Junto con el estado onStop forman el conjunto de estados en los cuales se maneja la actividad desde su comienzo. onStop: Es el estado en el cual permanece la actividad cuando sta no tiene el mando para realizar sus procesos. Es similar al estado onPause. onPause: Similar al estado anteriormente descrito. La actividad permanece en este estado cuando sta no recibe el foco de atencin por parte del sistema. onResume: Al igual que el estado onPause, ambos estados acotan el ciclo de vida de la actividad en funcin del foco de atencin dispensado a la aplicacin.

3.4.1

Prioridad de procesos

Una vez visto el ciclo de vida de una aplicacin en Android, y concretamente cuando una aplicacin se crea, su flujo concluye cuando sta finalice o cuando otra actividad necesite los recursos que la aplicacin est consumiendo. La preferencia por parte de Android a la hora de priorizar determinadas aplicaciones en funcin de otras se debe en gran parte al tipo de componente que lo forma, ya que la importancia de stos una aplicacin puede ser ms prioritaria respecto de otra. A la hora de programar una aplicacin hay que tener en cuenta la prioridad a la cual se la va a asignar puesto que en funcin de la prioridad la aplicacin puede morir durante un proceso de ejecucin importante. La importancia en cuanto a procesos se refiere es la siguiente, de mayor a menor prioridad: 1. Procesos activos. Son los procesos cuya importancia es crtica. Son aquellos que estn albergados en aplicaciones que estn continuamente estableciendo contacto con el usuario, y que generalmente son liquidados en ltima estancia.

37

Este tipo de prioridad corresponde a: Activities que se encuentran en un estado activo y que estn respondiendo continuamente a eventos del usuario. Activities, Services o Broadcast Recivers, que se estn ejecutando cuando reciben un evento. Componentes Services que se ejecutan tras un evento proveniente de una aplicacin que se crea, comienza o se destruye.

2. Procesos visibles. Como su propio nombre indica, son componentes de tipo Activity que son visibles pero no estn al mando. En extraos casos son matadas. 3. Procesos de servicio. Son aquellas aplicaciones cuyo principal componente de aplicacin es un Service, y tienen menor prioridad que un Activity, en gran parte a que este tipo de procesos no estn continuamente interactuando con el usuario y a que son consideradas actividades que transcurren en un segundo plano. Este tipo de procesos no son matados a menos que sean necesarios los recursos de los que dispone. 4. Procesos de segundo plano. A diferencia de los anteriores, son procesos que corren en un segundo plano y que no disponen de ningn servicio. 5. Procesos vacos. Son aquellos procesos que se mantienen en cache para un posterior relanzamiento.

38

3.5

Herramientas para el desarrollo

En este apartado se va a comentar las herramientas y los pasos necesarios para poder desarrollar aplicaciones en Android. Es necesario conocer el sistema operativo as como el procesador sobre el cual se va a instalar el conjunto de herramientas necesarias. Este procedimiento es importante porque a la hora de instalar la SDK de Android, existen una serie de necesidades que no hay que pasar por alto. La SDK de Android es totalmente compatible con los principales sistemas operativos que existen en el mercado, es decir, Windows, Mac y Linux. Eso s, es necesario disponer de un procesador de 32 bit. A continuacin es necesario disponer de una JDK, preferiblemente 1.5 o 1.6 y disponer a su vez del IDE de desarrollo Java Eclipse, necesariamente versin 3.4 o superior. Procedimientos para instalar las herramientas.

3.5.1

Instalar SDK Android

Dentro de este apartado, se indicar como configurar dicha SDK dentro del sistema operativo sobre el cual se instalar. Bien, una vez que hemos cumplido los requisitos del apartado anterior, nos dirigimos al website dedicado para Android: http://developer.android.com/sdk/index.html Y una vez all, nos descargamos la SDK en funcin de nuestro sistema operativo, bien puede ser Windows, Mac o Linux. A continuacin, descomprimimos el archivo en cuestin y teniendo en cuenta la ruta en la cual se ha descomprimido dicho archivo.

El siguiente paso es configurar el path de la SDK como variable de entorno. En el caso de que dispongamos de un sistema operativo Windows, es sencillo puesto que pinchamos botn derecho sobre el icono de MiPC y nos dirigimos a Propiedades->Variables de entorno->Variables del sistema

39

Figura 15. Configuracin de la variable del sistema Y dentro de la opcin de Variables del sistema, nos fijamos en la variable Path y la modificamos, introduciendo la ruta en la cual se encuentra la SDK de Android descomprimida, teniendo en cuenta hasta la carpeta tools.

Figura 16. Configuracin de la SDK como Path del sistema Si por el contrario disponemos de un sistema operativo Linux, slo hace falta ejecutar en la lnea de comandos (en modo administrador) y editar el path en el archivo ~/.bash_proile o ~/.bashrc y a continuacin: Export PATH=${PATH}:<tu-sdk-dir>/tools Concluido el proceso de instalacin de la SDK, se procede a la instalacin del plugin necesario para Eclipse.

40

3.5.2

Instalar plugin en Eclipse

Ahora, el siguiente paso es iniciar Eclipse, para que de este modo podamos incluir el plugin necesario de Android, y as incluir la herramienta ADT (Android Development Tools) la cual permitir crear proyectos de Android, debuggarlos y ejecutarlos. Abierto el IDE Eclipse, en la pestaa Help->Install New Software y en la ventana nueva que aparece, pulsar el botn Add.

De nuevo aparecer una nueva ventana en la cual en los campos Name se pude introducir por ejemplo ADT y en el campo Location la siguiente URL: https://dl-ssl.google.com/android/eclipse/ Y una vez realizado, pulsar el checkbox o el botn Select All y pulsar el botn Next.

Figura 17. Configuracin del plugin de Android en Eclipse I

Figura 18. Configuracin del repositorio ADT

41

Figura 19. Configuracin del plugin de Android en Eclipse II Y a partir de ah comenzar a descargarse el software necesario para comenzar a desarrollar aplicaciones. Por ltimo Eclipse pedir que se reinicie, para poder configurar los cambios realizados.

3.5.3

Completar la instalacin

Tras reiniciar Eclipse, los siguientes pasos a realizar son: 3.5.3.1 Referenciar SDK Para poder crear proyecto, debemos referenciar la SDK en la pestaa Windows>Preferentes->Android->Browse y buscar el path sobre el que se encuentra la SDK.

Figura 20. Configuracin del path de la SDK de Android en Eclipse Y en ltimo lugar pulsar Apply y Ok.

42

3.5.3.2 Configurar emulador AVD y actualizar plugin Para finalizar la configuracin de la SDK en Eclipse, se proceder a la descripcin de la configuracin del emulador y de las posteriores actualizaciones necesarias. A la hora de realizar ambas operaciones se debe pulsar sobre el icono:

Figura 21. Icono Plugin Android en Eclipse Y a continuacin, sobre el campo Virtual Devices pulsar el botn New, y aparecer la siguiente ventana.

Figura 22. Configuracin del emulador de Android En la figura mostrada, es sobre la cual se crear el emulador Android correspondiente, dnde el principal hincapi es en el campo target, puesto que se le asigna la SDK correspondiente.

43

Para finalizar, sobre la primera ventana mostrada tras pulsar el icono anteriormente descrito en la Figura 21, sobre el campo Available Packages, y pulsando el checkbox y posteriormente el botn Install Selected. Comenzar un proceso de actualizacin de la SDK.

Figura 23. Actualizador de versiones

3.5.4

Otras herramientas tiles

Como bien se ha podido apreciar en el apartado anterior la SDK de Android, incluye diversas herramientas y utilidades que permiten al usuario poder crear, testear y analizar las propias aplicaciones. Otra herramienta que aporta la SDK es el emulador. El cual es una propia mquina virtual destinada a ejecutar las aplicaciones de Android, es por ello la manera ms cercana de poder conocer cmo sera un dispositivo mvil con dicho sistema operativo. ste a su vez, dispone de una variedad de posibles maneras de mostrarse como interfaz grfica, es decir, dispone de distintos tamaos de pantalla, resoluciones. Adems de proveer de una buena conexin a Internet, en cuanto a rapidez y latencia respecto a las aplicaciones, y de permitir recibir llamadas y SMS, obviamente simulados. Como aadido a las caractersticas anteriormente habladas, existe una funcionalidad que permite al emulador de Android contactar y realizar operaciones mediante una conexin Telnet. A travs del puerto 5554 se puede entablar todo tipo de rdenes con el emulador.

Tambin existen otro tipo de funcionalidades no menos importantes pero que merecen la pena describirlas.

44

3.5.4.1 Otras funcionalidades del emulador Dentro del emulador, existe la posibilidad de poder utilizar imgenes que puedan simular memorias internas, flash o de otro tipo. Las diferentes tipos de imagen son los siguientes: Imagen de sistema: son el tipo de imagen necesaria para que el emulador pueda arrancar, de modo que slo son de lectura y obtienen informacin sobre la manera de ejecutarse ste. Imagen de runtime: a diferencia de las anteriores, stas permiten escribir adems de la posibilidad de leer de la imagen correspondiente. Y principalmente se utilizan para guardar datos de la sesin, como pueden ser aplicaciones instaladas. Al igual que las imgenes que simulan almacenamientos extrables. Imagen temporal: la caracterstica principal de estas imgenes es que al acabar la ejecucin, es decir, al apagar o cerrar el emulador, se eliminan por completo. Y la utilidad que tienen, es para hacer las labores de cach y para realizar una copia del sistema.

3.5.4.2 Dalvik Debug Monitor Service Aparte del emulador, existen otras herramientas que facilitan la programacin de cualquier aplicacin en Android. De estas herramientas cabe destacar la Dalvik Debug Monitor Service o DDMS. En primera instancia, el emulador, te permite ver qu aspecto presenta la aplicacin, cmo se comporta y poder interactuar con la misma, pero realmente no sabes lo que realmente est pasando dentro. De este modo, la DDMS es una herramienta que permite debutar la aplicacin y conocer en todo momento que est sucediendo dentro de los entresijos de la aplicacin que se est ejecutando. De esta manera, con esta herramienta, se tiene una versin fidedigna de la ejecucin de la aplicacin, porque se pueden acceder a los log, conocer de manera primordial la gestin de recursos, y la simulacin de envo de SMS as como de llamadas entrantes y geolocalizacin.

45

Para poder acceder a esta herramienta basta con pulsar la pestaa Window-> Open Perspectiva-> DDMS. Y aparecer una perspectiva similar a la siguiente imagen.

Figura 24. Imagen DDMS 3.5.4.3 Android Debug Bridge Para finalizar, la Android Debug Bridge o ADB, es una herramienta que mediante una arquitectura cliente servidor permite conectarte desde tu mquina al dispositivo Android. Esta herramienta te permite copiar archivos, instalar aplicaciones o ejecutar comandos para acceder a la shell. Para poder utilizar las utilidades que nos facilita esta herramienta, basta con acceder mediante la lnea de comandos hasta el path en el que se encuentra la SDK, y acceder a la carpeta tools y una vez all, ejecutar los posibles comandos. De entre esos comandos, los ms comunes son los siguientes: adb shell: con este comando se puede acceder al directorio root del terminal y desde ese punto se podrn lanzar diversos comandos contra el dispositivo. Como por ejemplo acceder al sistema para poder borrar las aplicaciones instaladas. adb push [local][remoto]: con este comando se pueden enviar archivos al dispositivo desde nuestra propia mquina.

46

adb pull [remoto][local]: el comando contrario al anterior, con l, nos descargamos archivos desde el dispositivo a la mquina. adb install [path/aplicacion.apk]: con este comando, se permite instalar aplicaciones en el dispositivo, indicndole slo la ruta desde donde se encuentra el paquete compilado de la aplicacin(.apk). adb reboot: comando con el que se reinicia el emulador.

47

Captulo 4 Creacin de una aplicacin Android


En este captulo se explica la forma de crear aplicaciones en el sistema operativo Android. En primer lugar se indicar cmo realizar un programa HolaMundo para familiarizarse un poco con la estructura de un programa en Android. Posteriormente, se proceder a realizar un exhaustivo conocimiento de los principios bsicos de la programacin en Android, as como de su estructura para despus finalizar con la programacin de aplicaciones con mayor dificultad, cuyas componentes grficas son muy avanzadas.

4.1

Hola Mundo

En este apartado se presenta cmo programar en Android mediante la creacin de una aplicacin HolaMundo para que de esta manera se tenga una primera toma de contacto con el nuevo entorno de desarrollo. En primer lugar se explicar cmo crear un nuevo proyecto en Android y posteriormente, como poder crear una pequea interfaz de usuario, para que finalmente poder ejecutar el programa.

4.1.1 Nuevo proyecto Android


A la hora de crear un nuevo proyecto de Android en Eclipse hay que seguir los siguientes pasos: Dentro de Eclipse hay que dirigirse a la pestaa File->New->Android Project. Despus aparecer una pantalla, tal y como se muestra a continuacin

Figura 25. Creacin de un nuevo proyecto Android I

48

Figura 26. Creacin de un nuevo proyecto Android II

En esta figura, se escribir el nombre del proyecto (Project Name), el cual ser HolaMundo. Debajo, en el campo Build Target, se debe seleccionar una SDK (versin) sobre la cual se va a realizar el ejemplo. Y para finalizar, rellenar el campo Application name que es el nombre que aparecer en el telfono mvil como nombre de la aplicacin. El campo Package name el cual indica el paquete sobre el cual residir el programa, y el campo Create Activity, que ser el nombre del Java con el que se empezar a programar. Tras rellenar los campos anteriormente descritos, y pulsando el botn Finish aparecer la estructura jerrquica de carpetas sobre el proyecto HolaMundo. Sobre la carpeta src se encuentra el paquete que se habr descrito anteriormente y en el cual se albergan dos ficheros Java, el primero ser el HolaMundo.java con el que se empezar a poder entender un poco la programacin en Android y el segundo fichero, R.java, el cual es autogenerado por Android y donde se guardan las referencias a las variables utilizadas en el programa.

49

Si se profundiza dentro del primer archivo Java, se podr ver un cdigo similar al que se muestra a continuacin.
package paquete.HolaMundo; import android.app.Activity; import android.os.Bundle; public class HolaMundo extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } }

Cdigo 1. Programa HolaMundo en Android Como se puede observar, la clase HolaMundo hereda de la clase Activity que anteriormente se ha comentado, la principal caracterstica de esta clase es que interacta con el usuario. Para ello habr que crear una interfaz de usuario, pues bien, cuando a la clase HolaMundo la invocan por primera vez, se crear y con ello el conveniente interfaz. Para crear el interfaz, la clase HolaMundo mediante el mtodo setContentView accede al xml main el cual contiene toda la estructura de cmo queda configurada la interfaz del usuario.

Al conocer como se crea la interfaz de usuario, se procede a ver el contenido del archivo main.xml

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> </LinearLayout>

Cdigo 2. Interfaz de usuario del programa HolaMundo

50

Este archivo se encuentra dentro de la carpeta layout dentro de res. Y como se puede contemplar en dicho archivo se indica el layout contenedor de la interfaz, en este caso LinearLayou y el componente grfico que se muestra, que en este caso es un texto TextView. Como se indica, el texto que se muestra aparece referenciado a otro archivo xml strings en el cual aparece el texto que finalmente se mostrara por pantalla al usuario. Que en este caso ser Hello World, HolaMundo! Para terminar, se lanza la ejecucin del programa para poder ver su finalizacin. Para ello se pincha en la pestaa Run->Run Configurations y aparecer una pantalla similar a la que aparece a continuacin.

Figura 27. Configuracin del proyecto Android a ejecutar I Dentro de esta pantalla, en el apartado Android Application se pulsa con el ratn el botn derecho y escoger opcin New, una vez elegida dicha opcin se mostrar la siguiente imagen, desde la cual se debe seleccionar que proyecto Android se desea ejecutar. De tal modo que pulsando en el botn Browse se lanzar una nueva ventana desde donde se podr escoger el proyecto en cuestin. Para este caso HolaMundo.

51

Figura 28. Configuracin del proyecto Android a ejecutar II Configurado el proyecto, solamente queda cerciorarse dentro de la pestaa Target que se ha seleccionado por defecto el emulador previamente configurado. Tras este paso slo queda pulsar el botn Apply y el botn Run y a continuacin se lanzar el emulador.

Figura 29. Ejecucin del programa HolaMundo

52

4.2

Organizacin de una aplicacin Android

Partiendo del ejemplo HolaMundo, se ensea cmo est formada una aplicacin Android por dentro, es decir, la estructura jerrquica de archivos y carpetas de la que lo forman. Aunque no forma parte directa de la programacin de la aplicacin. En primer lugar, se hablar de un archivo xml que es muy importante para el correcto funcionamiento de la misma. Este archivo, el AndroidManifest.xml, sirve para definir la estructura de los componentes que forman la aplicacin as como de lo que hay que realizar en cada momento. A continuacin, se especificar y explicar el resto de carpetas que conforman la totalidad de una aplicacin Android. Las ms significativas son: la src que es donde se guarda el archivo Java fuente y la carpeta res que es donde se almacenan todos los recursos necesarios de la aplicacin.

4.2.1 Android Manifest


Cada proyecto Android, incluye un archivo, AndroidManifest.xml, almacenado en la carpeta raz del proyecto y donde se define: la estructura de los componentes que forman la aplicacin, los permisos que la aplicacin puede tener, las polticas de seguridad y los datos que maneja. Es por ello que dicho archivo, incluye nodos para cada componente de los anteriormente descritos (Activity, Service, Content Provider y Broadcast Receiver) que pueden formar la aplicacin y permisos e Intent Filters con los que se determina cmo interactan cada uno de ellos o con el resto de aplicaciones. En la estructura jerrquica de nodos que forman el archivo AndroidManifest se halla en primer lugar el tag manifest desde donde se indica el paquete en el cual se encuentra la aplicacin Android y las diversas versiones.
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="paquete.HolaMundo" android:versionCode="1" android:versionName="1.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".HolaMundo" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>

Cdigo 3. Archivo AndroidManifest.xml

53

Los distintos tipos de nodos son: 4.2.1.1 Nodo <application> Como se puede ver en el cdigo del archivo AndroidManifest.xml aparece el nodo <application>. Dicho archivo slo podr contener un nodo de aplicacin. Dentro de este nodo, se indican atributos y datos a los que accede, necesarios en la aplicacin como pueden ser el icono, el ttulo y tema.
<application android:icon="@drawable/icon" android:label="@string/app_name"> [. . . nodos de aplicacin . . .] </application>

Cdigo 4. Nodo application Como se indica en la parte de cdigo anteriormente mostrado, dentro de este nodo pueden existir nodos internos en los cuales se indican precisamente los componentes que dan forma a la aplicacin; los diferentes nodos internos que pueden ser son los siguientes:
<activity> nodo requerido por tantas Activities que compongan la

aplicacin. Para referenciar la clase en la cual se desarrolla la totalidad de la ejecucin se realiza mediante el atributo android:name. Al igual que la etiqueta que obtendr la actividad al lanzarse android:label. Dentro de este nodo tambin se incluyen diversos subnodos, en los que se indica que Intent lanza la actividad. o <intent-filter> al igual que en las Activities, este nodo, tambin es aplicado a los componentes Service y Broadcast Reciver. La principal funcionalidad que tiene este nodo, es determinar cundo y dnde se ejecuta la Activity, las acciones que puede soportar y la categora que ostenta dicha actividad. Estas funcionalidades son:
<action>: que indica que accin puede soportar la

actividad.
<category>: especifica sobre qu circunstancias debe ser

lanzada la actividad.
<data>: permite especificar los datos con los que va a

tratar la actividad.

54

<activity android:name=".HolaMundo" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity>

Cdigo 5. Nodo interno activity


<service>: dentro del nodo de aplicacin, nos podemos encontrar

tambin con el nodo interno que indica que la aplicacin pueda tener un componente Service.
<provider>: este nodo es utilizado cada vez que la aplicacin contenga

como componente un Content Provider y que son utilizados para la gestin de acceso a datos, almacenarlos o compartirlos con diferentes aplicaciones.
<reciver>: con este nodo, incluimos el componente Broadcast Receiver y

que se utilizan cuando la aplicacin est a la espera de la llegada de eventos. 4.2.1.2 Nodo <uses-permission> Dentro de este nodo se declaran los permisos necesarios para que la aplicacin pueda funcionar correctamente. Generalmente, estos permisos son requeridos por aquellas aplicaciones cuya funcionalidad depende de servicios que requieran seguridad o recursos o accesos a stos de otra ndole. Un claro ejemplo puede ser que la aplicacin que se quiera lanzar tenga acceso a Internet, por lo que necesita un permiso para utilizar dicho recurso.
<uses-permission android:name="android.permission.INTERNET"> </uses-permission>

Cdigo 6. Nodo uses-permission 4.2.1.3 Nodo <permision> Con el siguiente nodo, se garantiza el acceso restringido a determinados componentes que utilice la aplicacin. 4.2.1.4 Nodo <instrumentation> Dicho nodo provee de una serie de recursos desde la cual se puede probar la funcionalidad de la aplicacin.

55

4.2.2 Carpeta src


Dentro del workspace de la aplicacin aparece una carpeta llamada src, en la cual se alberga todo el cdigo Java fuente que es necesario para arrancar la aplicacin. Aplicndolo al ejemplo del programa HolaMundo, en esta carpeta se encontrar el paquete en el cual se encuentra el HolaMundo.java.

4.2.3 Carpeta res


En esta carpeta se guardan todos aquellos recursos que son utilizados por el proyecto en cuestin. Desde Android, se puede acceder a todo recurso externo bien sea una imagen, un archivo xml, o cualquier otro archivo del cual se hace referencia en el cdigo de la aplicacin. La mayora de los recursos que quedan en un plano exterior al cdigo suelen ser por lo general archivos XML, JPEG, GIF y PNG. Todos y cada uno de ellos han de permanecer en una determinada carpeta para el buen funcionamiento de la aplicacin.

Las diferentes subcarpetas en las que pueden localizarse estos recursos pueden ser: Anim: en esta carpeta se almacena un fichero XML desde el cual se hace referencia a diversas animaciones que se pueden mostrar en la aplicacin. Estas animaciones pueden consistir a su vez de animaciones que pueden rotarse, girarse, etc.. dentro de la aplicacin o de animaciones en las que se muestra una secuencia de frames. Drawable: esta carpeta guarda todas aquellas imgenes que son utilizadas por la aplicacin. Los formatos permitidos son PNG, JPG y GIF. En las ltimas versiones de Android esta carpeta se subdivide en 3 subcarpetas, en funcin de la resolucin de las imgenes empleadas. De forma que dichas subcarpetas corresponden con una resolucin alta, media y baja. Layout: dentro de la carpeta layout, es donde reside el archivo XML desde el cual se define la capa de presentacin para la interfaz de usuario de una Acticity.

56

Values: al igual que en carpetas anteriormente comentadas, dentro de la carpeta values, se almacena un archivo/s XML donde se incluyen las cadenas string, colores, dimensiones o arrays que posteriormente son accedidos en el cdigo. Raw: por ltimo, la carpeta raw que es el lugar donde se sitan todos aquellos recursos que nos son necesarios que sean compilados como en los casos anteriores y que son aadidos sin procesar. Generalmente suelen ser archivos de audio y vdeo.

4.2.4 Carpeta gen


En la carpeta gen, se encontrarn todos los archivos Java generados por Android. En cada proyecto Android, una vez que queda compilado, se genera automticamente un fichero llamado R.java desde el cual se aportan todas las referencias a las variables o recursos empleados en la aplicacin. La principal ventaja que aporta este archivo, es poder utilizar todos los recursos disponibles desde el cdigo. En el cdigo ejemplo del programa HolaMundo, por medio de este archivo que es donde se guardan todas las referencias, la Activity conoce qu elementos son los necesarios para mostrar la interfaz de usuario. En el ejemplo HolaMundo sera de la siguiente manera R.layout.main. Esta configuracin sirve para acceder a variables o todo tipo de recursos.

4.2.5 Carpeta bin


Por ltimo, la carpeta definitiva que se puede encontrar en el workspace, es la carpeta bin. sta es la asignada para almacenar todos aquellos archivos binarios derivados de los archivos fuente. En esta carpeta se guardan todos los .class generados a partir de los archivos fuente Java y se almacena el paquete de la aplicacin compilada, o en simples palabras el cdigo binario de la aplicacin Android apk.

57

4.3

Interfaz de usuario en Android

En el siguiente apartado, se aclarar cmo crear una interfaz de usuario en Android, aparte de conocer los diferentes elementos que la pueden componer y la diferente terminologa que se usa para la creacin de la interfaz. A la hora de crear una aplicacin en Android, sta debe utilizar un componente Activity para simbolizar una ventana o pantalla con la que el usuario pueda establecer de alguna manera contacto con la aplicacin. Ahora bien, para poder mostrar la interfaz al usuario, se debe asignar una View o un layout a esa actividad para que de esta forma se le muestre algo al usuario. Esta asignacin es la que se realiza cuando en el mtodo setContentView()se le asigna el fichero XML que se encuentra dentro de la carpeta de recursos ( res) en la subcarpeta (layout).

A continuacin se expondrn las clases View y ViewGroup necesarias para construir una interfaz de usuario en Android y los diferentes elementos que forman a su vez la interfaz.

4.3.1 View
La clase View es la unidad bsica donde se construye la interfaz de usuario y donde se forman todos aquellos elementos visuales que el usuario tiene sobre una aplicacin en Android. En relacin con lo descrito, todo componente visual en Android hereda de la clase View tambin llamadosViews.

View

ViewGroup

Control

Layout

Widget Figura 30. Estructura jerrquica de la clase View

En la figura anterior se puede comprobar dicha jerarqua que se forma en torno a la clase View.

58

De los elementos que descienden de View se expondrn los Widgets, ViewGroup y otros que forman parte de la interfaz de usuario pero que por ello no son menos importantes.

4.3.1.1 Widgets Se comentar los diferentes Widgets ms habituales en la programacin de una interfaz de usuario y la forma en la cual se pueden crear y aadir a la interfaz. Los principales Widgets son:
TextView: es la forma ms simple de mostrar un texto por pantalla.

A partir del ejemplo HolaMundo, se puede ver como se puede crear un TextView. Si se abre el archivo, main.xml que se encuentra en la carpeta res/layout , aparecer el siguiente cdigo.
<TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" />

Cdigo 7. Creacin de un elemento TextView En el correspondiente cdigo, se puede ver como se forma el respectivo texto, en el que hay que destacar diversos aspectos que son comunes a todos los Views.

Cuando en el cdigo aparecen las lneas layout_width y layout_height se quiere indicar la altura y anchura que va a tener sendo Widget. El valor que puede tomar tanto la anchura como la altura del elemento puede ser o fill_parent o wrap_content; en el primer caso se desea que el elemento integrado ocupe el mximo posible y para el segundo caso, que ocupe el mnimo exigido.

Adems de estas funcionalidades, se puede establecer el texto que se quiere mostrar, bien haciendo referencia de ste al archivo XML de la carpeta values, en donde el campo hello contiene la cadena de texto que se mostrar por pantalla, o bien escribiendo el texto a mostrar en el campo text.

59

EditText: con este widget se puede crear una caja de texto.

El siguiente cdigo muestra como poder crear una caja de texto o


Editext.

<EditText android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="caja de texto" />

Cdigo 8. Creacin de un elemento EditText La parte visual de la misma sera la siguiente:

Figura 31. Salida por pantalla de un elemento EditText

ListView: Con este elemento, se puede crear y gestionar diferentes

Views mostrndolos por pantalla como en una lista. En el ejemplo de un componente ListView expone el valor del texto de un array de EditText. La siguiente parte de cdigo muestra la parte desarrollada en el archivo main.xml .
<ListView android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/list" />

Cdigo 9. Creacin de un elemento ListView Para que se pueda utilizar cualquier elemento de la interfaz dentro del cdigo Java, lo necesario es hacer referencia de ste, para ello se utiliza el campo id, y el nombre de la variable con el cual hacer dicha referencia, en este caso list.

60

En el siguiente cdigo Java se comprueba cmo se guarda el valor introducido en la caja de texto y que se almacena como un elemento del ListView.

public class EjemploLW extends Activity { private private private private EditText editText; ListView lw; ArrayList<String> items; ArrayAdapter<String> aa;

/** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); editText=(EditText)findViewById(R.id.editText); lw=(ListView)findViewById(R.id.list); items=new ArrayList<String>(); aa=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1 , items); lw.setAdapter(aa); editText.setOnKeyListener(new View.OnKeyListener() { public boolean onKey(View v, int keyCode, KeyEvent event) { boolean valor=false; if(event.getAction()== KeyEvent.ACTION_DOWN){ if(keyCode== KeyEvent.KEYCODE_DPAD_CENTER){ items.add(0,editText.getText().toString()); aa.notifyDataSetChanged(); editText.setText(""); valor=true; } } return valor; } }); } }

Cdigo 10. Construccin de un elemento ListView

61

En la siguiente imagen se puede apreciar cmo funciona un componente ListView.

Figura 32. Visualizacin de un elemento ListView

Spinner: este elemento es el smil a un combobox.

La parte correspondiente al cdigo que se forma en el main.xml es el correspondiente.


<Spinner android:id="@+id/combo1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:prompt="@string/combo" android:duplicateParentState="true" />

Cdigo 11. Creacin de un elemento Spinner En el cdigo anterior, se hace referencia en el campo prompt a una cadena que se encuentra referenciada en el archivo strings.xml de la carpeta values. Es ah donde se escribe en la variable combo la cadena de texto que hace las veces de ttulo del Spinner.

62

Adems del archivo strings.xml, la carpeta values deber contener otro archivo XML desde el cual se configuran todos los elementos o tems que forman el combo. El contenido de dicho archivo, concretamente el arrays.xml es el siguiente.

<resources> <string-array name="combo"> <item>Esto</item> <item>es</item> <item>un</item> <item>combo</item> </string-array> </resources>

Cdigo 12. Composicin de elementos de un Spinner

Este archivo arrays.xml es el que se hace falta desde el cdigo Java para incluirlo en el combo o Spinner. En el siguiente cdigo Java se muestra dicha inclusin.
public class EjemploCombo extends Activity { private Spinner combo1; private ArrayAdapter adapter1; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); combo1=(Spinner)findViewById(R.id.combo1); adapter1=ArrayAdapter.createFromResource(this, R.array.combo, android.R.layout.simple_spinner_item); adapter1.setDropDownViewResource(android.R.layout.simple_spinn er_dropdown_item); combo1.setAdapter(adapter1); } }

Cdigo 13. Clase Java de creacin de elemento Spinner Como se puede apreciar en el cdigo, al Spinner creado, se le asigna un ArrayAdapter, que incluye la referencia del contenido del archivo arrays.xml mediante la referencia R.array.combo.

63

La imagen final que tiene dicho combo es la siguiente:

Figura 33. Ejecucin de elemento Spinner I

Figura 34. Ejecucin de elemento Spinner II

64

Button: es el widget con el cual se crean botones.

El cdigo necesario para crear un botn es el siguiente.


<Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Botn" />

Cdigo 14. Creacin elemento Button La imagen de un botn estndar sera la siguiente:

Figura 35. Ejecucin elemento Button


CheckBox: es un botn especial que tiene doble estado, que indica si est

o no chequeado. El cdigo necesario en el archivo main.xml es el siguiente.


<CheckBox android:layout_width="wrap_content" android:layout_height="wrap_content" android:checked="true" />

Cdigo 15. Creacin elemento CheckBox Lo ms destacable es el valor del campo checked cuyo valor es verdadero o falso.

Figura 36. Ejecucin elemento Checkbox


RadioButton: otro tipo especial de botn.

<RadioButton android:layout_width="fill_parent" android:layout_height="fill_parent" android:checked="true" />

Cdigo 16. Creacin elemento RadioButton La imagen que se obtendra ser la siguiente:

Figura 37. Ejecucin elemento RadioButton

65

4.3.2 View Groups


La clase View Groups es una extensin de la clase View en la que se pueden incluir mltiples Views. Por as decirlo cada View Group es un contenedor de diversas View.

Figura 38. Jerarqua ViewGroup En cada View Group se encargan de asignar el espacio del que disponen para cedrselo a las Views que lo componen. Esta concesin puede ocupar todo el espacio disponible o tan slo el tamao mnimo permitido. Un claro ejemplo de ViewGroup, son los Layout Managers, que son a su vez una extensin de la primera clase mencionada y que son designados para controlar las posicin de los diversos Views que forman la interfaz. Los principales Layouts son los siguientes:
FrameLayout: es el ms sencillo de los Layout Managers. La peculiaridad

que tiene es que se aaden cada View desde la esquina superior izquierda y superponindose el ltimo View encima del anterior. A continuacin se expone un ejemplo de FrameLayout donde se mostrar el contenido del archivo main.xml que ha definido la interfaz de usuario que est formada por tres botones. Despus se proceder a la vista de la posterior ejecucin en la cual se puede comprobar la superposicin de los diversos elementos.

66

<?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <Button android:layout_width="fill_parent" android:layout_height="fill_parent" android:text="Boton" /> <Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Boton2" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Boton3" /> </FrameLayout>

Cdigo 17. Composicin de un elemento layout FrameLayout

Figura 39. Ejecucin elemento FrameLayout

67

LinearLayout: con este tipo de Layout, se aaden los diferentes Views

ordenados de forma seguida y en lnea y pueden estar en vertical u en horizontal. En el primer caso los Views se almacenan uno encima del otro en forma de filas, mientras que en el segundo caso, se van disponiendo en columnas. La ejecucin de este Layout teniendo en cuenta la orientacin vertical sera la siguiente:

Figura 40. Ejecucin elemento LinearLayout I

La ejecucin de este Layout teniendo en cuenta la orientacin horizontal sera la siguiente:

Figura 41. Ejecucin elemento LinearLayout II

68

RelativeLayout: Con este Layout, se permiten agregar elementos

respecto a uno previo. Cuando se quiere introducir un nuevo View en el Layout se posiciona en funcin de otro View. En el siguiente cdigo se puede apreciar como varios de los elementos estn dispuestos en funcin de otros.
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/layout" android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="center" > <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="1" android:id="@+id/boton1" android:layout_alignTop="@+id/layout" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="2" android:id="@+id/boton2" android:layout_toRightOf="@+id/boton1" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="3" android:id="@+id/boton3" android:layout_below="@+id/boton1" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="4" android:layout_below="@+id/boton1" android:layout_toRightOf="@+id/boton3" /> </RelativeLayout>

Cdigo 18. Creacin de un elemento layout RelativeLayout

69

La vista final del mismo sera:

Figura 42. Ejecucin del elemento RelativeLayout

TableLayout: para poder aadir los diferentes Views que lo componen,

se realiza en forma de filas y columnas. Dicha disposicin en filas se puede observar en el siguiente cdigo:
<?xml version="1.0" encoding="utf-8"?> <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TableRow > <TextView android:text="Primera Fila" android:width="100px" /> <EditText/> </TableRow> <TableRow > <TextView android:text="Segunda Fila" android:width="100px" /> <EditText/> </TableRow> <TableRow> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Boton1" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Boton2" /> </TableRow> </TableLayout>

Cdigo 19. Creacin de un elemento TableLayout

70

La ejecucin del mismo sera la siguiente:

Figura 43. Ejecucin del elemento TableLayout

AbsoluteLayout: por ltimo, con este Layout se aaden los sucesivos elementos utilizan coordenadas X e Y En el cdigo siguiente se muestra como quedara conformado este Layout.

<?xml version="1.0" encoding="utf-8"?> <AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" > <Button android:text="Boton1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_x="100px" android:layout_y="12px" /> <EditText android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_x="12px" android:layout_y="100px" /> <Button android:text="Boton2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_x="300px" android:layout_y="40px" /> </AbsoluteLayout>

Cdigo 20. Creacin del elemento AbsoluteLayout

71

La vista final del mismo, sera la que se muestra a continuacin:

Figura 44. Ejecucin del elemento AbsoluteLayout

4.3.3 Otros elementos de la interfaz


En este punto se dar a conocer otro tipo de elementos que sirven de gran ayuda para la elaboracin de la perspectiva del usuario de una aplicacin en Android. De los diferentes elementos anexos a los que anteriormente se han visto, destacan principalmente el uso de mens y los mensajes de alerta. Estos elementos facilitan en gran medida la relacin que se establece entre usuario y aplicacin. 4.3.3.1 Menu La Interfaz Menu ofrece una manera de exponer determinadas funciones de la aplicacin sin necesidad de alterar la interfaz creada en la pantalla. Cada Activity puede especificar su propio Menu que es desplegado cuando se pulsa la tecla o botn men. Para la creacin de un Menu basta con sobrescribir el mtodo onCreateOptionsMenu, ste recibe un objeto Menu como parmetro, con el que se puede trabajar hasta que se invoque otra vez el mismo mtodo.

72

public boolean onCreateOptionsMenu(Menu menu) { boolean result = super.onCreateOptionsMenu(menu); return result; }

Cdigo 21. Mtodo de creacin de un Men Una vez recibida la instancia del Menu, es con ella con la cual se trabaja para crear los diferentes elementos que conforman el men. De tal modo que con el mtodo add se crean los diferentes tems que lo componen. A la hora de crear un tem del men, se le debe especificar: 1. El grupo al que pertenece dicho elemento, es decir, pueden existir diferentes tems que quedan agrupados de esta forma. 2. El identificador unvoco que recibe ese elemento. La labor de identificacin es importante, debido a que cuando los diferentes tems son manejados o gestionados a travs del mtodo onOptionsItemSelected y para conocer que elemento del men ha sido pulsado, se realiza mediante este identificador. Por convencin, la declaracin de los identificadores de los elementos de un men se realizan como si fueran variables estticas dentro de la Activity. Para ello se utiliza la constante Menu.FIRST a la cual se le incrementa en uno el valor por cada elemento que componga dicho men. 3. El orden en el cual los diversos tems son desplegados. 4. El texto que aparece dentro de cada elemento que conforma el men. Adems cada tem o elemento puede incluir diversas funcionalidades, que pueden ser las siguientes:
Checkbox / RadioButtons: este tipo de opcin slo est disponible y

visible en mens que se pueden expandir o en los submens. En los CheckBox es controlado mediante el mtodo setChecked, el cual previamente se le ha inicializado con el mtodo setCheckeable. Y en cuanto los RadioButtons, se puede asignar a un grupo de tems dentro de los cuales slo uno podr ser pulsado. Este control se realiza mediante el mtodo setGroupCheckeable.
Shortcut Keys: utilizando el mtodo setShortcut, asignamos a un

tem la posibilidad de acceder al mismo mediante un procedimiento abreviado de teclas.

73

Condensed Titles: esta opcin no es visible tanto en los mens que se

pueden expandir como en los submens, y la principal funcin que se lleva a cabo, es asignar un ttulo a un tem.
Icons: si se quiere asociar a un tem un icono, con el mtodo setIcon,

se le asigna una imagen a ese elemento. Esta opcin slo es disponible en los mens de iconos.
Menu Item Clic Listener: con el mtodo setOnMenuItemClickListener, se maneja el tem seleccionado del

men, y realizar las tareas que se crean oportunas. Esta opcin es vlida, siempre y cuando ese mismo tem no sea manejado desde el mtodo onOptionsItemSelected.
Intent: un nuevo Intent se lanza cuando se pulsa el elemento que usa el

mtodo setIntent, con ste mtodo, se puede pasar de la clase actual a otra clase Java. Para que pueda llevarse a cabo este procedimiento el elemento no debe implementar los mtodos anteriormente descritos en el punto anterior, es decir, el onOptionsItemSelected y el setOnMenuItemClickListener.

Existen tres tipos diferentes de mens: Icon Menu: es el men de iconos, ste aparece cuando se pulsa el botn men. Una vez que se pulsa dicha tecla, se despliega un men que contiene como mucho hasta seis elementos, ya que ante un mayor nmero de tems se convierte a partir del sexto elemento en un men de que se expande. Este tipo de men no soporta ni Checkbox, ni RadioButtons, ni Shortcut pero sin embargo si permite Iconos. Expanded Menu: es un men que se expande. ste se lanza cuando en el tipo anterior de men existen ms elementos de los soportados. El men de expansin, permite los Checkbox, RadioButtons y los Shortcut pero sin embargo no permite Iconos. SubMenus: como su propio nombre indica, es un submen que se despliega al ser pulsado algn tem.

74

Para verlo con mayor nitidez, se muestra el consiguiente cdigo Java en el cual se muestra el proceso de creacin de los diferentes tipos de mens disponibles, as como de las funcionalidades que pueden tener los elementos que lo componen.
public class EjemploMenu extends Activity { private LinearLayout layout; static static static static static static static static static static final final final final final final final final final final private private private private private private private private private private int int int int int int int int int int OPCION_1= Menu.FIRST; OPCION_2= Menu.FIRST+1; OPCION_3= Menu.FIRST+2; OPCION_SALIR= Menu.FIRST +3; OPCION_4= Menu.FIRST+4; OPCION_5= Menu.FIRST+5; OPCION_6= Menu.FIRST+6; OPCION_7= Menu.FIRST+7; OPCION_8= Menu.FIRST+8; OPCION_9= Menu.FIRST+9;

//Agrupar los items del menu que tendrn radioButtons static final private int GRUPO_BOTONES=1; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); layout=(LinearLayout)findViewById(R.id.layout); }

Y la

Cod public void onDestroy(Bundle savedInstance){ super.onDestroy(); finish(); } interfaz con los diferentes tipos de mens
boolean valor=false; switch(item.getItemId()){ case OPCION_1: valor=true; break; case OPCION_3: valor=true; break; case OPCION_4: valor=true; break; case OPCION_5: valor=true; break; case OPCION_6: valor=true; break; case OPCION_7: valor=true; break; case OPCION_SALIR: finish(); valor=true; break; } return valor; }

sera la siguiente:

public boolean onOptionsItemSelected(MenuItem item){

75

public boolean onCreateOptionsMenu(Menu menu) { boolean result = super.onCreateOptionsMenu(menu); menu.add(0,OPCION_1, 0,R.string.menu1).setIcon(android.R.drawable.ic_menu_info_details); menu.add(0,OPCION_2, 0,R.string.menu2); SubMenu submenu =menu.addSubMenu(0, OPCION_3, 0, R.string.menu3); submenu.add("Item 1"); submenu.add("Item 2").setOnMenuItemClickListener(new OnMenuItemClickListener(){ public boolean onMenuItemClick(MenuItem item) { Random r=new Random(); int valor=r.nextInt(); layout.setBackgroundColor(valor); return false; } }); submenu.add("Item 3"); //Aadir ttulo de otra forma menu.add(0,OPCION_4, 0,"").setTitleCondensed("CUARTO ITEM"); menu.add(0,OPCION_SALIR, 0,R.string.menuSalir).setIcon(android.R.drawable.ic_delete); menu.add(0,OPCION_5, 0,R.string.menu5); //Menu con CheckBox menu.add(0,OPCION_6, 0,R.string.menu6).setCheckable(true); //Menu con RadioButtons y chequear el grupo de radioButtons menu.add(GRUPO_BOTONES,OPCION_7, 0,R.string.menu7); menu.setGroupCheckable(GRUPO_BOTONES, true, true); //A la eschucha menu.add(0,OPCION_8, 0,R.string.menu8).setIntent(new Intent(this, EjemploMenu3.class)); //Acceder por mtodo abreviado menu.add(0,OPCION_9, 0,R.string.menu9).setShortcut('0', 'a').setIntent(new Intent(this,EjemploMenu2.class)); return result; }

Cdigo 22. Creacin de los diferentes tipos de Mens

76

Y la interfaz con los diferentes tipos de mens sera la siguiente:

Figura 45. Ejecucin de un Men de tipo Icono

Figura 46. Ejecucin de un Men de tipo Expansin

Figura 47. Ejecucin de un Men de tipo Submen

77

4.3.3.2 Dialogs Los Dialogs, son cajas o ventanas que son utilizadas para ayudar a los usuarios, responder a preguntas formuladas, realizar alguna seleccin, confirmar acciones o mostrar mensajes de alerta o de error. La principal caracterstica de los Dialog, es una ventana flotante dejando a la Activity como en un segundo plano en cuanto a perspectiva visual.

Los principales ejemplos de Dialog son: AlertDialog: es la opcin ms verstil de los Dialog, la cual ofrece diversas opciones: o Muestra un mensaje al usuario, y permite al usuario que pueda escoger tres opciones, Ok, Cancel, S o No. o Permite CheckButtons o RadioButtons. o Se puede introducir InputText. ProgressDialog: dentro de la ventana lanzada se muestra una barra de progreso.

Para mejor entendimiento de ambos Dialog se muestra el siguiente cdigo Java.


public class EjemploDialog extends Activity { private Button botonAlerta; private Button botonProgreso; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main);

Cod

A simplebotonAlerta=(Button)findViewById(R.id. vista dichos Dialog seran vistos de la siguiente forma: boton );


botonProgreso=(Button)findViewById(R.id.boton2); botonAlerta.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { mostrarDialogo(); } }); botonProgreso.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { mostrarDialogo2(); } }); }

78

public void mostrarDialogo(){ AlertDialog.Builder dialogoalerta=new AlertDialog.Builder(EjemploDialog.this); dialogoalerta.setTitle("Dialogo de Alerta").setMessage("Esto es un dialogo de alerta. Que desea hacer???"); dialogoalerta.setPositiveButton("Ok",new OnClickListener(){ public void onClick(DialogInterface arg0, int arg1) { //nada } }); dialogoalerta.setNegativeButton("Salir",new OnClickListener(){ public void onClick(DialogInterface arg0, int arg1) { EjemploDialog.this.finish(); } }); dialogoalerta.show(); } public void mostrarDialogo2(){ ProgressDialog dialogoprogreso=ProgressDialog.show(EjemploDialog.this,"Dialogo de Progreso","En progreso...",true); dialogoprogreso.setCancelable(true); } }

Cdigo 23. Creacin de los diferentes tipos de Dialogs A simple vista dichos Dialog seran vistos de la siguiente forma:

Figuras 48 y 49. Ejecucin de los dilogos de Alerta y de Progreso

79

4.4

Uso de Intents para lanzar nuevas Activities

Es lgico que al ejecutar una aplicacin en Android en la cual se interacte con el usuario, la aplicacin no permanezca esttica y ofrezca dinamismo en funcin de las peticiones propuestas por el cliente. En apartados anteriores se ha dicho que el componente bsico en una aplicacin Android en la cual est involucrado el usuario es la clase Activity. En cierta manera las Activities estn expuestas a las necesidades o peticiones del usuario de modo que cuando stas reciban algn evento deban alterar algn componente del Layout, de tal forma, que la Activity inicial pasa a ser otra Activity. Para poder redirigir el flujo de la aplicacin de una Activity a otra, se hace uso de los Intents. A travs de ellos se indica qu Activity lanzar, de tal manera que, si se quiere mostrar diferentes pantallas, se debern implantar tantos Intents como pantallas se deseen. Para utilizar diversas pantallas o Activities se debern crear los correspondientes Intents. Para que se lance una nueva actividad en el Intent debe quedar reflejado la clase Java en la que se encuentra ahora el flujo y la clase Java a la que se redirige el mismo. Adems para que se lleve a cabo dicho proceso se debe ejecutar el mtodo startActivity indicando el Intent en concreto. En el siguiente cdigo puede verse como realizar dicho proceso:

public class Ejemplo extends Activity { private Intent intent=new Intent(); /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main2); intent.setClass(Ejemplo.this,EjemploIntet.class); startActivity(intent); } }

Cdigo 24. Creacin de un componente Intent

80

Aparte de mostrarlo en el cdigo Java, dicho cambio de testigo entre una Activity y otra tiene que quedar reflejado en el archivo AndroidManifest.xml desde el cual se indica el Intent invocado. Dicha modificacin es la siguiente:
<application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".EjemploIntet" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> <activity android:name=".Ejemplo" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> </intent-filter> </activity> </application>

Cdigo 25. Configuracin del componente Intent Como se puede observar existen dos nodos <activity> puesto que se realiza el cambio de Activity.

4.4.1 Paso de parmetros y resultados


Aparte de la necesidad de hacer dinmica la vista que tiene el usuario de la aplicacin, tambin puede ser necesario el paso de parmetros a travs de las distintas Activities o que la Activity a la cual se ha redirigido devuelva algn tipo de valor. Para poder pasar parmetros a otra Activity, el Intent nuevo que se crea, deber pasar dicho valor en una variable que despus ser tomada por la nueva Activity. Este caso puede ser similar a los datos que se pasan por contexto en las arquitecturas web. En el ejemplo, se pasa el valor de una cadena de texto que introduzca el usuario.
intent.setClass(EjemploBundle.this,EjemploBundle2.class); intent.putExtra("id", texto1.getText().toString()); startActivity(intent);

Cdigo 26. Paso de parmetros a travs de un componente Intent

81

A la hora de recogerlos, mediante el mismo mtodo o prcticamente similar, la nueva Activity recoge los parmetros recibidos por la peticin, y para acceder al valor de dicho parmetro, se accede mediante la variable pasada en dicha peticin.
bundle=getIntent().getExtras(); texto.setText(bundle.getString("id"));

Cdigo 27. Recogida de parmetros a travs de un componente Intent El ejemplo visual de cmo se pasan dichos parmetros a la vez de cmo se realiza el cambio de flujo entre una Activity a otra sera el siguiente:

Figuras 50 y 51. Ejecucin de un componente Intent Si por lo contrario, se desea que la Activity a la cual se invoca, en vez de pasarle parmetros devuelva algn tipo de valor, en vez de llamar al mtodo startActivity, se deber llamar al mtodo startActivityForResult el cual a diferencia del anterior mtodo pasar adems del Intent creado, la variable en la cual la otra Activity guardar el valor devuelto. Si el valor devuelto es algn dato especfico mediante este mtodo es el apropiado, ya que se guarda en dicha variable el valor necesitado, aparte, para tratar dicho valor devuelto, se realizar en el mtodo onActivityResult. Pero si slo se necesita saber el valor de cmo ha finalizado la Activity el mtodo indicado es el setResult.

82

4.5 Creacin de BBDD


Para la creacin de BBDD, Android soporta BBDD Sqlite y proporciona todo tipo de funciones de control que pueden permitir almacenar datos por muy complejos que sean en forma de objeto. Como ejemplo de accesos a BBDD se ha realizado como ejemplo un bloc de notas. A la hora de crear un programa en el cual existe acceso y toda la gestin que conlleve, la creacin, actualizacin o borrado de una BBDD, se ha de crear una clase la cual herede de SQLiteOpenHelper. Es en esta clase donde residirn los mtodos de creacin y actualizacin. Ahora bien dentro de dicha clase existir un mtodo onCreate que es donde se realiza la creacin de la base de datos. En dicho mtodo, se ejecuta la sentencia SQL para poder crear la base de datos. El cdigo en el cual se lleva a cabo esa operacin es el siguiente:
@Override public void onCreate(SQLiteDatabase db) { Cod db.execSQL(DATABASE_CREATE); }

Cdigo 28. Mtodo de creacin de un BBDD en Android Siendo la sentencia SQL la siguiente:
private static final String DATABASE_CREATE = "create table notes (_id integer primary key autoincrement, " + "title text not null, body text not null);";

Cdigo 29. Sentencia de creacin de la BBDD Creada la base de datos, existe un manejador desde el cual se puede tener acceso a los datos y utilizar los correspondientes mtodos de alta, baja y actualizacin de ellos. Adems se debe utilizar dicho manejador para poder cerrar la base de datos en cuanto sta deje de utilizarse. En el caso de abrir la base de datos y que sta no se pueda abrir, se crea y si an as no se puede, se lanza una excepcin.
private DatabaseHelper mDbHelper; private SQLiteDatabase mDb; public NotasDbAdapter open() throws SQLException { mDbHelper = new DatabaseHelper(mCtx); mDb = mDbHelper.getWritableDatabase(); return this; } public void close() { mDbHelper.close(); }

Cdigo 30. Mtodos de apertura y cierre de la BBDD

83

De acuerdo con lo comentado, ahora se podrn utilizar los mtodos con los que podemos utilizar los datos, bien sean para lectura, escritura o eliminacin. Para poder crear una nota, se ha utilizado la clase ContentValues, con la cual aadimos todo el texto insertado en la caja de texto y lo introducimos en la base de datos.

public long createNote(String title, String body) { ContentValues initialValues = new ContentValues(); initialValues.put(KEY_TITLE, title); initialValues.put(KEY_BODY, body); return mDb.insert(DATABASE_TABLE, null, initialValues); }

Cdigo 31. Mtodo de creacin de una nueva tupla

Si se desea actualizar una nota ya creada, el correspondiente mtodo es el siguiente:

public bolean updateNote(long 84owed, String title, String body) { ContentValues args = new ContentValues(); args.put(KEY_TITLE, title); args.put(KEY_BODY, body); return mDb.update(DATABASE_TABLE, args, KEY_ROWID + = + 84owed, null) > 0; }

Cdigo 32. Mtodo de actualizacin de la BBDD

Del mismo modo, si lo que se desea es eliminar una nota, el mtodo para realizar esta operacin es:
public boolean deleteNote(long rowId) { return mDb.delete(DATABASE_TABLE, KEY_ROWID + "=" + rowId, null) > 0; }

Cdigo 33. Mtodo de borrado de un elemento de la BBDD

84

Obviamente para poder realizar ambos mtodos, es decir, poder insertar y poder borrar alguna nota; previamente se debe saber en concreto sobre qu nota realizar dichas operaciones. Para ello se utiliza un mtodo que nos devuelve el cursor a la nota seleccionada.
public Cursor fetchNote(long rowId) throws SQLException { Cursor mCursor =mDb.query(true, DATABASE_TABLE, new String[] {KEY_ROWID,KEY_TITLE, KEY_BODY}, KEY_ROWID + "=" + rowId, null, null, null, null, null); if (mCursor != null) { mCursor.moveToFirst(); } return mCursor; }

Cdigo 34. Mtodo para obtener el cursor de la BBDD Otro dato a tener en cuenta cuando se crean bases de datos en Android, es que cualquier base de datos creada para una aplicacin, es accedida por todas las clases que conforman la totalidad de la aplicacin, sin embargo las clases que permanezcan fuera no lo podrn hacer.

85

4.6

Aplicaciones multimedia

Una de las mltiples razones por las cuales los telfonos mviles han tenido especial repercusin en la actualidad ha sido el poder reproducir contenidos multimedia. Adems, esta utilidad puede ser gran detonante a la hora de reproducir determinados contenidos, factor que es especialmente considerado por los consumidores puesto que pueden decantarse por un dispositivo u otro. Desde Android, se aporta una serie de libreras que permiten la reproduccin o grabacin de contenidos de video o audio, sobre una amplia gama de formatos multimedia, tanto en local como en streaming. Los principales formatos soportados son los siguientes: JPEG PNG OGG Mpeg 4 3GPP MP3 Bitmap

Para poder reproducir dichos contenidos, la clase destinada a realizar dichas labores es MediaPlayer, con la que se pueden reproducir recursos locales o recursos por medio de una URL.

4.6.1 Reproduccin de archivos locales


En este apartado se va a mostrar cmo por medio de la clase MediaPlayer, se puede reproducir un archivo local. En este caso se va a reproducir un archivo de audio. En primer lugar, para poder reproducir un archivo de cualquier formato en local, se ha de crear la carpeta res/raw desde la cual se reproducir el archivo contenido en dicha carpeta. A continuacin, una vez que se ha creado dicha carpeta lo nico que queda es reproducir el archivo contenido en ella. Para poder hacerlo, la clase MediaPlayer proporciona los mtodos start, pause y stop.

86

El cdigo que se muestra debajo refleja cmo se reproduce este tipo de archivos.
public void onClick(View v){ long t=0; if(v.equals(bplay)){ if(mp==null){ estado.setText(R.string.estado1); mp=MediaPlayer.create(Ejemplo3.this, R.raw.personal); mp.start(); pb.setVisibility(ProgressBar.VISIBLE); pb.setProgress(0); pb.setMax(mp.getDuration()); new Thread(this).start(); cr.start(); cr.setBase(SystemClock.elapsedRealtime()); }else if(mp!=null && !mp.isPlaying()){ estado.setText(R.string.estado1); this.notify(); cr.start(); cr.setBase(SystemClock.elapsedRealtime()-t); mp.start(); }else if(mp.isPlaying())return; }else if(v.equals(bpause)){ if(mp!=null){ estado.setText(R.string.estado3); mp.pause(); cr.stop(); t=SystemClock.elapsedRealtime()-cr.getBase(); try{ this.wait(); }catch(Exception e){ e.printStackTrace(); System.out.println(e); } }else{ return; } }else if(v.equals(bstop)){ if(mp!=null) { estado.setText(R.string.estado2); mp.stop(); mp=null; pb.setVisibility(ProgressBar.GONE); cr.stop(); cr.setBase(SystemClock.elapsedRealtime()); }else{ return; } } }

Cdigo 35. Diferentes mtodos de reproduccin de archivos

87

La vista que puede tener una reproduccin de audio es la siguiente:

Figura 52. Ejecucin de un archivo de msica

4.6.2 Reproduccin de archivos remotos


Dentro de este apartado, se va a describir como reproducir un archivo mediante una URL. Para ello se ha utilizado la reproduccin de un archivo de vdeo mediante streaming. La principal diferencia que se encuentra es que ahora, en vez de reproducir archivos de la carpeta res/raw, se reproducen mediante una URL. Tambin otra diferencia es que para poder reproducir archivos remotos, la clase MediaPlayer facilita un mtodo para poder reproducir mediante este procedimiento en vez del mtodo start, dicho mtodo es el setDataSourse.
MediaPlayer mp = new MediaPlayer(); mp.setDataSource(PATH_TO_FILE); mp.prepare(); mp.start();

Cdigo 36. Mtodos de reproduccin remota Existe otra posibilidad de reproducir dichos archivos sin necesidad de utilizar la clase MediaPlayer. En Android existe un componente View llamado VideoView con el cual se pueden reproducir dichos archivos. En el siguiente cdigo, se puede ver como se utiliza dicho View.
mVideoView.setVideoPath(getDataSource(path)); mVideoView.start(); mVideoView.requestFocus();

Cdigo 37. Clase View disponible para reproducir archivos Adems permite realizar las mismas funcionalidades de stop, pause, etc.. que la clase MediaPlayer.

88

4.7

Localizacin GPS y Mapas

Uno de las actividades ms notorias es la facilidad con la que las aplicaciones de Android pueden trabajar con la API de Mapas que Google facilita. Amn de los mapas, otra funcin es la geolocalizacin que se puede realizar del terminal en cuestin. En primer lugar se empezar a tratar en cmo utilizar la seal GPS para posteriormente pasar a utilizar los mapas.

4.7.1

Uso de la seal GPS

En el uso de la seal del GPS, existen una serie de clases con las cuales se puede manejar la seal del dispositivo. Dentro de estas clases una de las principales, es la clase LocationManager que se utiliza principalmente para gestionar la localizacin del dispositivo. Tambin existe la clase Location con la cual se representa una localizacin geogrfica y la interfaz LocationListener con la que se capturan los eventos asociados al dispositivo de localizacin. Para poder acceder a cualquier servicio integrado del telfono, se realiza mediante el mtodo getSystemService. Para acceder a este servicio y poder luego gestionarlo hay que crear una constante del contexto en el que se indique que el servicio que se desea es el de localizacin. obtener la seal de GPS, se utiliza el mtodo requestLocationUpdates que a su vez implementa un mtodo llamado onLocationChanged que es invocado cada vez que se detecta que la seal cambia. En el cdigo Java que se muestra a continuacin podr verse con mejora lo explicado en los prrafos anteriores. Para poder

public class EjemploGPS extends Activity { private private private private private private TextView latitud; TextView longitud; LocationManager locman; String contexto; String provider; Location location;

89

/** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); latitud=(TextView)findViewById(R.id.latitud); longitud=(TextView)findViewById(R.id.longitud); contexto=Context.LOCATION_SERVICE; locman=(LocationManager)getSystemService(contexto); provider=LocationManager.GPS_PROVIDER; busca(); } private void busca() { if(locman.isProviderEnabled(provider)) { locman.requestLocationUpdates(provider, 0, 0,new LocationListener(){ public void onLocationChanged(Location loc){ if(loc!=null){ location=loc; latitud.setText("latitud"+location.getLatitude()); longitud.setText("longitud"+location.getLongitude()); } } public void onProviderDisabled(String provider){} public void onProviderEnabled(String provider){} public void onStatusChanged(String provider, int status,Bundle extras){} }); } } }

Cdigo 38. Creacin del programa que maneja los recursos de GPS Antes de probarlo, no hay que pasar por alto que para poder utilizar la seal GPS es necesario obtener permisos, de forma que stos tienen que aparecer en el archivo AndroidManifest.xml:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></usespermission>

Cdigo 39. Permisos necesarios para el acceso al recurso de GPS Para poder emular dicha seal, se debe abrir un terminal de ejecucin en el equipo y lanzar una conexin telnet hacia el emulador. Y ejecutar el comando geo fix con la posicin geogrfica, es decir:
telnet localhost 5554 geo fix LONGITUD LATITUD

90

La ejecucin de dicho ejemplo sera la siguiente:

Figura 53. Ejecucin del programa ejemploGPS

4.7.2

Uso de mapas

El principal aliciente que presenta la programacin en Android, es la utilizacin del servicio de los mapas de Google. Este servicio se usa posteriormente como si fuera una View lo cual permite trabajar fcilmente con el mapa. Antes de comenzar a conocer qu clases son las ms importantes a la hora de crear mapas, es importante saber que para utilizar stas, no slo basta con los permisos necesarios de acceso a Internet, sino que se necesita una clave para poder utilizar la API de mapas de Google. Para poder obtener dicha clave es imprescindible realizar una serie de pasos para registrarse y obtener los permisos para programar con los mapas. En cierta manera cada aplicacin que se utiliza en Android tiene asignada un certificado de su autora. Dentro del entorno de programacin de Eclipse, las aplicaciones estn firmadas bajo un certificado de prueba que se obtiene a travs del fichero de claves debug.keystore. Pero como en el caso de los mapas, los recursos son accesibles mediante descarga y se necesita un certificado individual para poder utilizarlos.

91

El procedimiento para poder obtener el certificado individual, es el siguiente: 1. Primero, debemos de obtener un resumen MD5 para conseguir el certificado con el cual firmar la aplicacin. Dicho resumen se puede generar con la herramienta keytool de la JDK de Java.

keytool.exe - lista -alias androiddebugkey - almacn de claves "C : \ android \ debug.keystore " - storepass android android - keypass

Cdigo 40. Obtencin de la clave para la firma de los mapas Un ejemplo de huella puede ser el siguiente:
Huella digital de certificado (MD5): B1:1B:5D:7B:0B:8E:5C:0B:0E:DD:0D:6D:E1:0B:83:12

Cdigo 41. Certificado MD5 2. Despus, con esa huella generada, se debe registrar en la pgina disponible de Google. http://code.google.com/android/maps-api-signup.html 3. Y una vez efectuado el registro, desde Google se genera un cdigo donde aparece la clave de la API para poder utilizar los mapas y la estructura del componente View creado que se deber aadir en el archivo main.xml. Dicha estructura es similar al cdigo que se muestra debajo.
<com.google.android.maps.MapView android:layout_width="fill_parent" android:layout_height="fill_parent" android:apiKey="0YXlXnN2PDCEvQ4SKPxeOcguVzo5QmTopYguKew" />

Cdigo 42. Clave API del mapa Realizados los trmites pertinentes para la generacin de la clave necesaria y as poder trabajar con los mapas desde Android, hay que cerciorarse de que se est trabajando con la API adecuada y con la cual se da el soporte necesario para poder usar este nuevo tipo de componente View. Entonces desde el equipo se abre una ventana de acceso al sistema mediante consola y se ejecuta la siguiente sentencia:
android list targets

Cdigo 43. Comando de listado de targets de Android

92

Al ejecutar el comando de encima, se listar desde consola todos los targets posibles que se pueden utilizar para poder escoger a la hora de programar una aplicacin en Android. Como lo que se busca es poder programar una aplicacin en la que se usen componentes View que lleven embebidos mapas geogrficos, a la hora de crear un nuevo proyecto se deber elegir el target que incluya las APIs correspondientes. Este target especfico puede aparecer en el listado que se crea a travs de la ejecucin del comando anterior as como se puede observar en la siguiente imagen:

Figura 54. Listado de targets disponibles en el equipo

En el caso que tras ejecutar el comando de listado, no apareciera ningn target con la API necesaria para poder utilizar los mapas, se deben de actualizar la SDK de Android de forma que al igual que antes, desde consola se ejecuta el comando que se ensea a continuacin y posteriormente realizar el mismo procedimiento anterior descrito de listado.
android update sdk

Cdigo 44. Comando de actualizacin de la SDK de Android

93

Aparte de la eleccin del target necesario tambin hay que crear un nuevo emulador o avd desde el que se pueda ver el resultado de la aplicacin creada adems de realizar las pruebas pertinentes y como en principio no se tiene ningn avd con el target de Google Maps se procede a la creacin de un nuevo, con el target correspondiente.

Figura 55. Creacin de un emulador para mapas

4.7.2.1 Creacin de una aplicacin Android con uso de mapas A la hora de crear un proyecto en Android en el que se desee el uso de mapas, previamente se han debido de cumplir los requerimientos necesarios anteriormente expuestos, cumplidos stos, es momento de pasar a comentar los principales aspectos que se tienen que complementar para conseguir una aplicacin de estas caractersticas. En primer lugar, y despus de haber escogido el target adecuado para esta clase de proyecto, hay que dirigirse al archivo AndroidManifest.xml en el que se tiene que referenciar a las libreras necesarias para poder trabajar con mapas desde Android, de manera que en el nodo application se tiene que aadir el siguiente cdigo:

<uses-library android:name="com.google.android.maps"></uses-library>

Cdigo 43. Permiso para el uso de la librera de mapas

94

Adems de aadir las libreras que dan soporte a la aplicacin, tambin es necesario incluir dentro de este archivo XML los permisos que se necesitan para poder utilizar acceso a Internet. Dicha inclusin sera la que se muestra:
<uses-permission android:name="android.permission.INTERNET"></usespermission>

Cdigo 44. Permisos de Internet en una aplicacin Android En segundo lugar, se pasa a crear la interfaz de usuario en la que se muestre la presentacin que puede tener un mapa geogrfico en Android, y para ello hay que utilizar la clase Activity de Android. Aunque para este caso preciso, la clase Java que se implementar no heredar de la clase Activity si no que lo har de la clase MapActivity. Con la clase MapActivity se puede manejar todo el ciclo de vida comprendido para una aplicacin y realizar todas las gestiones necesarias requeridas en cuanto a la representacin de mapas. Adems con esta clase proporcionada se crea una nueva Activity en la que su componente principal es el MapView. En este cdigo, se muestra como quedara confeccionada la clase Java con la que se va a trabajar con mapas.
public class EjemploMapa extends MapActivity { private MapView mapView; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mapView=(MapView)findViewById(R.id.mapview); } protected boolean isRouteDisplayed(){ return false; } }

Cdigo 45. Ejemplo de una clase Java que utiliza mapas En referencia al cdigo Java mostrado, hay que hacer mencin especial al componente MapView que es el encargado de desplegar el mapa proporcionado por Google como un elemento que forma parte de la interfaz que se muestra al usuario. Como ejemplo, se ensea como quedara plasmado en el archivo main.xml que es dnde se declara la interfaz de usuario que se utiliza, la declaracin del componente MapView en cuestin.

95

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <com.google.android.maps.MapView android:id="@+id/mapview" android:layout_width="fill_parent" android:layout_height="fill_parent" android:clickable="true" android:enabled="true" android:apiKey="0YXlXnN2PDCEvQ4SKPxeOcguVzo5QmTopYguKew" /> </LinearLayout>

Cdigo 46. Ejemplo de archivo main.xml de una aplicacin Android con mapas Adems de este componente imprescindible, tambin es importante que para poder crear la clase Java, sta herede de la clase MapActivity, y sobrescribir el mtodo isRouteDisplayed el cual devuelve un valor true si el componente Activity devuelve informacin sobre la ruta o conjunto de indicaciones de la obtencin del recurso y en cualquier otro caso devolver un valor de false. En la siguiente imagen mostrada puede verse un claro ejemplo de cmo se mostrara un mapa desde el emulador de Android.

Figura 56. Ejecucin de una aplicacin con mapas

96

Otra de las peculiaridades que ofrece el componente visual MapView, es la posibilidad de poder cambiar de imagen estndar como la mostrada en la imagen anterior. Como ejemplos posibles puede servir una visin desde el satlite, el trfico estimado o una simple muestra del callejero. Para hacer posible este cambio existen diferentes mtodos provistos desde el componente MapView que se pueden ver en el siguiente cdigo.

mapView.setSatellite(true); mapView.setStreetView(true); mapView.setTraffic(true);

Cdigo 47. Posibles perspectivas de un mapa en Android A la hora de fijar un punto en el mapa, se hace uso de la clase GeoPoint que sirve para poder fijar una localizacin geogrfica dentro del componente MapView. Al crear una ocurrencia de la clase GeoPoint, se le envan la longitud y la latitud del punto en cuestin.

private GeoPoint punto; String coordenadas[] = {"40.406944", "-3.875"}; double lat = Double.parseDouble(coordenadas[0]); double lng = Double.parseDouble(coordenadas[1]); punto = new GeoPoint((int) (lat * 1E6),(int) (lng * 1E6));

Cdigo 48. Ejemplo de una ocurrencia de tipo GeoPoint Aparte de las clases habladas anteriormente, desde Android se ofrecen otra serie de clases las cuales sirven para el manejo de mapas. De entre estas clases anexas hay que destacar la clase MapController, cuyo uso se dedica principalmente al control del mapa. Adems esta clase permite centrar la posicin del mapa as como ejercer el control sobre el nivel del zoom aplicado sobre el componente visual. Para obtener dicho control, se ha de crear un nuevo objeto de la clase MapController, y que ste obtenga dicho poder mediante el mtodo getController() proporcionado por el componente MapView. Con mayor claridad, se puede ver en el siguiente cdigo.
private MapController controlador; controlador=mapView.getController();

Cdigo 49. Ejemplo de un objeto de tipo MapController

97

Una vez que se obtiene el control sobre el componente MapView, con la ocurrencia creada de la clase MapController se puede asignar un punto del mapa en concreto y fijarlo como centro de la imagen cartogrfica mostrada. Al igual que hacer fijo un punto en particular, desde la clase MapController se pueden fijar los niveles de zoom para poder ver la representacin del mapa ms alejada o cercana. A continuacin se muestra el cdigo necesario para poder adoptar dichas cualidades.
private GeoPoint punto; private int valorzoom; valorzoom=controlador.setZoom(MEDZOOM); String coordenadas[] = {"40.406944", "-3.875"}; double lat = Double.parseDouble(coordenadas[0]); double lng = Double.parseDouble(coordenadas[1]); punto = new GeoPoint((int) (lat * 1E6),(int) (lng * 1E6)); controlador.animateTo(punto);

Cdigo 50. Ejemplo de uso de zoom en un programa Android con mapas Como se puede ver en el cdigo anterior, para poder ejercer control sobre el zoom se utiliza el mtodo setZoom() al cual se le pasa como parmetro un valor entero comprendido entre 1 y 21 que representan el grado ms lejano y cercano respectivamente. A la hora de fijar un punto como centro del mapa se puede realizar por medio del mtodo setCenter(), aunque tambin se puede hacer con el mtodo animateTo(). En la siguiente imagen se puede ver la ejecucin de estas nuevas cualidades que se han comentado previamente:

Figura 57. Ejecucin de una aplicacin con mapas en Android

98

De la misma forma que existe la clase MapController para poder ejercer determinadas acciones sobre el mapa, tambin existe la clase Overlay, cuyo empleo se encamina sobre el poder anotar texto o pintar sobre el mapa mediante el uso de clases Canvas. La clase Overlay tiene como principal objetivo permitir incluir dibujos, texto, lneas, imgenes o formas dentro de un componente MapView adems de manejar los clicks realizados sobre el mapa. El modo en el cual se aaden uno o ms Overlays es a base de capas sucesivas que se superponen obstruyendo la capa ms reciente a la ms antigua. Al crear estas capas, se debe de crear una clase que herede de la clase Overlay en la que se deben de sobrescribir los mtodos draw(), el cual se encarga de aadir todas las anotaciones creadas y el mtodo onTap(), que se utiliza ante los eventos generados por los clicks del usuario. En el caso ejemplo slo se tratar el primero de estos eventos.

public class MiOverlay extends Overlay{

@Override public void draw(Canvas canvas, MapView mapView, boolean shadow) { } }

Cdigo 51. Ejemplo de clase Overlay Para aadir una anotacin dentro de la clase Overlay se recurre a la clase Canvas que se encarga de pintar dicho texto dentro del componente MapView. Si lo que se desea, es incluir una anotacin a una localizacin fsica, se debe realizar previamente una conversin entre el punto en cuestin y las coordenadas dentro de la pantalla. Al realizar esta transformacin, se ha utilizado la clase Projection que permite realizar el cambio de longitud /latitud a un punto situado dentro del eje de abscisas y ordenadas de la pantalla y viceversa. El nuevo objeto de tipo Projection se crea por medio de la asignacin del mtodo getProjection() del componente MapView. Y la conversin citada se realiza por medio del mtodo toPixels() si se desea obtener las coordenadas x /y de un punto geogrfico o por el mtodo fromPixels() si se desea lo contrario.
private GeoPoint punto; private Point mipunto; mipunto = new Point(); mapView.getProjection().toPixels(punto, mipunto);

Cdigo 52. Ejemplo de transformacin de un punto geogrfico a un punto de la pantalla

99

En el cdigo siguiente, se puede contemplar lo comentando en los prrafos anteriores:


public class MiOverlay extends Overlay{ //variables de localizacin private GeoPoint punto; private Point mipunto; private private private private int radio=5; Paint pinta; Paint pinta2; Paint pinta3;

@Override public void draw(Canvas canvas, MapView mapView, boolean shadow) { String coordenadas[] = {"40.406944", "-3.875"}; double lat = Double.parseDouble(coordenadas[0]); double lng = Double.parseDouble(coordenadas[1]); punto = new GeoPoint( (int) (lat * 1E6), (int) (lng * 1E6)); //transformamos el punto de geolocalizacion a pixeles mipunto = new Point(); mapView.getProjection().toPixels(punto, mipunto); //crear circulo RectF circulo=new RectF(mipunto.x-radio,mipunto.yradio,mipunto.x+radio,mipunto.y+radio); RectF fondo=new RectF(mipunto.x+radio-1,mipunto.y5,mipunto.x+10*radio,mipunto.y+5); //modo de pintar pinta=new Paint(); pinta.setARGB(250, 255, 0, 0); pinta.setAntiAlias(true); pinta2=new Paint(); pinta2.setARGB(250, 250, 250, 250); pinta2.setAntiAlias(true); pinta3=new Paint(); pinta3.setFakeBoldText(true); pinta3.setARGB(255,0, 0, 0); pinta3.setAntiAlias(true); //pintar en el mapa canvas.drawOval(circulo, pinta); canvas.drawRect(fondo, pinta2); canvas.drawText("BOADILLA DEL MONTE", mipunto.x+radio, mipunto.y, pinta3); } }

Cdigo 53. Ejemplo completo de una clase Overlay

100

A la hora de aadir la clase Overlay creada al componente MapView se puede observar en el cdigo que se muestra a continuacin.
miOverlay=new MiOverlay(); overlays=mapView.getOverlays(); overlays.add(miOverlay);

Cdigo 54. Ejemplo de adhesin de un objeto Overlay al componente MapView Para acabar finalmente con la clase Overlay, comentar brevemente que existe una clase especial que se dedica principalmente a mostrar la localizacin actual del dispositivo en un componente MapView a travs de la clase MyLocationOverlay. La ejecucin de una aplicacin en Android en la cual se combine por un lado mapas y por otro lado clases Overlay es la siguiente:

Figura 58. Ejecucin de una aplicacin Android con mapas y objetos Overlay

En Android existe tambin otra forma con la cual se pueden aadir componentes visuales como objetos Views o ViewGroups en vez de utilizar la clase Overlay. Este procedimiento se realiza de tal manera que queden adjuntos dichos objetos al componente MapView en una determinada posicin al igual que sucede con las ocurrencias de la clase Overlay.

101

Una vez que se haya creado el objeto View, se deber asignar al componente MapView en cuestin mediante el mtodo addView, al cual se le pasan como argumentos el objeto a incrustar en el mapa y la posicin deseada dentro de ste. Dicha posicin viene dada por un objeto de tipo MapView.LayoutParams que sirve para determinar dnde y cmo ser el objeto View a desplegar dentro de la pantalla. Para verlo con mayor precisin se aade el siguiente cdigo.
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mapView=(MapView)findViewById(R.id.mapView); crearMapa(); pto= new MapView.LayoutParams(MapView.LayoutParams.WRAP_CONTET ,MapView.LayoutParams.WRAP_CONTENT,punto,MapView.LayoutParams. RIGHT); layout=new LinearLayout(this); layout.setBackgroundColor(Color.LTGRAY); texto=new TextView(this); texto.setText("BOADILLA DEL MONTE"); texto.setTextColor(Color.BLACK); layout.addView(texto); mapView.addView(layout, pto); }

Cdigo 55. Adhesin de un objeto View a un mapa Otro dato a tener en cuenta a la hora de adjuntar este tipo de objetos View, es que se debe realizar dentro de los mtodos onCreate u onRestore de la clase MapActivity con la que se trabaje. La ejecucin resultante del cdigo anterior es la que se muestra a continuacin:

Figura 59.Ejecucin de la adhesin de un objeto View a un mapa

102

4.8 Uso de recursos de Internet


Otra de las peculiaridades que proporciona Android es el modo en el cual se pueden acceder a diferentes recursos, y uno de ellos es Internet. Por ello se tratar de mostrar cmo acceder a un recurso mediante la conexin a Internet y se ensear un ejemplo didctico: un traductor que accede va web al traductor online de Google.

Para poder acceder a los recursos de Internet, la aplicacin debe poseer permisos y a su vez tiene que quedar reflejado en el archivo AndroidManifest.xml. De tal manera que debe aparecer el siguiente nodo:
<uses-permission android:name="android.permission.INTERNET"/>

Cdigo 56. Permisos necesarios para el uso de Internet en una aplicacin Android Obtenidos los permisos para el acceso a Internet, se debe de crear un patrn de acceso al recurso de Internet. Dicho patrn es el siguiente:
try{ URL url=new URL(direccion); URLConnection connection=url.openConnection(); HttpURLConnection httpConnection=(HttpURLConnection)connection; int respuesta=httpConnection.getResponseCode(); if(respuesta==HttpURLConnection.HTTP_OK){ InputStream in=httpConnection.getInputStream(); StringBuilder sb=new StringBuilder(); String line; try{ BufferedReader br=new BufferedReader(new InputStreamReader(in)); while((line=br.readLine())!= null){ sb.append(line); } }finally{ in.close(); } aux=sb.toString(); traduccion=aux.substring(aux.indexOf(":\"")+2,aux.indexOf("\"},")); System.out.println(traduccion); } }catch(MalformedURLException e){ } catch(IOException e){ }

Cdigo 57. Clase Java de acceso al traductor de Google

103

Para este caso en particular la URL a la cual accedemos para obtener el recurso es la formada por las siguientes cadenas de texto:
private String direccion= "http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q =; private String espacio ="%20"; private String idioma= "&langpair=es%7Cen";

Cdigo 58. Ejemplo de URL necesaria para acceder al traductor de Google Como se puede apreciar, la URL la conforman la concatenacin de la cadena direccin ms el texto que se quiera traducir, que a su vez queda concatenado con la cadena espacio, y por ltimo, se indica desde que idioma proviene el texto a traducir y a que idioma destino traducirlo.

Este simple ejemplo realiza la comprobacin de que se realiza traduccin de un texto de espaol a ingls. Puesto que esto se puede extrapolar a diferentes idiomas.

Figura 60. Ejemplo sencillo de un traductor

104

Captulo 5 Mquina Virtual


La virtualizacin es una nueva tecnologa que ha revolucionado el conjunto de las TIC y el modo por el cual se utilizan los recursos proporcionados por un ordenador. Esta nueva tecnologa consiste principalmente en desplegar diversas mquinas virtuales alojadas dentro de una nica mquina fsica. Esta mquina es la encargada de proporcionar los recursos necesarios para que stas puedan llevar a cabo las actividades para las cuales son requeridas. Adems, en el interior de cada una de estas mquinas virtuales se pueden ejecutar diferentes sistemas operativos dentro una misma mquina fsica. Mquina Virtual Una mquina virtual es un receptculo que contiene un sistema operativo completo que est totalmente abstrado y cuyo comportamiento es similar al de un ordenador fsico, es decir, una mquina virtual es un componente software capaz de almacenar diferentes sistemas operativos. stos pueden estar compuestos por diversas aplicaciones y aislados e independientes de los dems sistemas operativos funcionando como si de un nico ordenador se tratara. Esta plataforma contenedora de software es la principal encargada de gestionar los recursos proporcionados por el hardware de un ordenador, as como de redistribuirlos eficazmente por los diferentes sistemas operativos soportados y ser la interfaz entre la capa hardware real y el software hospedado. En la siguiente imagen, se puede ver un ejemplo sencillo de la virtualizacin. El principal beneficio que otorga una mquina virtual es poder compartir los diferentes recursos proporcionados por un ordenador entre las diferentes mquinas virtuales. A modo de capas, en la capa ms inferior, se encuentra el hardware. A continuacin se sostiene la mquina virtual y por ltimo se sitan las capas de software con los diferentes sistemas operativos virtualizados.

Figura 61. Ejemplo de capas de virtualizacin

105

Por lo tanto una mquina virtual es un paquete software capaz de englobar una serie de recursos hardware virtual, un sistema operativo y diversas aplicaciones que forman un conjunto fcil de portar y de gestionar. Hacindolo totalmente independiente del hardware fsico sobre el que se sostiene y a su vez aislado por completo de las diferentes mquinas virtuales con las que conviva. Ventajas de la virtualizacin Las principales ventajas que propone la virtualizacin son las siguientes: La reduccin de costes econmicos es una de las principales razones por las cuales la visrtualizacin supone una gran ventaja. Gracias a la virtualizacin se permite un ahorro considerable de recursos de tal manera que conlleva una mejora en la productividad y control de la infraestructura haciendo posible una disminucin considerable de mquinas fsicas. Este hecho facilita en gran medida que se gane en menor espacio fsico requerido implicando una reduccin importante de gastos de energa, refrigeracin y otros costes de infraestructura. Otra ventaja es la flexibilidad y dinamismo que tiene una infraestructura virtual. La virtualizacin permite una asignacin y gestin de los recursos permitiendo agruparlos y distribuirlos de manera que se cumplan los requerimientos de nivel de servicio de forma ms rpida y rentable; siendo la infraestructura susceptible a todo tipo de cambio. Es una infraestructura altamente segura ofreciendo una gran disponibilidad. La virtualizacin adems, puede servir como un elemento ms de recuperacin dando un servicio ptimo como servicio de backup ante situaciones o incidentes imprevistos.

106

5.1 Creacin de una Mquina Virtual


En este apartado, se proceder a ver cmo se ha creado la mquina virtual sobre la cual se ha construido todo el framwework necesario para poder desarrollar aplicaciones en Android. Para poder establecer la mquina virtual, se ha utilizado VirtualBox. VirtualBox es un producto software de cdigo y distribucin libre sobre el cual se va a implantar la infraestructura virtual. La finalidad que se busca con este software es simular un entorno en el que se instale un sistema operativo Ubuntu-Linux y sobre este ltimo reproducir todo los instrumentos necesarios para poder programar aplicaciones de Android.

Figura 62. Logotipo VirtualBox Como caracterstica principal VirtualBox aporta compatibilidad con todos los ordenadores que cumplan el estndar x86, as como todas las ventajas anteriormente citadas sobre las maquinas virtuales. Tambin proporciona una interfaz sencilla e intuitiva desde la cual se puede instaurar un sistema operativo simulado como si fuera un ordenador autnomo e independiente. Para llevar a cabo la virtualizacin de un sistema operativo UbuntuLinux desde VirtualBox se deben realizar los siguientes pasos: 1) Descargar el software VirtualBox desde su pgina web: http://www.virtualbox.org/wiki/Downloads 2) Una vez descargado e instalado el producto VirtualBox , se pulsa sobre el icono Nueva.

Figura 63. Creacin de una mquina virtual I

107

3) A continuacin se pulsa Siguiente y se pasa a seleccionar el tipo de sistema operativo que se va a simular y el nombre que tendr la mquina virtual. Y finalizado el proceso se pulsa otra vez el botn Siguiente.

Figura 64. Creacin de una mquina virtual II

Figura 65.Configuracin del sistema operativo de la mquina virtual

108

4) En el siguiente paso se selecciona parte de los recursos que dispondr la mquina virtual, en este caso, se trata de la memoria RAM que se le asignar.

Figura 66.Configuracin de la memoria RAM de la mquina virtual

5) Despus se debe asignar el disco duro virtual en el cual se crear la imagen y que har las veces de disco duro, donde se almacenarn todos los archivos del sistema operativo virtualizado. Lo recomendable es escoger la opcin de imagen dinmica en expansin, puesto que dicho sistema virtualizado no requerir desde el principio la totalidad del disco sino que ir en aumento en funcin de sus necesidades.

Figura 67.Configuracin del disco duro virtual I

109

Figura 68. Configuracin del disco duro virtual II

Figura 69. Configuracin del disco duro virtual III 6) Una vez elegida la capacidad y el lugar donde residir el disco virtual creado, se pulsa al botn Terminar y en la pantalla principal pulsar la opcin de Configuracin en donde se terminar de dar forma a la mquina virtual.

Figura 70. Creacin de una mquina virtual III

110

Es aqu donde se termina de dar los ltimos retoques para reproducir la mquina virtual deseada. Por ejemplo, en la opcin Almacenamiento se configura desde donde se va ejecutar el arranque inicial del sistema operativo en cuestin, es decir, desde donde se comienza para que dicho sistema quede almacenado en el disco duro virtual; este proceso de arranque se puede realizar desde una imagen (.iso) o desde la unidad CD/DVD. Este procedimiento es similar al que se puede realizar en un ordenador de sobremesa o porttil cuando se instala el sistema operativo.

Figura 71. Creacin de una mquina virtual IV Por ltimo solo falta pulsar la opcin de Iniciar, en cuanto se finalicen las configuraciones deseadas.

Figura 72. Creacin de una mquina virtual V

111

Captulo 6 Valoracin econmica


Dentro de este apartado se va a proceder a realizar el desglose de los costes del proyecto. Para ello, se ha tenido en cuenta el cmputo total de horas empleadas por las personas involucradas en el desarrollo del mismo haciendo una mencin especial en el papel desempeado por cuatro figuras imprescindibles que son las siguientes: Coordinador de Proyecto: es la figura responsable de recoger y evaluar el proyecto finalizado adems de realizar labores compartidas junto con el Director de Proyecto, de seguimiento y supervisin del proyecto en cuestin. Director de Proyecto: es el encargado de proponer el proyecto, facilitar la labor de su elaboracin mediante sus indicaciones con el fin de orientarlo por la senda idnea ante diversos problemas que surjan y llevar a cabo una supervisin de los contenidos del proyecto as como el seguimiento del mismo. Analista: como principales funciones que debe desempear el analista destacan: la de distribuir las tareas necesarias para el desarrollo del proyecto entre los diferentes programadores, supervisar el trabajo de stos, realizar toda la labor de documentacin previa necesaria, as como del diseo de la aplicacin y de elaborar y colaborar en la documentacin final del proyecto. Programador: es la persona o grupo de personas que se encargan de realizar el proyecto de acuerdo con las pautas marcadas por el Director de Proyecto y/o Coordinador de Proyecto. Su organizacin se realiza bajo la supervisin del Analista y tambin es el encargado de elaborar la documentacin final.

A continuacin se muestra una tabla en la que se puede observar el total de horas imputadas en el proyecto por cada uno de los cuatro integrantes anteriormente descritos adems de obtener el coste proporcional que supone cada hora invertida para cada uno de los componentes mediante una estimacin aproximada a los costes medios por hora actuales en el mercado.

112

Componentes Coordinador del proyecto Director del proyecto Analista Programador Total

Horas 25 90 280 160

/Hora 60 40 20 10

Total 1.500 3.600 5.600 1.600 12.300

Tabla 2. Valoracin presupuestaria del proyecto Una vez realizados los clculos necesarios en los que adems se muestra la equivalencia de horas realizadas por cada rol y el coste equivalente de cada uno se obtiene el presupuesto total del proyecto.

113

Captulo 7 Conclusiones y trabajos futuros


7.1 Conclusiones obtenidas
Tras la finalizacin del presente proyecto, se puede concluir que el principal hito alcanzado ha sido el amplio conocimiento que se ha podido obtener de la estructura del sistema operativo Android, as como de los elementos o componentes necesarios para poder crear una aplicacin para un telfono mvil que disponga de este sistema operativo en concreto. Otro resultado obtenido ha sido la ventaja que ofrece la optimizacin de recursos y la portabilidad que hoy da permite la virtualizacin. El desarrollo de aplicaciones para telfonos mviles era prcticamente utpico o de muy difcil acceso. Una de las principales razones se debe en gran medida a la rigidez que presentaban en cuanto cdigo, puesto que eran difciles de programar, dependientes de los recursos proporcionados y en cierta manera, el alcance a este tipo de aplicaciones estaba reservado a personal especializado en esta materia, hacindolas de acceso cerrado para cualquier desarrollador. Tras la irrupcin de los nuevos sistemas operativos destinados principalmente a telfonos mviles, se abra una nueva puerta a los desarrolladores y un nuevo concepto en la programacin de aplicaciones para dispositivos mviles en las cuales la interfaz de usuario es la principal baza. Pero sin embargo seguan existiendo restricciones en cuanto al framework o entorno de desarrollo y el despliegue de las aplicaciones creadas, que estn principalmente sujetas a fuertes licencias de software. Con la llegada del sistema operativo Android, no slo llega un sistema operativo verstil y dinmico, sino que ofrece mltiples facilidades desde el punto de vista del desarrollador de software. En contrapartida a otros sistemas operativos destinados para terminales mviles existentes en el mercado, Android hace posible que mediante el sustento y soporte proporcionados tanto por la SDK y diversas API publicadas, la programacin de aplicaciones para este sistema operativo sea ms fcil y llevadero sin que al programador le acarree coste alguno. Adems de la facilidad proporcionada a travs de las herramientas de trabajo, otra ventaja es el uso de un lenguaje de alto nivel, Java, para poder construir cualquier tipo de programa para Android. Tambin cabe destacar la conectividad presentada entre los diversos archivos tanto XML como Java destinados para la creacin de una aplicacin, al igual que el uso de recursos tanto internos como externos que se realizan como de la sencilla forma que tiene un programa Android, puesto que se puede fcilmente desglosar en una serie diversa de componentes.

114

Por otro lado, hace falta hacer hincapi en una de las principales razones por la que el sistema operativo Android es un serio competidor a tener en cuenta y se debe principalmente a que se desarrolla bajo licencia Apache. Bajo este tipo de licencia cualquiera puede conocer y modificar dicho sistema dejando a expensas del desarrollador la libertad para poder distribuir el software generado. As, de esta manera, se permite reconocer la labor que se hace por parte del desarrollador y a diferencia de otros sistemas operativos de este tipo, se puede tener acceso libre al ncleo primitivo que lo compone y poder realizar los cambios que se deseen en funcin de la customizacin que quiera otorgarle el desarrollador, adems de no tener ninguna restriccin en cuanto a licencias software se refiere. Por ltimo, concluir y decir que Android no slo supone un competidor ms en el mercado de los sistemas operativos de los telfonos mviles puesto que a parte de las caractersticas que presenta de cara a los usuarios finales en cuanto trminos de usabilidad, permite poder desarrollar aplicaciones facilitando todo tipo de herramientas y documentacin necesarias ayudando en todo lo posible al programador y sin presentar ninguna traba legal al respecto a diferencia de muchos de sus competidores. Es por ello, que este acceso libre al contenido proporcionado por Android ha sido uno de los grandes factores en su expansin e innovacin, haciendo de esta virtud una serie ventaja competitiva en un mercado en el cual el riesgo de quedarse obsoleto puede suponer un error considerable.

115

7.2

Trabajos futuros

Un aspecto fundamental en el diseo de este tipo de aplicaciones es la posibilidad de poder probar cualquier tipo de aplicacin creada dentro de un telfono mvil que alberge el sistema operativo Android. En la actualidad, existe una amplia gama de fabricantes que ofrecen este sistema operativo como gestor de sus dispositivos, en contradiccin a los comienzos de Android en los cuales muy pocos fabricantes se arriesgaban a introducir ste en sus nuevos terminales. Con el paso del tiempo, los fabricantes han aceptado el reto de confiar en el nuevo sistema operativo desarrollado por Google de forma que poco a poco se va consolidando en el mercado, pudiendo existir terminales de un conjunto de fabricantes como bien pueden ser HTC, Samsung, Motorola, etc. An as estos fabricantes desean recuperar la inversin ante semejante apuesta realizada de modo que el acceso a las ltimas novedades ofertadas por los creadores de hardware de dispositivos mviles supone una barrera no muy fcil de superar debido principalmente al coste econmico que supone adquirir uno de estos dispositivos. Aunque en cierto modo el acceso a estos telfonos mviles con este tipo de caractersticas tan sealadas podrn ser accesibles en cuanto los costes de fabricacin se vayan abaratando as como el sistema operativo Android se afiance como uno de los principales del mercado, como sucedi algo similar con los primeros terminales mviles que posean diversos recursos hardware innovadores como cmara de fotos, cuyo coste era considerable hasta hoy da en el cual es raro que ningn telfono mvil dispongo de estos recursos. Entonces de acuerdo con lo expresado en los prrafos anteriores, sera de buen agrado poder disfrutar de las propias aplicaciones creadas dentro de un dispositivo que tenga a Android como sistema operativo. Tambin sera gratificante para el desarrollador poder ver cmo sus propias aplicaciones pueden funcionar en un telfono mvil, no slo por la satisfaccin generada si no porque puede ser fundamental incluir este proceso dentro del ciclo de pruebas del software ya que generalmente las pruebas realizadas a las aplicaciones que se crean en Android se llevan a cabo desde el emulador, pero como su propio nombre dice, es un reflejo o abstraccin de la realidad. Por tanto, por mucho que el software sea probado en el emulador no se puede garantizar al cien por cien que una vez desplegado en el dispositivo no sea susceptible de fallo.

116

Captulo 8 Bibliografa
La bibliografa utilizada para la elaboracin del proyecto es la que se muestra a continuacin: [MEI09] Meier, Retro; Professional Android Application Development. Wrox.2009 Meier, Retro; Professional Android 2 Application Development. Wrox.2010

[MEI10]

[DEVAND] Android Developers. http://developer.android.com/index.html [ANDGR] Android Develovepers Group. http://groups.google.com/group/android-developers

[ANDDEV] Android Development Community. http://www.anddev.org/ [ANDSPA] Android-Spa. http://www.android-spa.com/ [ANDES] [FER09] And.roid.es. http://and.roid.es/ Fernndez Fernndez, Carlos Alberto; Investigacin sobre Android. Universidad Tecnolgica de la Mixteca.2009. http://www.utm.mx/~caff/poo/AndroidIntro.pdf

[ANDSOL] Android Solutions. Desarrollo de aplicaciones para Android. http://www.androidsolutions.es/category/desde-cero/ [ANDJAV] Android Javienlinux. Plataforma para http://stackoverflow.com/questions/tagged/android OReilly training. http://training.oreilly.com/ mviles.

[OREITR]

[STACKOV] StackOverflow. http://stackoverflow.com/questions/tagged/android [WIKIAND] Wikipedia Android. http://es.wikipedia.org/wiki/Android [WIKISYM] Wikipedia Symbian. http://es.wikipedia.org/wiki/Symbian_OS [WIKIBB] Wikipedia BlackBerry. http://es.wikipedia.org/wiki/BlackBerry_OS Wikipedia iPhone. http://es.wikipedia.org/wiki/IPhone_OS

[WIKIOS]

117

[SYMDEV] Symbian Developer. http://developer.symbian.org/ [IPSOFTW] iPhone SoftWare. http://www.iphonesoftware.es/2008/04/15/el-sistemaoperativo-de-iphone/ [MOVFOR] Movil Forum. http://www.movilforum.es/c/document_library/get_file?folderI d=73602&name=DLFE-4802.pdf [ADMOB] [DIRAND] AdMob Mobile Metrics. http://metrics.admob.com/ Diario Android. http://diarioandroid.com/2009/05/06/comparativa-entresistemas-operativos-moviles/#more-1717 Eroski Consumer. http://www.consumer.es/web/es/tecnologia/software/2009/10 /14/188468.php?page=2 IDG. http://www.idg.es/pcworldtech/Sistemas-operativosmoviles:-en-busca-de-un-estand/art188636-.htm Bitcora de Javier Cancela. http://javiercancela.com/2007/10/17/introduccion-al-desarrollode-aplicaciones-para-telefonos-moviles-symbian/ http://javiercancela.com/2007/11/05/introduccion-al-desarrollode-aplicaciones-para-telefonos-moviles-blackberry/ http://javiercancela.com/2007/10/19/introduccion-al-desarrollode-aplicaciones-para-telefonos-moviles-windows-mobile/ http://javiercancela.com/category/iphone/

[ECON]

[IDEG]

[BITJAV]

[BLOGEV]

Blog de Edgar Velarde. http://blog.pucp.edu.pe/item/62443/lossistemas-operativos-moviles-alianzas-obstaculos-y-competencia Blog de JRamrez. http://jramirez-favoritos.blogspot.com/ Wikipedia virtualizacin. http://es.wikipedia.org/wiki/Virtualizacin VMware. http://www.vmware.com/es/virtualization/ IBM Virtualizacin. http://www304.ibm.com/businesscenter/smb/es/es/solucionesdenegocio/i nfraestructura/virtualizacion

[BLOGJR] [WIKIVIR] [VMWAR] [IBMVIR]

118

Captulo 9 ndice de figuras


Figura 1. Diagrama de sectores del mercado de la telefona mvil Figura 2. Cuota de mercado de los diferentes competidores Figura 3. Dispositivo con sistema operativo Symbian Figura 4. Dispositivo N-gage Figura 5.Dispositivos con Windows Mobile Figura 6. iPhone Figura 7. Estructura iPhone OS Figura 8. Dispositivo BlackBerry Figura 9. Logotipo empresa RIM Figura 10. Android Figura 11. Icono de Android Figura 12.Estructura del sistema operativo Android Figura 13.Icono licencia Apache Figura 14.Ciclo de vida componente Activity Figura 15. Configuracin de la variable del sistema Figura 16. Configuracin de la SDK como Path del sistema Figura 17. Configuracin del plugin de Android en Eclipse I Figura 18. Configuracin del repositorio ADT Figura 19. Configuracin del plugin de Android en Eclipse II Figura 20. Configuracin del path de la SDK de Android en Eclipse Figura 21. Icono Plugin Android en Eclipse Figura 22. Configuracin del emulador de Android

119

Figura 23. Actualizador de versiones Figura 24. Imagen DDMS Figura 25. Creacin de un nuevo proyecto Android I Figura 26. Creacin de un nuevo proyecto Android II Figura 27. Configuracin del proyecto Android a ejecutar I Figura 28. Configuracin del proyecto Android a ejecutar II Figura 29. Ejecucin del programa HolaMundo Figura 30. Estructura jerrquica de la clase View Figura 31. Salida por pantalla de un elemento EditText Figura 32. Visualizacin de un elemento ListView Figura 33. Ejecucin de elemento Spinner I Figura 34. Ejecucin de elemento Spinner II Figura 35. Ejecucin elemento Button Figura 36. Ejecucin elemento Checkbox Figura 37. Ejecucin elemento RadioButton Figura 38. Jerarqua ViewGroup Figura 39. Ejecucin elemento FrameLayout Figura 40. Ejecucin elemento LinearLayout I Figura 41. Ejecucin elemento LinearLayout II Figura 42. Ejecucin del elemento RelativeLayout Figura 43. Ejecucin del elemento TableLayout Figura 44. Ejecucin del elemento AbsoluteLayout Figura 45. Ejecucin de un Men de tipo Icono

120

Figura 46. Ejecucin de un Men de tipo Expansin Figura 47. Ejecucin de un Men de tipo Submen Figuras 48 y 49. Ejecucin de los dilogos de Alerta y de Progreso Figuras 50 y 51. Ejecucin de un componente Intent Figura 52. Ejecucin de un archivo de msica Figura 53. Ejecucin del programa ejemploGPS Figura 54. Listado de targets disponibles en el equipo Figura 55. Creacin de un emulador para mapas Figura 56. Ejecucin de una aplicacin con mapas Figura 57. Ejecucin de una aplicacin con mapas en Android Figura 58. Ejecucin de una aplicacin Android con mapas y objetos Overlay Figura 59.Ejecucin de la adhesin de un objeto View a un mapa Figura 60. Ejemplo sencillo de un traductor Figura 61. Ejemplo de capas de virtualizacin Figura 62. Logotipo VirtualBox Figura 63. Creacin de una mquina virtual I Figura 64. Creacin de una mquina virtual II Figura 65.Configuracin del sistema operativo de la mquina virtual Figura 66.Configuracin de la memoria RAM de la mquina virtual Figura 67.Configuracin del disco duro virtual I Figura 68. Configuracin del disco duro virtual II Figura 69. Configuracin del disco duro virtual III Figura 70. Creacin de una mquina virtual III

121

Figura 71. Creacin de una mquina virtual IV Figura 72. Creacin de una mquina virtual V

122

You might also like