CREACIÓN DE UNA PLATAFORMA DE DESARROLLO DE APLICACIONES PARA ANDROID

Tamaño: px
Comenzar la demostración a partir de la página:

Download "CREACIÓN DE UNA PLATAFORMA DE DESARROLLO DE APLICACIONES PARA ANDROID"

Transcripción

1 PROYECTO FIN DE CARRERA CREACIÓN DE UNA PLATAFORMA DE DESARROLLO DE APLICACIONES PARA ANDROID AUTOR: JOSÉ MIGUEL REYES IBARRECHE Madrid, Septiembre de 2010

2 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 Bárcena Fdo.: Fecha: / /

3 PROYECTO FIN DE CARRERA CREACIÓN DE UNA PLATAFORMA DE DESARROLLO DE APLICACIONES PARA ANDROID AUTOR: DIRECTOR: JOSÉ MIGUEL REYES IBARRECHE MARIO CASTRO PONCE Madrid, Septiembre de 2010

4 RESUMEN El proyecto Creación de una plataforma de desarrollo de aplicaciones para Android tiene como objetivo principal dar existencia a una máquina virtual con sistema operativo Ubuntu-Linux desde la que se desarrollen aplicaciones en el sistema operativo Android. Estas aplicaciones son: Creación de una interfaz de usuario, formación de bases de datos, uso de mapas, utilización de herramientas del Sistema de Posicionamiento Global (GPS), y reproducción de archivos multimedia. La utilización de una máquina virtual tiene como propósito proporcionar al usuario un entorno de desarrollo completamente configurado, eficiente y evite al usuario los problemas asociados a la configuración y actualización de dicho entorno de desarrollo. El desarrollo de este proyecto permitirá conocer el efecto del sistema Android en el mercado de la telefonía móvil y las ventajas de uso comparándolo con el resto de sistemas operativos actuales como iphone, Symbian Las características 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 máximo partido de la plataforma, que la aplicación sea portable, fácil 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 núcleo de Linux, librerías 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 didáctica, el uso y potencial de esta plataforma de desarrollo. Por esta razón, 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

5 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. v

6 Índice Capítulo 1 Introducción Motivación Objetivos 5 Capítulo 2 Tecnología en la actualidad Introducción El mercado tecnológico en la actualidad Principales demandas de mercado Representación del mercado Comparativa de los diferentes SSOO SSOO móviles Symbian Windows Mobile iphone Blackberry Android 27 Capítulo 3 El sistema Operativo Android Introducción Estructura de Android Estructura de una aplicación Android Ciclo de vida de una aplicación en Android 36 vi

7 3.4.1 Prioridad de procesos Herramientas para el desarrollo Instalar SDK Android Instalar plugin en Eclipse Completar la instalación Referenciar SDK Configurar emulador AVD y actualizar plugin Otras herramientas útiles Otras funcionalidades del emulador Dalvik Debug Monitor Service Android Debug Bridge 46 Capítulo 4 Creación de una aplicación Android Hola Mundo Nuevo proyecto Android Organización de una aplicación Android Android Manifest Nodo <application> Nodo <uses-permission> Nodo <permision> Nodo <instrumentation> Carpeta src Carpeta res Carpeta gen 57 vii

8 4.2.5 Carpeta bin Interfaz de usuario en Android View Widgets View Groups Otros elementos de la interfaz Menu Dialogs Uso de Intents para lanzar nuevas Activities Paso de parámetros y resultados Creación de BBDD Aplicaciones multimedia Reproducción de archivos locales Reproducción de archivos remotos Localización GPS y Mapas Uso de la señal GPS Uso de mapas Creación de una aplicación Android con uso de mapas Uso de recursos de Internet 103 Capítulo 5 Máquina Virtual Creación de una Máquina Virtual 107 viii

9 Capítulo 6 Valoración económica 112 Capítulo 7 Conclusiones y trabajos futuros Conclusiones obtenidas Trabajos futuros 116 Capítulo 8 Bibliografía 117 Capítulo 9 Índice de figuras 119 ix

10 Capítulo 1 Introducción El avance tecnológico de los últimos años demuestra el impacto éste ha tenido en la sociedad. Está comprobado cómo estos avances han servido de gran ayuda en el día a día y en el desarrollo económico de ésta. El acceso a esta tecnología fue dificultoso porque sólo estaba al alcance de muy pocas personas. Además estos complejos dispositivos parecían una excentricidad cuando se lanzaron al mercado. Actualmente el uso de estas tecnologías, como por ejemplo el teléfono móvil 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 producción motivado por el precio competitivo. Estos dos factores: la accesibilidad y el coste, han sido claves en el boom tecnológico ya que la mayoría de las tecnologías no estaban destinadas fuera de un ámbito científico. Las tecnologías de la Información y Comunicación (TIC) han tenido un papel importantísimo debido a la asombrosa evolución que han sufrido. Desde las primeras computadoras que servían de ayuda para elaborar cálculos complejos de diversas operaciones matemáticas hasta los actuales ordenadores portátiles. Esta transformación ha sido posible a la investigación llevaba a cabo en nuevos componentes sustitutivos que han modificado considerablemente el tamaño de los ordenadores, ya que antes eran auténticos mastodontes; pasando por los primeros PC s hasta llegar a los actuales ordenadores. De la misma manera que las nuevas investigaciones en diferentes tipos introdujeron una reducción considerable en el tamaño de los ordenadores, y la accesibilidad a este tipo de productos también fue importante el desarrollo de la intercomunicación entre ordenadores. Que las TIC están cambiando la sociedad es un hecho indiscutible debido en gran medida a la utilización de estas tecnologías en nuestra vida diaria que están haciendo que cambie la manera de relacionarnos. Ha cambiado la forma de comprar, acceder a la prensa o la búsqueda de información. Gracias a las TIC, las empresas han conseguido mejorar la productividad, haciéndolas más competitivas y generar nuevas líneas de negocio. Por último, a raíz del avance obtenido gracias a Internet y a factores anteriormente comentados, los ordenadores aumentaron y diversificaron su funcionalidad. En cierta manera acompañado de un cambio sustancial en los sistemas operativos que gobiernan los recursos del ordenador, sus múltiples características y cualidades. Y en la actualidad éstos ofrecen diversas funcionalidades, desde procesadores de textos hasta reproductores de vídeo y audio, etc. Los ordenadores son una herramienta imprescindible de trabajo. 1

11 Centrándonos en el tema principal de este documento, y en especial en una rama de las TIC. Los dispositivos o teléfonos móviles han sufrido un cambio de imagen realmente impactante en un corto período de tiempo han supuesto una revolución tecnológica impresionante. El teléfono móvil nació para la comunicación 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 físico, 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 sólo proporcionaron la reducción en el tamaño sino que permitió que personas de todas las clases sociales pudieran tener acceso a ellos. Por otro parte, esta renovación también viene acompañada en las diversas funcionalidades que han sido introducidas en este tipo de teléfonos, ya que a la principal finalidad es la de comunicar. Otro tipo de características son: el envío de mensajes vía SMS, diversas aplicaciones multimedia, videoconferencia, acceso a Internet, transferencia de archivos, etc. A raíz de las nuevas funcionalidades incluidas, era necesario administrar los diferentes recursos que ofrecía el hardware del teléfono para ello se desarrollaron diferentes sistemas operativos (SSOO). Los sistemas operativos de los primeros teléfonos móviles sólo se encargaban de gestionar las llamadas recibidas y/o enviadas y los recursos de la energía proporcionada por la batería. Con el paso del tiempo y con las nuevas funcionalidades incorporadas, los SSOO de los dispositivos móviles han adquirido mayor importancia y complejidad, de tal modo que casi se podrían equiparar con los SSOO que hoy se comercializan para cualquier tipo de ordenador. Uno de los primeros sistemas operativos para dispositivos móviles fue PalmOS, después le siguieron Blackberry y Windows. Este tipo de SSOO iban destinados para dispositivos PDA pero poco a poco se fueron implantando en teléfonos móviles hasta que Apple con su iphone introdujo un nuevo concepto para dispositivos móviles, que fue el desarrollo de pantallas táctiles. Cuando iphone se lanzo al mercado se pensó que sólo acapararía la cuota de mercado destinada a los teléfonos móviles y dentro de ésta, sólo aquel segmento cuyo perfil no fuera ejecutivo, debido a que este perfil se relacionaba más con SSOO como Palm, Blackberry o Windows Mobile. A la larga, se vio que estas previsiones fueron erróneas de modo que los diferentes proveedores de SSOO o fabricantes de teléfonos móviles tuvieron que ponerse manos a la obra para no perder aún más cuota de mercado frente a iphone. 2

12 A partir de la revolución introducida por la compañía Apple, multitud de fabricantes vieron como su cuota de mercado se desvanecía de modo que una buena parte de ellos se vieron forzados a introducir cambios en sus dispositivos. Varias compañías 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 compañías se volvieron a posicionar en el mercado, ya que las principales características de este SSOO son muy similares a las características del iphone. La mayoría de los SSOO para dispositivos móviles se han desarrollo bajo un hardware específico que apenas permite hacer modificaciones de alguna característica de éstos. Este agravante perjudica al desarrollo de aplicaciones para cualquier dispositivo móvil, debido a la dependencia del software del dispositivo y a que el conocimiento de éste es extendido sólo 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 generación, 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 implantación o de la interfaz de usuario necesaria. Google irrumpió en el mercado, lanzando su propio sistema operativo llamado Android cuyas características están basadas en el movimiento OpenSouce, y permiten a cualquier persona desarrollar todo tipo de aplicación para este nuevo sistema operativo. Android es un stack de software desarrollado exclusivamente para dispositivos móviles cuyo kernel o núcleo está basado en Linux y todas sus aplicaciones se escriben en lenguaje Java. Además Android está bajo licencia Apache. 3

13 1.1 Motivación Este proyecto tiene dos fundamentos importantes: Android facilita la creatividad porque sus aplicaciones se desarrollan bajo un lenguaje de programación fácilmente accesible ya que permite a cualquier persona que tenga conocimientos básicos sobre Java poder desarrollar su propia aplicación. 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 móviles. Otra característica que soporta Android es que se basa en un código abierto (licencia APACHE) por el cual toda persona tiene acceso al código 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 acompañado de poderosas librerías que facilitan la labor de la programación y que en un futuro las aplicaciones desarrolladas puedan ser desplegadas en un teléfono móvil. Es importante la innovación generada por Android. La tecnología en este ámbito ha crecido a pasos agigantados, permitiendo incorporar utilidades tanto en las telecomunicaciones (Bluetooth, 3G, ) como en el campo multimedia (reproductores de música, vídeo ) hasta tal punto que los teléfonos móviles 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 tecnológico. 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 haciéndolas más 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. 4

14 1.2 Objetivos Los objetivos principales son los siguientes: Desarrollar una máquina 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 programación debe ser sencillo contando con un simple IDE de programación 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 diseño, al igual que las ventajas y desventajas que nos puede proporcionar frente a otros competidores. Establecer los principios básicos para el desarrollo de aplicaciones. Conocer todo el entorno de programación necesario: SDK esencial, API s que se necesitan y todo tipo de paquetes o clases necesarias para poder abordar la programación de cualquier tipo de aplicación que se desee. 5

15 Capítulo 2 Tecnología en la actualidad 2.1 Introducción Se puede considerar a la industria de la telefonía móvil como una de las industrias punteras así como estratégicas puesto que ésta puede generar un total de un 1 millón de millones de dólares aproximadamente. Este ratio se deriva debido a la principal fuente de ingresos que son las llamadas y mensajería, pero poco a poco va ganando peso los ingresos obtenidos mediante otros servicios como puede ser el tráfico de datos, y principalmente a través de Internet. La irrupción de Internet en este tipo de dispositivos no sólo ha provocado una fuente de ingresos a tener en cuenta dentro de las operadoras telefónicas, si no que ha permitido un avance simbólico desde el punto de vista tecnológico. A principios de la década de los 90 cuando aparecieron los primeros teléfonos móviles, sólo permitían establecer llamadas, más tarde con el paso de los años se fueron introduciendo nuevas funcionalidades como el envío de mensajes, después se añadieron diversos juegos interactivos hasta llegar a navegar por Internet, realizar fotos e incluso ejecutar diversas aplicaciones multimedia como reproductores de vídeo y/o audio. La capacidad de realizar y recibir llamadas es solamente una de las funciones de estos dispositivos ya que hoy son auténticos 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 música y vídeo, y además poder realizar fotos. Pero, cuáles son las principales diferencias o similitudes frente al ordenador convencional? La principal diferencia que existe entre un sistema operativo que corre en un dispositivo móvil frente a una que se encuentra en un ordenador, es que para el primer caso, el sistema operativo debe lidiar contra restricciones mucho más estrictas en cuanto a limitaciones en la memoria, procesamiento de datos y a que la ejecución debe ser exacta y en un tiempo de respuesta mínimo. De modo que la gestión 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 técnicas del terminal móvil, haciéndolos totalmente robustos y a medida de los requerimientos planteados. 6

16 También 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 están sujetos a errores y continuamente muestran soluciones a los supuestos fallos producidos, solucionándolos mediante nuevas actualizaciones o versiones del software. La mayoría 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 ningún requerimiento formativo específico. Así, la usabilidad se sitúa 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 táctiles, abren un camino apasionante y excitante en la experiencia de uso en entornos móviles. Los terminales móviles con grandes pantallas y teclado virtual se han hecho un hueco en el mercado y figuran en los catálogos de los fabricantes importantes. El uso del teléfono móvil se ha transformado en algo placentero, divertido y sencillo, lo que ha motivado que la interfaz de usuario se haya vuelto más atractiva y humana. De modo que los usuarios de teléfonos móviles demandan aplicaciones y servicios que se diseñen pensando en ellos. 7

17 2.2 El mercado tecnológico en la actualidad Principales demandas de mercado Antes de ver cómo es cada sistema operativo, hace falta realizar una breve reflexión para observar qué se demanda en el mercado. Usabilidad En primer lugar, lo que la gente demanda es el diseño, los servicios y las aplicaciones, es decir, la usabilidad. El principal detonante en la revolución tecnológica sufrida en este sector fue la llegada del iphone. Este hecho ha producido un cambio importante en el diseño de los terminales móviles, provocando el nacimiento de nuevos dispositivos inspirados en él. Y es que, gracias al terminal de Apple, los usuarios de teléfonos móviles, que hasta el momento eran grandes desconocedores del mundo del diseño móvil, han comenzado a escuchar expresiones como multitouch e interfaz de usuario. Esta evolución no ha escapado a diseñadores y fabricantes de móviles, que han seguido muy de cerca las evoluciones en este aspecto. Desde los primeros modelos con pantallas monocromo y menús lineales, pasando por la llegada del color, que incrementó la demanda de capacidades gráficas, incluida la reproducción de fotografías. El aumento de tamaño en la pantalla fue una consecuencia casi inmediata, haciendo que la interfaz pasase de un modelo basado en texto a uno más gráfico. Sin embargo, no basta con llenar la pantalla de iconos y hacer que los menús tengan animaciones. Lo importante es apoyarse en esas nuevas posibilidades para hacer que la experiencia del usuario sea lo más grata y satisfactoria posible. El mayor desafío en el mercado es cómo agregar toda la funcionalidad que se desea cuando el espacio en pantalla sigue siendo bastante pequeño en relación al de un PC convencional. Por ello, a la hora de pensar en una nueva aplicación 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 aplicación. Conectividad Otro aspecto a tener en cuenta en el desarrollo de aplicaciones es el diseño de servicios Web que sean utilizados desde el móvil. 8

18 Primeramente, hay que considerar las limitaciones tecnológicas que impone el propio dispositivo; algunos terminales no está adaptados a códigos complejos basados en Java Script y muchos no pueden con páginas que pesen mucho. Otra dificultad es conocer en qué tipo de móvil 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. También existen otro tipo de necesidades como pueden ser servicios de localización. Dichos servicios constituyen otra área de soluciones de movilidad que ha evolucionado, expandiéndose a otros sectores, más allá del tradicional y pionero de transporte. En los tiempos actuales cobra especial importancia la relevancia del contexto, donde no sólo interesa dónde se localiza al usuario sino de los servicios que pueden encontrar a su alrededor. Son muchas las soluciones basadas en la localización que están dirigidas a la gestión, control, planificación, seguimiento de recursos, etc... Tradicionalmente se ha asociado este tipo de servicios con el sector transporte pero ahora también permiten ampliarse a sectores como la publicidad o marketing. La apertura de los servicios de localización a múltiples sectores ha dado lugar a la aparición de novedades tecnológicas, nuevos tipos de soluciones y aplicaciones que aprovechan las oportunidades que brinda la localización, como puede ser la geolocalización y las aplicaciones que utilizan estas características. Por último, los servicios de comunicación entre máquinas (M2M) tiene cada vez más aplicaciones y están presentes en numerosos sectores verticales, gracias a los cambios producidos en las tecnologías de red y los dispositivos móviles. La comunicación entre máquinas y dispositivos es algo habitual. Y se utiliza en los ámbitos de telemetría, recogida de datos, control de tráfico, mantenimiento remoto, etc. Actualmente estas tecnologías están revolucionando el mercado. El desarrollo de las redes móviles GPRS y 3G, así como las tecnologías gíreles Bluetooth, WiFi, WiMAX y RFID que permiten establecer enlaces entre máquinas, han potenciado de forma muy importante las aplicaciones de máquina a máquina (M2M). Al igual que el desarrollo en las máquinas y dispositivos, puesto que estos últimos son cada vez más pequeños e inteligentes, formando parte de nuestra vida diaria, con mayores prestaciones, y permitiendo automatizar a través de los mismos, tareas que antes eran inviables. 9

19 Movilidad corporativa Cada vez son más 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 rápida, sencilla y sobre todo, segura es vital para la productividad diaria. Un simple dispositivo móvil 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 movilización de ERP s y CRM s hasta herramientas ofimáticas y servicios de correo corporativo Representación del mercado El mercado actual de las TIC está en continua evolución y transformación, y más aún si nos fijamos únicamente en el sector de la telefonía móvil. Es en él, donde se ha llegado a tener más impacto sobre la sociedad y donde se constatado la mayor revolución tecnológica del momento. Los terminales móviles 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 características que ofrecen estos terminales, han hecho que el mercado de la telefonía móvil 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 función de las habilidades de cada fabricante para convencernos de las prestaciones de sus sistemas operativos. El éxito de que un terminal móvil triunfe depende de varios factores relacionados con el sistema operativo que contenga. Estos factores tan importantes pueden ser que el sistema operativo tenga las garantías 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 más vistoso a un terminal de este tipo es que el sistema operativo sea fácil de usar y que posea aplicaciones bastante potentes y necesarias. 10

20 La guerra está abierta y mientras unos intentan mantener la cuota de mercado, otros sin embargo van ganando terreno en este difícil marco en el cual el riesgo de quedarse obsoleto o anticuado puede pagarse caro. Si lo que se quiere son números que reflejen el mercado en la actualidad, según 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 sitúan 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 número mundial de smatphones, es decir, aquellos teléfonos móviles que disponen de un sistema operativo identificable. También cabe destacar que el porcentaje de smartphones representan el 14% del montante de teléfonos móviles de Figura 1. Diagrama de sectores del mercado de la telefonía móvil Para saber cómo se ha hecho fuerte en el mercado iphone, no hace falta más que ver la gráfica en la cual se puede comprobar que este sistema operativo domina prácticamente en el mercado oceánico llegando a tener un porcentaje del 92%. El sistema operativo de Apple no sólo domina el mercado en el continente oceánico, sino que domina también domina en mercados tan competitivos como el americano y europeo. 11

21 Especialmente relevantes son estos datos, pues iphone OS sólo 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 líder indiscutible en el continente africano. En este continente Symbian es el claro dominador del mercado con un 87%. Del mismo modo, Symbian, es también el principal sistema operativo escogido en el continente asiático 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. También hay que destacar que este sistema operativo no tiene representación 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 teléfonos móviles 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 documentación 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 año 2008, en mercados como el americano o el europeo, ha evolucionado desde un 1% que representaba hasta llegar a un 16%. 12

22 Por último, comentar que los sistemas operativos como BlackBerry Os y Windows Mobile, sólo tienen valores especialmente representativos en el mercado americano, donde tienen unos porcentajes pequeños 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 también los representativos de un sector de consumidores con perfil empresarial Comparativa de los diferentes SSOO Antes de pasar a comentar cada uno de los sistemas operativos se realizará una breve comparación introductoria para conocer los aspectos básicos de cada uno de los sistemas operativos que se comentarán en el apartado siguiente y que se pueden encontrar en diferentes dispositivos móviles. 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 telefonía móvil ha logrado mantenerse con en el paso de los años. A lo largo de los años son grandes las desventajas adquiridas frente a sus competidores, dichas características negativas pueden ser su excesivo consumo de recursos, la limitación 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 integración con la versión que corre en cualquier ordenador de sobremesa. En cuanto al abanderado de Nokia, Symbian, intenta mantener el liderazgo que obtuvo en años anteriores. Para volverlo a recuperar, la nueva versión 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 especificación 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 recién 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 fácil integración 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

23 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 continuación se va a mostrar una tabla comparativa con cada una de las características más importantes de las diferentes plataformas que se han descrito en este apartado. Conectividad 3G,GSM,WiFi 3G,GSM,WiF CDMA 3G,GSM,WiFi, CDMA 3G,GSM,WiFi 3G,GSM,WiFi, GPRS Creador Nokia Microsoft RIM Apple Google Disponibilidad de aplicaciones Alta Alta Mediana Alta Mediana /Alta Disponibilidad de App Store Sí Sí Sí Sí Sí Dispositivos compatibles Smartphone / PDA / Smartphone Smartphone Smartphones teléfono Smartphone /netbook Licencia Privada Privada Privada Privada Abierta Multitarea Sí Sí Sí Sí Sí Táctil/Multitáctil Sí Sí Sí Sí Sí Tipo de núcleo Symbian WindowsCE Propio iphoneos Linux Tabla 1. Comparativa de los principales sistemas operativos para dispositivos móviles En el apartado siguiente se va analizar con profundidad todas las cualidades descritas, así como otras más específicas de cada uno de los sistemas operativos enunciados. 14

24 2.3 SSOO móviles Actualmente se pueden encontrar diversos sistemas operativos destinados para dispositivos móviles, a continuación se describirán uno a uno las características principales de cada uno de ellos, así como las posibilidades de poder programar aplicaciones para dichos sistemas Symbian Symbian es uno de los sistemas operativos para móviles más 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 año Aunque en la actualidad la mayoría de los activos pertenecen a Nokia. En 2008, y ante la aparición de iphone y Android en este mercado, la compañía finlandesa decidió liberar el código, mediante licencias Eclipse, y unir las diferentes personalizaciones que habían surgido de Symbian. Symbian empezó con su primera release en el año 1998 y estaba basado en el sistema EPOC hasta la actualidad cuya última versión lanzada que corresponde a la 9.5 en Marzo de Figura 3. Dispositivo con sistema operativo Symbian 15

25 La estructura del sistema operativo Symbian consiste en : Symbian tiene un microkernel, en realidad un nanokernel de tiempo real que permite que existe sólo 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 más 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 criptográficos. 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 genéricos del SSOO al mismo modo que también se incluyen servicios de comunicaciones y conectividad, y de servicios multimedia y gráficos. Por último, destaca la capa de interfaz de usuario. Puesto que en función 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 más utilizadas en smartphones debido principalmente a que su mayor divulgador ha sido Nokia aunque también lo utilizan fabricantes como Siemens, Samsung y Panasonic. Esta serie incluye diferentes versiones de Symbian debidas principalmente a la generación de los terminales, así podemos encontrarnos para teléfonos móviles de primera generación, los cuales se comercializaron con una versión 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 móviles de segunda generación hasta llegar a los terminales de tercera, cuarta y quinta generación que incluyen versiones desde la 9.1 en adelante. Figura 4. Dispositivo N-gage 16

26 - Serie 80: Esta edición va especialmente orientada a dispositivos que disponen de pantalla táctil y funcionalidades multitarea, es decir, tener corriendo varias aplicaciones simultáneamente. Para este tipo de interfaz, utilizan versiones 6 y 7 de Symbian para móviles de primera y segunda generación. - Serie 90: Esta versión sólo 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 móviles de la marca Motorola y Sony Ericsson. La principal característica de esta serie, es que implementan una especie de multitarea virtual, dando la sensación de poder realizar varias acciones simultáneas 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 divulgación sólo se ha realizado por Japón. 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. También hay que tener en cuenta que dichas comodidades que Symbian proporciona se deben en buena medida a la estandarización de los protocolos, las interfaces y la gestión de los servicios de la integración de sus aplicaciones. Además de tener en cuenta como referencia a la hora de desarrollar dicho sistema bases tan importantes como proporcionar la energía, memoria y gestión de entrada y salida de los recursos requeridos específicamente. 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 SDK s para desarrollar aplicaciones para este tipo de sistema operativo, el inconveniente en este punto es que existen entornos de desarrollo y API s diferentes en función de la interfaz sobre la cual se va a implementar la aplicación a realizar. Al mismo tiempo que la firma del software generado. 17

27 2.3.2 Windows Mobile Windows Mobile es el sistema operativo destinado a satisfacer las necesidades de los usuarios de dispositivos móviles; es uno de los sistemas operativos para móviles más veterano que camina por la versión 6.5. Su origen se remonta a las agendas electrónicas denominadas Pocket PC, aunque luego se adaptó ante la mejora de prestaciones de los teléfonos. Su diseño proviene de Microsoft y representa la evolución de la primera plataforma conocida que fue Windows CE. Con el desarrollo de este sistema operativo, Microsoft busca un sistema operativo móvil capaz de asegurar flexibilidad, productividad y usabilidad. Estos tres objetivos se alcanzan haciéndolo semejante en cuanto a interfaz se refiere, a un Windows normal y corriente que se ejecuta en cualquier PC, pero el diseño 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 gestión de procesos e hilos de ejecución, 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 más exigentes. Figura 5.Dispositivos con Windows Mobile Otro punto importante de Windows Mobile es su compatibilidad con los estándares de correo electrónico. Esto supone una mayor facilidad de adaptación de las aplicaciones y familiarización por parte del usuario con ellas. Microsoft dispone de versiones de Office, Outlook, Internet Explorer o Windows Media Player para esta plataforma. Además en el campo de la ofimática, también ofrece una compatibilidad de esta plataforma con la suite Office, permitiendo de esta manera poder acceder a la visualización o edición 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

28 Esta integración y compatibilidad permite a los usuarios disfrutar de una experiencia igual o al menos similar a la que están habitualmente acostumbrados en su PC. La estructura básica de este tipo de sistema operativo, es la siguiente: OEM Layer: Esta es la capa situada en el más bajo nivel, de modo que se sitúa entre el hardware del dispositivo móvil y entre el kernel del sistema operativo. Y su funcionalidad básica 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 sitúa el kernel del sistema operativo y donde también residen todas las bibliotecas de comunicaciones, el gestor gráfico, 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 SDK s 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 más pequeño 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 restricción 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 código nativo, es decir, código C++, de manera que se pueden utilizar las API s de Windows Mobile, y a la vez permite que el código sea mucho más rápido que de la otra. La segunda forma de poder desarrollar aplicaciones en Windows Mobile, es la de poder programar aplicaciones en código administrado, utilizando de esta manera las clases de.net Compact Framework. Aunque las aplicaciones sean más extensas, son más sencillas de programar pero de esta manera no se permite el acceso a algunas características del hardware que sólo pueden accederse desde el código nativo. 19

29 En síntesis, es muchísimo más sencillo programar desde el Compact Framework, puesto que el tamaño que ocupe una aplicación no es tan importante como la rapidez, y cómo pueden existir partes críticas del código que pueden desarrollarse sólo en código nativo, por tanto aquellas partes difíciles se dejan en código nativo y el resto desde el administrado. Este sistema operativo se puede encontrar en marcas como HTC, Samsung, LG o Sony Ericsson iphone En Junio de 2007, Apple lanzó su ansiado teléfono. Acostumbrados a revolucionar los diferentes ámbitos en los mercados en los que participa este ente. El iphone prometía cambiar el panorama en cuanto a los dispositivos móviles y ha conseguido una importante penetración en el mercado. Figura 6. iphone El teléfono 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 atención gracias a su sistema patentado de manejo mediante una pantalla multitáctil que no requiere de ningún lápiz óptico. La usabilidad y su atractivo diseño se contraponen a carencias como que no reproduzca vídeos en flash (excepto si se libera e instala alguna aplicación específica), la imposibilidad de que las aplicaciones trabajen en un segundo plano simultáneo, a diferencia de lo que ocurre en las demás plataformas, y a configuraciones más restrictivas, que restan libertad al usuario. Resulta apropiado para disfrutar del ocio multimedia: escuchar música, ver vídeos 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 más, 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 táctil no resulta cómoda para escribir mensajes, correos electrónicos o para editar archivos de texto. 20

30 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 fácil acceso a las aplicaciones, además de la mencionada pantalla táctil que no necesita utilizar ningún puntero o lapicero, al mismo tiempo que en sus últimas versiones permite personalizar la interfaz. Técnicamente 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 más bajo, está la capa del núcleo del sistema operativo, sobre ésta se coloca una capa de servicios principales, y por último las capas de medios de comunicación 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 táctil. A continuación se va a comentar detalladamente cada una de las capas que lo conforma: Figura 7. Estructura iphone OS Capa de núcleo de sistema operativo o Core OS: Es la primera capa del sistema operativo, y es donde residen los pilares básicos 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 gestión de energía, seguridad, certificados y sockets. 21

31 Capa de servicios principales o Core Services: La capa de servicios principales, está situada por encima de la capa de núcleo y en ella se encuentran los servicios básicos 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 comunicación o Media: Por encima de la capa de los servicios principales del iphone OSX reside la capa de servicios de comunicación sobre la cual se otorga toda la responsabilidad de la gestión multimedia, bien sean gráficos, audio, videos, etc En ésta residen todo tipo de manejadores de audio, reproductores de vídeo, manejadores de archivos fotográficos o documentos, etc También maneja las bibliotecas necesarias para dibujar 2D y 3D. Además incluye lo necesario para poder programar en C con soporte a tecnologías como opengl-es, Quartz y CoreAudio. En último lugar se sitúa 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 diálogo, vistas y diversos controladores multi touch. También se pueden acceder a las fotos, los contactos, el acelerómetro, Vista la estructura del sistema operativo del iphone, existe otra característica existe en estos dispositivos, y es que tanto el iphone como los itouch o ipad utilizan procesadores ARM en contraposición a los x86 que se utilizan en las versiones de sistemas operativos destinadas para PC s. Este hecho desemboca en que cualquier aplicación probada y ejecutada en cualquier Mac OSX no se puede ejecutar en iphone OS. Entonces, toda aquella aplicación que se desee que funcione dentro de un iphone o similares, tiene que haber sido compilada y escrita para la disposición ARM y hipen OS. Al igual que una aplicación debe ser creada para una arquitectura específica, otra desventaja que muestra iphone OS, es que no se permite más de una aplicación ejecutándose 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 batería, todo ello a cambio de que los programadores vuelvan a los tiempos de la multitarea cooperativa. También se debe garantizar el buen funcionamiento de la aplicación cuando otra aplicación reemplace su lugar y que tampoco se queden a la espera de algún evento por un tiempo indefinido. Aunque en la última versión de iphone (4.0) dicho problema se solventa y permite la multitarea. 22

32 La única manera de instalar legalmente un programa en iphone es a través de la AppStore. El desarrollador envía la aplicación finalizada a Apple, quien decide si la publica o no, basándose 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, quién puede distribuir las aplicaciones y qué puede hacer el usuario con el dispositivo móvil. Como se ha comentado antes, el desarrollo de aplicaciones para el iphone no es de fácil acceso debido a las políticas establecidas por Apple, que en cierta manera son restrictivas o arancelarias, dificultando la propagación entre desarrolladores y no proporcionado API s 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 aplicación 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 documentación 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 próxima a los 100 dólares se obtiene el derecho a ejecutar la aplicación que se haya elaborado en el propio iphone. 3º) Obtener certificados: como por defecto sólo se pueden ejecutar aplicaciones firmadas por Apple, y como cada vez que se hagan modificaciones en el código programado, no se lo esté enviando constantemente los programadores para poder probarlo. Se crea un perfil con el identificador del teléfono, y además se debe obtener otro certificado para poder firmar las aplicaciones. 23

33 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 tenía 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 código. Y si por último se desea que la aplicación sea distribuida para el resto de usuarios del iphone, se debe de obtener otra certificación y esperar la verificación por parte de Apple y una vez que la aplicación sea aprobada, esperar a que los usuarios quieran utilizar la aplicación desarrollada Blackberry BlackBerry es el sistema operativo de los móviles 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 también soporta en la actualidad las pantallas táctiles 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 mensajería instantánea de fondo, mientras navegamos por Internet o redactamos un correo electrónico. Figura 8. Dispositivo BlackBerry La capacidad de trabajar en entornos multitarea con eficiencia es algo que se valora bastante al realizar la elección sobre qué tipo de terminal móvil a utilizar, y muchos usuarios demandan la productividad que se consigue al utilizar varias aplicaciones al mismo tiempo. 24

34 Con BlackBerry, no solo conseguimos una productividad efectiva, sino que el sistema se vuelve más dinámico al realizar notificaciones y operaciones en tiempo real mientras realizamos otras tareas. También ofrece amplias garantías a las demandas de que los sistemas operativos ofrecieran servicios de correo electrónico, amén de que fuera fácil de usar y rápido. Estas demandas se ven satisfechas puesto que hoy días 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 también proveedor de servicios de correo electrónico 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 electrónico mediante la tecnología push la cual permite a los usuarios poder seguir conectados al correo electrónico y a muchas aplicaciones corporativas. Dicha tecnología consiste principalmente en que los mensajes se reciben constantemente, sin necesidad de que el usuario tenga que realizar una conexión y comenzar a descargarlos. Así, en un dispositivo BlackBerry es posible redactar, enviar y recibir todo tipo de mensajes de correo electrónico, al igual que en un PC cualquiera. Destaca por la forma en que integra el correo electrónico y envía los mensajes según 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 más lento que el de sus rivales y no tiene tanta variedad de software de terceros disponible como los demás, y de que no ofrece conectividad vía wifi pero sí dispone de las aplicaciones ofimáticas principales lo cual lo hacer ser la mejor elección y más competitivo para entornos laborales. 25

35 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 estándares de Java, concretamente Java ME. De lo que se puede extraer de la información que puede ser accesible desde la web para saber más o menos sobre cómo es este sistema operativo se puede tener constancia que la configuración utilizada por BlackBerry, es decir, el conjunto de clases básicas destinadas a conformar el corazón de la aplicación es CLDC (Connected Limited Device Configuration). Este tipo de configuración va enfocada a todos aquellos dispositivos que tengan toda clase de restricciones de procesamiento y memoria. Sabiendo la configuración escogida, se puede saber la máquina virtual utilizada, que es la CVM (Compact Virtual Machine). Dicha máquina virtual, tiene las mismas características que la JVM que se utiliza normalmente para JSE, sin embargo la CVM está orientada para dispositivos electrónicos 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 mayoría 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 técnica drag and drop para así poder acceder a datos empresariales vía webservice. También desde Blackberry se proporciona gratuitamente una JDE, concretamente el BlackBerry Java Development Enviroment, desde este IDE se proporciona el acceso a las API s de Java ME como a las propias de BlackBerry, además de incluir diversos simuladores de este tipo de dispositivos desde donde se puede probar el código desarrollado. El único inconveniente a la hora de desarrollar para BlackBerry, es que se debe de estar registrado para poder programar y que el código que se quiere desplegar dentro de un terminal de este tipo tiene que estar previamente firmado por RIM. 26

36 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 introducción 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 además 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 teléfonos móviles 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 máquina virtual diseñada a medida para este sistema. Cuenta con el aval de la compañía Google. En el aspecto técnico destaca su creación 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 ejecución. Figura 10. Android En síntesis, la visión que se intenta tener de Android, es la de una misma plataforma que reúne todos los elementos que permitan desarrollar, controlar y aprovechar las funcionalidades que ofrecen los dispositivos móviles. Del mismo modo que también se busca que todas las aplicaciones sean portables, reutilizables y fáciles de desarrollar. Sólo recordar que en apartados venideros se hablará con mayor pausa y detenimiento sobre las características técnicas que Android ofrece, así como de las facilidades que se ofrecen para poder desarrollar aplicaciones en el sistema operativo de Google. 27

37 Capítulo 3 El sistema Operativo Android 3.1 Introducción Android es una pila de software de código abierto que incluye un sistema operativo, middleware, y aplicaciones clave con una series de librerías API para poder desarrollar aplicaciones en terminales móviles a las cuales se las pueden dar la forma y el funcionamiento específico para que pueda funcionar en teléfonos móviles. Hasta hace poco, poder desarrollar aplicaciones para teléfonos móviles era dificilísimo 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, haciéndolas prevalecer frente a aplicaciones que se hayan desarrollado por terceras partes. Esto suponía 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 distinción ni discriminación. Figura 11. Icono de Android Históricamente, los desarrolladores codificaban sus aplicaciones en lenguajes de bajo nivel, para lo que era necesario entender el hardware específico sobre el que iban a trabajar, y generalmente solían 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 móviles, han hecho que se pueda programar con un nivel de abstracción para que el programador se aísle de la capa hardware y no estar pendiente de ella. 28

38 Entre las características del sistema operativo Android destacamos: Todas sus aplicaciones se programan en lenguaje Java y son ejecutadas en una máquina virtual específica diseñada para esta plataforma. Todo su software se ha realizado bajo una licencia Apache, de modo que el código es de libre distribución. También 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, añadir nuevas funcionalidades y no tener que compartir el código 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 adhesión es que dichas compañías podrán modificar el código y desarrollar todo tipo de aplicaciones o trabajos sin la necesidad de verse obligados a compartir todo la elaboración producida. De todas formas, la licencia Apache propuesta por Android, permite que cualquier persona se pueda descargar, acceder al código 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 IDE s más famosos y conocidos como es Eclipse. Además 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 móvil. 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 aplicación que se pueda crear sea portable, fácil de desarrollar y reutilizable. Con todo ello, se intenta buscar un estándar 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 aplicación con las aplicaciones Web de Google. 29

39 3.2 Estructura de Android El stack de software a grandes rasgos, está formado por: un núcleo de Linux, una serie de librerías escritas en código C/C++,un entorno de ejecución propio (Android Run Time), un framework de aplicaciones y las propias aplicaciones. A continuación se puede ver el esqueleto de este sistema operativo, y debajo de la misma se explicarán cada una de las partes que lo conforman. Figura 12.Estructura del sistema operativo Android La estructura del sistema operativo es la siguiente: El núcleo de Linux: es la capa más baja situada y es donde se sitúan los servicios básicos, es decir, en esta capa se establecen los drivers del hardware, la gestión de procesos y memoria, la seguridad, y las gestiones de redes y de energía. Todo ello está manejado por un kernel de Linux con versión 2.6, y cuya función principal es abstraer a las diferentes capas sucesivas que soporta la estructura de Android del hardware de la máquina. Aparte de las propiedades que puede dar dicho kernel de Linux, también hay que decir que precisamente dicho núcleo, 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

40 Figura 13.Icono licencia Apache Por encima del núcleo de Android se establecen una serie de librerías escritas en lenguaje C/C++, y al igual que el núcleo, estas librerías son iguales de básicas. Dentro de las librerías, las más importantes son las siguientes: o Libc: esta librería incluye todas las cabeceras y funciones según el estándar de C. o SQLite: es la librería que implementa un motor de base de datos. SQLite es software libre, por lo tanto el código fuente es de dominio público. o Surface Manager (Administrador de Superficies): es la que realiza toda la gestión del acceso a los subsistemas de pantallas. Además es la encargada de gestionar todas aquellas pantallas de las diferentes aplicaciones activas que se encuentren en ese preciso instante. o SSL & WebKit: ambas librerías 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 librería es para poder reproducir tanto archivos de audio o video, así como los archivos fotográficos. Cabe destacar que en esta librería se proporcionan los códecs necesarios para poder reproducir los formatos más populares. o OpenGL / ES y SGL: la última libre, la SGL, es la encargada de proporcionar el motor gráfico de 2D. Sin embargo, la OpenGL / ES maneja los gráficos 3D en el caso de que el hardware del teléfono móvil lo disponga. o FreeType: es la encargada de la renderización de fuentes, para mapas de bits y vectores. 31

41 La siguiente capa, y que se sitúa en el mismo nivel que la anterior, es el entorno de ejecución de Android, o la Android Run Time. Android incluye un set de librerías base que proveen la mayor parte de las funcionalidades disponibles en las librerías base del lenguaje de programación Java. Todas las aplicaciones se programan en Java y para poder ejecutarlas se ha creado específicamente para Android una máquina virtual, la Dalvik Virtual Machine. Lo particular de esta máquina virtual, es que ha sido especialmente optimizada y adaptada para las características de cualquier teléfono móvil. Cada aplicación Android corre su propio proceso, con su propia instancia en la máquina virtual Dalvik. Esta máquina virtual, ha sido escrita de forma que un dispositivo puede correr múltiples máquinas 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 están optimizados para un uso mínimo de la memoria y pensados para procesadores pequeños. Dicha máquina 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 máquina virtual, se va a explicar un poco como se realiza todo el proceso. Una vez que se genera el bytecode de la aplicación escrita en Java, es decir, una vez que obtenemos los.class la máquina virtual genera un.dex con toda la agregación de estos códigos objeto, por hacer un símil sencillo, un.dex podría asemejarse a un archivo jar. La penúltima 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 abstracción del acceso al hardware y la gestión de la interfaz del usuario y de los recursos de la aplicación. Los desarrolladores tienen acceso a las mismas API s que las aplicaciones base, con el único objetivo de poder reutilizar los componentes utilizados para la aplicación realizada. En cuanto a las API s más conocidas son las siguientes: o Administrador de Teléfono: destinada para que el desarrollador pueda interactuar con las funcionalidades del teléfono, como son los mensajes SMS, llamadas, o Proveedor de Contenidos: con esta API, se pueden compartir los datos de cualquier aplicación. 32

42 o Administrador de Ubicaciones: permite que las aplicaciones obtengan información sobre la localización 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 API s y bajo el mismo lenguaje de programación, Java. 33

43 3.3 Estructura de una aplicación Android A la hora de construir una aplicación en Android, hay que tener en cuenta que dicha aplicación puede estar compuesta de un tipo específico de componente o de la combinación de ambos. Estos componentes son los que a la postre van a identificar y caracterizar a la aplicación que se llegue a crear, ya que en función de éstos la clase que se desarrolle heredará las características del componente, y por lo tanto pueden existir diferentes formas de comportamiento, en cuanto a la aplicación se refiere, según 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 más importante en cualquier aplicación Android, debido principalmente a que es la capa de presentación para todo tipo de aplicación. Cualquier pantalla que se muestre al usuario, será una extensión de la clase Activity. Y para dicha presentación 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 interactúa para nada con el usuario, y es completamente invisible a los ojos del usuario. Se puede decir prácticamente, 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 aplicación. También permiten que cualquier aplicación almacenen los datos en un fichero o cualquier otro formato. La gran ventaja que presenta este tipo de componente, es que permite a cualquier aplicación acceder a los datos que están siendo utilizados por otras aplicaciones a la vez. 34

44 Intent Un Intent, es un simple mensaje, que se utiliza para determinar el objetivo de la aplicación, es decir, su propósito. 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 más 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 aplicación que se crea, está a la escucha de cualquier Intent proveniente de distintas aplicaciones. Al utilizar este componente, la aplicación puede empezar automáticamente y responder al Intent que está a la escucha. Se puede decir que la aplicación está a la escucha de un evento para llevar a cabo la acción 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 gestión de las llamadas entrantes que recibe el dispositivo móvil. 35

45 3.4 Ciclo de vida de una aplicación 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 aplicación para poder gestionar los flujos de ésta en función de su estado. A la hora de ejecutar una aplicación 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 función de los recursos que la aplicación necesite. Android aísla totalmente al usuario del dispositivo de la labor que el sistema operativo está realizando para poder ejecutar la aplicación que el poseedor del teléfono desee. Android ejecutará tantos procesos en función de los recursos que tenga disponibles, los cuales pueden estar a la vez formados por más 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 aplicación están al tanto de los cambios de estado que ésta pueda generar. De modo que durante la ejecución 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 más conocido de ciclo de vida, es el del componente Activity, cuyo diagrama es el siguiente: Figura 14.Ciclo de vida componente Activity 36

46 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 aplicación. 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 atención por parte del sistema. onresume: Al igual que el estado onpause, ambos estados acotan el ciclo de vida de la actividad en función del foco de atención dispensado a la aplicación Prioridad de procesos Una vez visto el ciclo de vida de una aplicación en Android, y concretamente cuando una aplicación se crea, su flujo concluye cuando ésta finalice o cuando otra actividad necesite los recursos que la aplicación está consumiendo. La preferencia por parte de Android a la hora de priorizar determinadas aplicaciones en función de otras se debe en gran parte al tipo de componente que lo forma, ya que la importancia de éstos una aplicación puede ser más prioritaria respecto de otra. A la hora de programar una aplicación hay que tener en cuenta la prioridad a la cual se la va a asignar puesto que en función de la prioridad la aplicación puede morir durante un proceso de ejecución 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 crítica. Son aquellos que están albergados en aplicaciones que están continuamente estableciendo contacto con el usuario, y que generalmente son liquidados en última estancia. 37

47 Este tipo de prioridad corresponde a: Activities que se encuentran en un estado activo y que están respondiendo continuamente a eventos del usuario. Activities, Services o Broadcast Recivers, que se están ejecutando cuando reciben un evento. Componentes Services que se ejecutan tras un evento proveniente de una aplicación 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 están al mando. En extraños casos son matadas. 3. Procesos de servicio. Son aquellas aplicaciones cuyo principal componente de aplicación es un Service, y tienen menor prioridad que un Activity, en gran parte a que este tipo de procesos no están 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 ningún servicio. 5. Procesos vacíos. Son aquellos procesos que se mantienen en cache para un posterior relanzamiento. 38

48 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 continuación es necesario disponer de una JDK, preferiblemente 1.5 o 1.6 y disponer a su vez del IDE de desarrollo Java Eclipse, necesariamente versión 3.4 o superior. Procedimientos para instalar las herramientas 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: Y una vez allí, nos descargamos la SDK en función de nuestro sistema operativo, bien puede ser Windows, Mac o Linux. A continuación, descomprimimos el archivo en cuestión 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 botón derecho sobre el icono de MiPC y nos dirigimos a Propiedades->Variables de entorno->variables del sistema 39

49 Figura 15. Configuración de la variable del sistema Y dentro de la opción 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. Configuración de la SDK como Path del sistema Si por el contrario disponemos de un sistema operativo Linux, sólo hace falta ejecutar en la línea de comandos (en modo administrador) y editar el path en el archivo ~/.bash_proile o ~/.bashrc y a continuación: Export PATH=${PATH}:<tu-sdk-dir>/tools Concluido el proceso de instalación de la SDK, se procede a la instalación del plugin necesario para Eclipse. 40

50 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 pestaña Help->Install New Software y en la ventana nueva que aparece, pulsar el botón 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 botón Select All y pulsar el botón Next. Figura 17. Configuración del plugin de Android en Eclipse I Figura 18. Configuración del repositorio ADT 41

51 Figura 19. Configuración 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 Completar la instalación Tras reiniciar Eclipse, los siguientes pasos a realizar son: Referenciar SDK Para poder crear proyecto, debemos referenciar la SDK en la pestaña Windows- >Preferentes->Android->Browse y buscar el path sobre el que se encuentra la SDK. Figura 20. Configuración del path de la SDK de Android en Eclipse Y en último lugar pulsar Apply y Ok. 42

52 Configurar emulador AVD y actualizar plugin Para finalizar la configuración de la SDK en Eclipse, se procederá a la descripción de la configuración 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 continuación, sobre el campo Virtual Devices pulsar el botón New, y aparecerá la siguiente ventana. Figura 22. Configuración del emulador de Android En la figura mostrada, es sobre la cual se creará el emulador Android correspondiente, dónde el principal hincapié es en el campo target, puesto que se le asigna la SDK correspondiente. 43

53 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 botón Install Selected. Comenzará un proceso de actualización de la SDK. Figura 23. Actualizador de versiones 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 máquina virtual destinada a ejecutar las aplicaciones de Android, es por ello la manera más cercana de poder conocer cómo sería un dispositivo móvil con dicho sistema operativo. Éste a su vez, dispone de una variedad de posibles maneras de mostrarse como interfaz gráfica, es decir, dispone de distintos tamaños de pantalla, resoluciones. Además de proveer de una buena conexión a Internet, en cuanto a rapidez y latencia respecto a las aplicaciones, y de permitir recibir llamadas y SMS, obviamente simulados. Como añadido a las características anteriormente habladas, existe una funcionalidad que permite al emulador de Android contactar y realizar operaciones mediante una conexión Telnet. A través del puerto 5554 se puede entablar todo tipo de órdenes con el emulador. También existen otro tipo de funcionalidades no menos importantes pero que merecen la pena describirlas. 44

54 Otras funcionalidades del emulador Dentro del emulador, existe la posibilidad de poder utilizar imágenes 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 sólo son de lectura y obtienen información sobre la manera de ejecutarse éste. Imagen de runtime: a diferencia de las anteriores, éstas permiten escribir además de la posibilidad de leer de la imagen correspondiente. Y principalmente se utilizan para guardar datos de la sesión, como pueden ser aplicaciones instaladas. Al igual que las imágenes que simulan almacenamientos extraíbles. Imagen temporal: la característica principal de estas imágenes es que al acabar la ejecución, 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 Dalvik Debug Monitor Service Aparte del emulador, existen otras herramientas que facilitan la programación de cualquier aplicación 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 aplicación, cómo 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 aplicación y conocer en todo momento que está sucediendo dentro de los entresijos de la aplicación que se está ejecutando. De esta manera, con esta herramienta, se tiene una versión fidedigna de la ejecución de la aplicación, porque se pueden acceder a los log, conocer de manera primordial la gestión de recursos, y la simulación de envío de SMS así como de llamadas entrantes y geolocalización. 45

55 Para poder acceder a esta herramienta basta con pulsar la pestaña Window-> Open Perspectiva-> DDMS. Y aparecerá una perspectiva similar a la siguiente imagen. Figura 24. Imagen DDMS Android Debug Bridge Para finalizar, la Android Debug Bridge o ADB, es una herramienta que mediante una arquitectura cliente servidor permite conectarte desde tu máquina 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 línea 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 más comunes son los siguientes: adb shell: con este comando se puede acceder al directorio root del terminal y desde ese punto se podrán 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 máquina. 46

56 adb pull [remoto][local]: el comando contrario al anterior, con él, nos descargamos archivos desde el dispositivo a la máquina. adb install [path/aplicacion.apk]: con este comando, se permite instalar aplicaciones en el dispositivo, indicándole sólo la ruta desde donde se encuentra el paquete compilado de la aplicación(.apk). adb reboot: comando con el que se reinicia el emulador. 47

57 Capítulo 4 Creación de una aplicación Android En este capítulo se explica la forma de crear aplicaciones en el sistema operativo Android. En primer lugar se indicará cómo 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 básicos de la programación en Android, así como de su estructura para después finalizar con la programación de aplicaciones con mayor dificultad, cuyas componentes gráficas son muy avanzadas. 4.1 Hola Mundo En este apartado se presenta cómo programar en Android mediante la creación de una aplicación HolaMundo para que de esta manera se tenga una primera toma de contacto con el nuevo entorno de desarrollo. En primer lugar se explicará cómo crear un nuevo proyecto en Android y posteriormente, como poder crear una pequeña interfaz de usuario, para que finalmente poder ejecutar el programa 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 pestaña File->New->Android Project. - Después aparecerá una pantalla, tal y como se muestra a continuación Figura 25. Creación de un nuevo proyecto Android I 48

58 Figura 26. Creación 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 (versión) 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 teléfono móvil como nombre de la aplicación. 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 botón Finish aparecerá la estructura jerárquica 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 programación 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

59 Si se profundiza dentro del primer archivo Java, se podrá ver un código similar al que se muestra a continuación. package paquete.holamundo; import android.app.activity; import android.os.bundle; public class HolaMundo extends Activity { /** Called when the activity is first created. public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); } } Código 1. Programa HolaMundo en Android Como se puede observar, la clase HolaMundo hereda de la clase Activity que anteriormente se ha comentado, la principal característica de esta clase es que interactúa 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 método setcontentview accede al xml main el cual contiene toda la estructura de cómo 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" /> </LinearLayout> Código 2. Interfaz de usuario del programa HolaMundo 50

60 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 gráfico 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 ejecución del programa para poder ver su finalización. Para ello se pincha en la pestaña Run->Run Configurations y aparecerá una pantalla similar a la que aparece a continuación. Figura 27. Configuración del proyecto Android a ejecutar I Dentro de esta pantalla, en el apartado Android Application se pulsa con el ratón el botón derecho y escoger opción New, una vez elegida dicha opción se mostrará la siguiente imagen, desde la cual se debe seleccionar que proyecto Android se desea ejecutar. De tal modo que pulsando en el botón Browse se lanzará una nueva ventana desde donde se podrá escoger el proyecto en cuestión. Para este caso HolaMundo. 51

61 Figura 28. Configuración del proyecto Android a ejecutar II Configurado el proyecto, solamente queda cerciorarse dentro de la pestaña Target que se ha seleccionado por defecto el emulador previamente configurado. Tras este paso sólo queda pulsar el botón Apply y el botón Run y a continuación se lanzará el emulador. Figura 29. Ejecución del programa HolaMundo 52

62 4.2 Organización de una aplicación Android Partiendo del ejemplo HolaMundo, se enseña cómo está formada una aplicación Android por dentro, es decir, la estructura jerárquica de archivos y carpetas de la que lo forman. Aunque no forma parte directa de la programación de la aplicación. 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 aplicación así como de lo que hay que realizar en cada momento. A continuación, se especificará y explicará el resto de carpetas que conforman la totalidad de una aplicación Android. Las más 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 aplicación Android Manifest Cada proyecto Android, incluye un archivo, AndroidManifest.xml, almacenado en la carpeta raíz del proyecto y donde se define: la estructura de los componentes que forman la aplicación, los permisos que la aplicación puede tener, las políticas 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 aplicación y permisos e Intent Filters con los que se determina cómo interactúan cada uno de ellos o con el resto de aplicaciones. En la estructura jerárquica 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 aplicación 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 <activity android:name=".holamundo" <intent-filter> <action android:name="android.intent.action.main" /> <category android:name="android.intent.category.launcher" /> </intent-filter> </activity> </application> </manifest> Código 3. Archivo AndroidManifest.xml 53

63 Los distintos tipos de nodos son: Nodo <application> Como se puede ver en el código del archivo AndroidManifest.xml aparece el nodo <application>. Dicho archivo sólo podrá contener un nodo de aplicación. Dentro de este nodo, se indican atributos y datos a los que accede, necesarios en la aplicación como pueden ser el icono, el título y tema. <application [... nodos de aplicación...] </application> Código 4. Nodo application Como se indica en la parte de código anteriormente mostrado, dentro de este nodo pueden existir nodos internos en los cuales se indican precisamente los componentes que dan forma a la aplicación; los diferentes nodos internos que pueden ser son los siguientes: <activity> nodo requerido por tantas Activities que compongan la aplicación. Para referenciar la clase en la cual se desarrolla la totalidad de la ejecución se realiza mediante el atributo android:name. Al igual que la etiqueta que obtendrá la actividad al lanzarse android:label. Dentro de este nodo también 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, también es aplicado a los componentes Service y Broadcast Reciver. La principal funcionalidad que tiene este nodo, es determinar cuándo y dónde se ejecuta la Activity, las acciones que puede soportar y la categoría que ostenta dicha actividad. Estas funcionalidades son: <action>: que indica que acción 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

64 <activity android:name=".holamundo" <intent-filter> <action android:name="android.intent.action.main" /> <category android:name="android.intent.category.launcher"/> </intent-filter> </activity> Código 5. Nodo interno activity <service>: dentro del nodo de aplicación, nos podemos encontrar también con el nodo interno que indica que la aplicación pueda tener un componente Service. <provider>: este nodo es utilizado cada vez que la aplicación contenga como componente un Content Provider y que son utilizados para la gestión 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 aplicación está a la espera de la llegada de eventos Nodo <uses-permission> Dentro de este nodo se declaran los permisos necesarios para que la aplicación 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 aplicación 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> Código 6. Nodo uses-permission Nodo <permision> Con el siguiente nodo, se garantiza el acceso restringido a determinados componentes que utilice la aplicación Nodo <instrumentation> Dicho nodo provee de una serie de recursos desde la cual se puede probar la funcionalidad de la aplicación. 55

65 4.2.2 Carpeta src Dentro del workspace de la aplicación aparece una carpeta llamada src, en la cual se alberga todo el código Java fuente que es necesario para arrancar la aplicación. Aplicándolo al ejemplo del programa HolaMundo, en esta carpeta se encontrará el paquete en el cual se encuentra el HolaMundo.java Carpeta res En esta carpeta se guardan todos aquellos recursos que son utilizados por el proyecto en cuestión. 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 código de la aplicación. La mayoría de los recursos que quedan en un plano exterior al código 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 aplicación. 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 aplicación. Estas animaciones pueden consistir a su vez de animaciones que pueden rotarse, girarse, etc.. dentro de la aplicación o de animaciones en las que se muestra una secuencia de frames. Drawable: esta carpeta guarda todas aquellas imágenes que son utilizadas por la aplicación. Los formatos permitidos son PNG, JPG y GIF. En las últimas versiones de Android esta carpeta se subdivide en 3 subcarpetas, en función de la resolución de las imágenes empleadas. De forma que dichas subcarpetas corresponden con una resolución alta, media y baja. Layout: dentro de la carpeta layout, es donde reside el archivo XML desde el cual se define la capa de presentación para la interfaz de usuario de una Acticity. 56

66 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 código. Raw: por último, la carpeta raw que es el lugar donde se sitúan todos aquellos recursos que nos son necesarios que sean compilados como en los casos anteriores y que son añadidos sin procesar. Generalmente suelen ser archivos de audio y vídeo Carpeta gen En la carpeta gen, se encontrarán todos los archivos Java generados por Android. En cada proyecto Android, una vez que queda compilado, se genera automáticamente un fichero llamado R.java desde el cual se aportan todas las referencias a las variables o recursos empleados en la aplicación. La principal ventaja que aporta este archivo, es poder utilizar todos los recursos disponibles desde el código. En el código 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 sería de la siguiente manera R.layout.main. Esta configuración sirve para acceder a variables o todo tipo de recursos 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 aplicación compilada, o en simples palabras el código binario de la aplicación Android apk. 57

67 4.3 Interfaz de usuario en Android En el siguiente apartado, se aclarará cómo crear una interfaz de usuario en Android, aparte de conocer los diferentes elementos que la pueden componer y la diferente terminología que se usa para la creación de la interfaz. A la hora de crear una aplicación 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 aplicación. 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 asignación es la que se realiza cuando en el método setcontentview()se le asigna el fichero XML que se encuentra dentro de la carpeta de recursos (res) en la subcarpeta (layout). A continuación se expondrán 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 View La clase View es la unidad básica donde se construye la interfaz de usuario y donde se forman todos aquellos elementos visuales que el usuario tiene sobre una aplicación en Android. En relación con lo descrito, todo componente visual en Android hereda de la clase View también llamadosviews. View ViewGroup Control Layout Widget Figura 30. Estructura jerárquica de la clase View En la figura anterior se puede comprobar dicha jerarquía que se forma en torno a la clase View. 58

68 De los elementos que descienden de View se expondrán los Widgets, ViewGroup y otros que forman parte de la interfaz de usuario pero que por ello no son menos importantes Widgets Se comentará los diferentes Widgets más habituales en la programación de una interfaz de usuario y la forma en la cual se pueden crear y añadir a la interfaz. Los principales Widgets son: TextView: es la forma más 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 código. <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" /> Código 7. Creación de un elemento TextView En el correspondiente código, 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 código aparecen las líneas 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 máximo posible y para el segundo caso, que ocupe el mínimo exigido. Además 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

69 EditText: con este widget se puede crear una caja de texto. El siguiente código 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" /> Código 8. Creación de un elemento EditText La parte visual de la misma sería la siguiente: Figura 31. Salida por pantalla de un elemento EditText ListView: Con este elemento, se puede crear y gestionar diferentes Views mostrándolos 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 código muestra la parte desarrollada en el archivo main.xml. <ListView android:layout_width="fill_parent" android:layout_height="wrap_content" /> Código 9. Creación de un elemento ListView Para que se pueda utilizar cualquier elemento de la interfaz dentro del código 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

70 En el siguiente código Java se comprueba cómo 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 EditText edittext; private ListView lw; private ArrayList<String> items; private ArrayAdapter<String> aa; /** Called when the activity is first created. 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() { event) { public boolean onkey(view v, int keycode, KeyEvent 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; } }); Código 10. Construcción de un elemento ListView 61

71 En la siguiente imagen se puede apreciar cómo funciona un componente ListView. Figura 32. Visualización de un elemento ListView Spinner: este elemento es el símil a un combobox. La parte correspondiente al código que se forma en el main.xml es el correspondiente. <Spinner android:layout_width="fill_parent" android:layout_height="wrap_content" android:duplicateparentstate="true" /> Código 11. Creación de un elemento Spinner En el código 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 título del Spinner. 62

72 Además 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> Código 12. Composición de elementos de un Spinner Este archivo arrays.xml es el que se hace falta desde el código Java para incluirlo en el combo o Spinner. En el siguiente código Java se muestra dicha inclusión. public class EjemploCombo extends Activity { private Spinner combo1; private ArrayAdapter adapter1; /** Called when the activity is first created. 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); } } Código 13. Clase Java de creación de elemento Spinner Como se puede apreciar en el código, 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

73 La imagen final que tiene dicho combo es la siguiente: Figura 33. Ejecución de elemento Spinner I Figura 34. Ejecución de elemento Spinner II 64

74 Button: es el widget con el cual se crean botones. El código necesario para crear un botón es el siguiente. <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="botón" /> Código 14. Creación elemento Button La imagen de un botón estándar sería la siguiente: Figura 35. Ejecución elemento Button CheckBox: es un botón especial que tiene doble estado, que indica si está o no chequeado. El código necesario en el archivo main.xml es el siguiente. <CheckBox android:layout_width="wrap_content" android:layout_height="wrap_content" android:checked="true" /> Código 15. Creación elemento CheckBox Lo más destacable es el valor del campo checked cuyo valor es verdadero o falso. Figura 36. Ejecución elemento Checkbox RadioButton: otro tipo especial de botón. <RadioButton android:layout_width="fill_parent" android:layout_height="fill_parent" android:checked="true" /> Código 16. Creación elemento RadioButton La imagen que se obtendría será la siguiente: Figura 37. Ejecución elemento RadioButton 65

75 4.3.2 View Groups La clase View Groups es una extensión de la clase View en la que se pueden incluir múltiples Views. Por así decirlo cada View Group es un contenedor de diversas View. Figura 38. Jerarquía ViewGroup En cada View Group se encargan de asignar el espacio del que disponen para cedérselo a las Views que lo componen. Esta concesión puede ocupar todo el espacio disponible o tan sólo el tamaño mínimo permitido. Un claro ejemplo de ViewGroup, son los Layout Managers, que son a su vez una extensión de la primera clase mencionada y que son designados para controlar las posición de los diversos Views que forman la interfaz. Los principales Layouts son los siguientes: FrameLayout: es el más sencillo de los Layout Managers. La peculiaridad que tiene es que se añaden cada View desde la esquina superior izquierda y superponiéndose el último View encima del anterior. A continuación 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. Después se procederá a la vista de la posterior ejecución en la cual se puede comprobar la superposición de los diversos elementos. 66

76 <?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> Código 17. Composición de un elemento layout FrameLayout Figura 39. Ejecución elemento FrameLayout 67

77 LinearLayout: con este tipo de Layout, se añaden los diferentes Views ordenados de forma seguida y en línea 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 ejecución de este Layout teniendo en cuenta la orientación vertical sería la siguiente: Figura 40. Ejecución elemento LinearLayout I La ejecución de este Layout teniendo en cuenta la orientación horizontal sería la siguiente: Figura 41. Ejecución elemento LinearLayout II 68

78 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 función de otro View. En el siguiente código se puede apreciar como varios de los elementos están dispuestos en función de otros. <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 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" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="2" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="3" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="4" /> </RelativeLayout> Código 18. Creación de un elemento layout RelativeLayout 69

79 La vista final del mismo sería: Figura 42. Ejecución del elemento RelativeLayout TableLayout: para poder añadir los diferentes Views que lo componen, se realiza en forma de filas y columnas. Dicha disposición en filas se puede observar en el siguiente código: <?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> Código 19. Creación de un elemento TableLayout 70

80 La ejecución del mismo sería la siguiente: Figura 43. Ejecución del elemento TableLayout AbsoluteLayout: por último, con este Layout se añaden los sucesivos elementos utilizan coordenadas X e Y En el código siguiente se muestra como quedaría 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> Código 20. Creación del elemento AbsoluteLayout 71

81 La vista final del mismo, sería la que se muestra a continuación: Figura 44. Ejecución del elemento AbsoluteLayout Otros elementos de la interfaz En este punto se dará a conocer otro tipo de elementos que sirven de gran ayuda para la elaboración de la perspectiva del usuario de una aplicación en Android. De los diferentes elementos anexos a los que anteriormente se han visto, destacan principalmente el uso de menús y los mensajes de alerta. Estos elementos facilitan en gran medida la relación que se establece entre usuario y aplicación Menu La Interfaz Menu ofrece una manera de exponer determinadas funciones de la aplicación 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 botón menú. Para la creación de un Menu basta con sobrescribir el método oncreateoptionsmenu, éste recibe un objeto Menu como parámetro, con el que se puede trabajar hasta que se invoque otra vez el mismo método. 72

82 public boolean oncreateoptionsmenu(menu menu) { boolean result = super.oncreateoptionsmenu(menu); } return result; Código 21. Método de creación 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 método 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 unívoco que recibe ese elemento. La labor de identificación es importante, debido a que cuando los diferentes ítems son manejados o gestionados a través del método onoptionsitemselected y para conocer que elemento del menú ha sido pulsado, se realiza mediante este identificador. Por convención, la declaración de los identificadores de los elementos de un menú se realizan como si fueran variables estáticas 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ú. Además cada ítem o elemento puede incluir diversas funcionalidades, que pueden ser las siguientes: Checkbox / RadioButtons: este tipo de opción sólo está disponible y visible en menús que se pueden expandir o en los submenús. En los CheckBox es controlado mediante el método setchecked, el cual previamente se le ha inicializado con el método setcheckeable. Y en cuanto los RadioButtons, se puede asignar a un grupo de ítems dentro de los cuales sólo uno podrá ser pulsado. Este control se realiza mediante el método setgroupcheckeable. Shortcut Keys: utilizando el método setshortcut, asignamos a un ítem la posibilidad de acceder al mismo mediante un procedimiento abreviado de teclas. 73

83 Condensed Titles: esta opción no es visible tanto en los menús que se pueden expandir como en los submenús, y la principal función que se lleva a cabo, es asignar un título a un ítem. Icons: si se quiere asociar a un ítem un icono, con el método seticon, se le asigna una imagen a ese elemento. Esta opción sólo es disponible en los menús de iconos. Menu Item Clic Listener: con el método setonmenuitemclicklistener, se maneja el ítem seleccionado del menú, y realizar las tareas que se crean oportunas. Esta opción es válida, siempre y cuando ese mismo ítem no sea manejado desde el método onoptionsitemselected. Intent: un nuevo Intent se lanza cuando se pulsa el elemento que usa el método setintent, con éste método, 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 métodos anteriormente descritos en el punto anterior, es decir, el onoptionsitemselected y el setonmenuitemclicklistener. Existen tres tipos diferentes de menús: Icon Menu: es el menú de iconos, éste aparece cuando se pulsa el botón menú. Una vez que se pulsa dicha tecla, se despliega un menú que contiene como mucho hasta seis elementos, ya que ante un mayor número 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 más elementos de los soportados. El menú de expansión, 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 algún ítem. 74

84 Para verlo con mayor nitidez, se muestra el consiguiente código Java en el cual se muestra el proceso de creación de los diferentes tipos de menús disponibles, así como de las funcionalidades que pueden tener los elementos que lo componen. public class EjemploMenu extends Activity { private LinearLayout layout; static final private int OPCION_1= Menu.FIRST; static final private int OPCION_2= Menu.FIRST+1; static final private int OPCION_3= Menu.FIRST+2; static final private int OPCION_SALIR= Menu.FIRST +3; static final private int OPCION_4= Menu.FIRST+4; static final private int OPCION_5= Menu.FIRST+5; static final private int OPCION_6= Menu.FIRST+6; static final private int OPCION_7= Menu.FIRST+7; static final private int OPCION_8= Menu.FIRST+8; static final private int OPCION_9= Menu.FIRST+9; //Agrupar los items del menu que tendrán radiobuttons static final private int GRUPO_BOTONES=1; /** Called when the activity is first created. public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); } layout=(linearlayout)findviewbyid(r.id.layout); Cod public void ondestroy(bundle savedinstance){ super.ondestroy(); finish(); Y la interfaz } con los diferentes tipos de menús sería la siguiente: public boolean onoptionsitemselected(menuitem item){ 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; 75

85 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"); //Añadir título 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 método abreviado menu.add(0,opcion_9, 0,R.string.menu9).setShortcut('0', 'a').setintent(new Intent(this,EjemploMenu2.class)); } return result; Código 22. Creación de los diferentes tipos de Menús 76

86 Y la interfaz con los diferentes tipos de menús sería la siguiente: Figura 45. Ejecución de un Menú de tipo Icono Figura 46. Ejecución de un Menú de tipo Expansión Figura 47. Ejecución de un Menú de tipo Submenú 77

87 Dialogs Los Dialogs, son cajas o ventanas que son utilizadas para ayudar a los usuarios, responder a preguntas formuladas, realizar alguna selección, confirmar acciones o mostrar mensajes de alerta o de error. La principal característica 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 opción más versátil 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 código Java. public class EjemploDialog extends Activity { private Button botonalerta; private Button botonprogreso; /** Called when the activity is first created. public void oncreate(bundle savedinstancestate) { Cod super.oncreate(savedinstancestate); setcontentview(r.layout.main); A simple vista dichos Dialog serían vistos de la siguiente forma: botonalerta=(button)findviewbyid(r.id.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

88 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(){ }); dialogoalerta.show(); public void onclick(dialoginterface arg0, int arg1) { EjemploDialog.this.finish(); } public void mostrardialogo2(){ ProgressDialog dialogoprogreso=progressdialog.show(ejemplodialog.this,"dialogo de Progreso","En progreso...",true); dialogoprogreso.setcancelable(true); } } Código 23. Creación de los diferentes tipos de Dialogs A simple vista dichos Dialog serían vistos de la siguiente forma: Figuras 48 y 49. Ejecución de los diálogos de Alerta y de Progreso 79

89 4.4 Uso de Intents para lanzar nuevas Activities Es lógico que al ejecutar una aplicación en Android en la cual se interactúe con el usuario, la aplicación no permanezca estática y ofrezca dinamismo en función de las peticiones propuestas por el cliente. En apartados anteriores se ha dicho que el componente básico en una aplicación Android en la cual esté involucrado el usuario es la clase Activity. En cierta manera las Activities están expuestas a las necesidades o peticiones del usuario de modo que cuando éstas reciban algún evento deban alterar algún componente del Layout, de tal forma, que la Activity inicial pasa a ser otra Activity. Para poder redirigir el flujo de la aplicación de una Activity a otra, se hace uso de los Intents. A través de ellos se indica qué Activity lanzar, de tal manera que, si se quiere mostrar diferentes pantallas, se deberán implantar tantos Intents como pantallas se deseen. Para utilizar diversas pantallas o Activities se deberán 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. Además para que se lleve a cabo dicho proceso se debe ejecutar el método startactivity indicando el Intent en concreto. En el siguiente código puede verse como realizar dicho proceso: public class Ejemplo extends Activity { private Intent intent=new Intent(); /** Called when the activity is first created. public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main2); intent.setclass(ejemplo.this,ejemplointet.class); startactivity(intent); } } Código 24. Creación de un componente Intent 80

90 Aparte de mostrarlo en el código 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 modificación es la siguiente: <application <activity android:name=".ejemplointet" <intent-filter> <action android:name="android.intent.action.main" /> <category android:name="android.intent.category.launcher"/> </intent-filter> </activity> <activity android:name=".ejemplo" <intent-filter> <action android:name="android.intent.action.main" /> </intent-filter> </activity> </application> Código 25. Configuración del componente Intent Como se puede observar existen dos nodos <activity> puesto que se realiza el cambio de Activity Paso de parámetros y resultados Aparte de la necesidad de hacer dinámica la vista que tiene el usuario de la aplicación, también puede ser necesario el paso de parámetros a través de las distintas Activities o que la Activity a la cual se ha redirigido devuelva algún tipo de valor. Para poder pasar parámetros a otra Activity, el Intent nuevo que se crea, deberá pasar dicho valor en una variable que después 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); Código 26. Paso de parámetros a través de un componente Intent 81

91 A la hora de recogerlos, mediante el mismo método o prácticamente similar, la nueva Activity recoge los parámetros recibidos por la petición, y para acceder al valor de dicho parámetro, se accede mediante la variable pasada en dicha petición. bundle=getintent().getextras(); texto.settext(bundle.getstring("id")); Código 27. Recogida de parámetros a través de un componente Intent El ejemplo visual de cómo se pasan dichos parámetros a la vez de cómo se realiza el cambio de flujo entre una Activity a otra sería el siguiente: Figuras 50 y 51. Ejecución de un componente Intent Si por lo contrario, se desea que la Activity a la cual se invoca, en vez de pasarle parámetros devuelva algún tipo de valor, en vez de llamar al método startactivity, se deberá llamar al método startactivityforresult el cual a diferencia del anterior método pasará además del Intent creado, la variable en la cual la otra Activity guardará el valor devuelto. Si el valor devuelto es algún dato específico mediante este método es el apropiado, ya que se guarda en dicha variable el valor necesitado, aparte, para tratar dicho valor devuelto, se realizará en el método onactivityresult. Pero si sólo se necesita saber el valor de cómo ha finalizado la Activity el método indicado es el setresult. 82

92 4.5 Creación de BBDD Para la creación 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 gestión que conlleve, la creación, actualización o borrado de una BBDD, se ha de crear una clase la cual herede de SQLiteOpenHelper. Es en esta clase donde residirán los métodos de creación y actualización. Ahora bien dentro de dicha clase existirá un método oncreate que es donde se realiza la creación de la base de datos. En dicho método, se ejecuta la sentencia SQL para poder crear la base de datos. El código en el cual se lleva a cabo esa operación es el public void oncreate(sqlitedatabase Cod db) { db.execsql(database_create); } Código 28. Método de creación 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);"; Código 29. Sentencia de creación 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 métodos de alta, baja y actualización de ellos. Además 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 aún así no se puede, se lanza una excepción. 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(); } Código 30. Métodos de apertura y cierre de la BBDD 83

93 De acuerdo con lo comentado, ahora se podrán utilizar los métodos con los que podemos utilizar los datos, bien sean para lectura, escritura o eliminación. Para poder crear una nota, se ha utilizado la clase ContentValues, con la cual añadimos 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); Código 31. Método de creación de una nueva tupla Si se desea actualizar una nota ya creada, el correspondiente método 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; } Código 32. Método de actualización de la BBDD Del mismo modo, si lo que se desea es eliminar una nota, el método para realizar esta operación es: public boolean deletenote(long rowid) { return mdb.delete(database_table, KEY_ROWID + "=" + rowid, null) > 0; } Código 33. Método de borrado de un elemento de la BBDD 84

94 Obviamente para poder realizar ambos métodos, 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 método 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; } Código 34. Método 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 aplicación, es accedida por todas las clases que conforman la totalidad de la aplicación, sin embargo las clases que permanezcan fuera no lo podrán hacer. 85

95 4.6 Aplicaciones multimedia Una de las múltiples razones por las cuales los teléfonos móviles han tenido especial repercusión en la actualidad ha sido el poder reproducir contenidos multimedia. Además, 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 librerías que permiten la reproducción o grabación 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 Reproducción de archivos locales En este apartado se va a mostrar cómo 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 continuación, 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 métodos start, pause y stop. 86

96 El código que se muestra debajo refleja cómo 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; } } Código 35. Diferentes métodos de reproducción de archivos 87

97 La vista que puede tener una reproducción de audio es la siguiente: Figura 52. Ejecución de un archivo de música Reproducción de archivos remotos Dentro de este apartado, se va a describir como reproducir un archivo mediante una URL. Para ello se ha utilizado la reproducción de un archivo de vídeo 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. También otra diferencia es que para poder reproducir archivos remotos, la clase MediaPlayer facilita un método para poder reproducir mediante este procedimiento en vez del método start, dicho método es el setdatasourse. MediaPlayer mp = new MediaPlayer(); mp.setdatasource(path_to_file); mp.prepare(); mp.start(); Código 36. Métodos de reproducción 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 código, se puede ver como se utiliza dicho View. mvideoview.setvideopath(getdatasource(path)); mvideoview.start(); mvideoview.requestfocus(); Código 37. Clase View disponible para reproducir archivos Además permite realizar las mismas funcionalidades de stop, pause, etc.. que la clase MediaPlayer. 88

98 4.7 Localización GPS y Mapas Uno de las actividades más notorias es la facilidad con la que las aplicaciones de Android pueden trabajar con la API de Mapas que Google facilita. Amén de los mapas, otra función es la geolocalización que se puede realizar del terminal en cuestión. En primer lugar se empezará a tratar en cómo utilizar la señal GPS para posteriormente pasar a utilizar los mapas Uso de la señal GPS En el uso de la señal del GPS, existen una serie de clases con las cuales se puede manejar la señal del dispositivo. Dentro de estas clases una de las principales, es la clase LocationManager que se utiliza principalmente para gestionar la localización del dispositivo. También existe la clase Location con la cual se representa una localización geográfica y la interfaz LocationListener con la que se capturan los eventos asociados al dispositivo de localización. Para poder acceder a cualquier servicio integrado del teléfono, se realiza mediante el método 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 localización. Para poder obtener la señal de GPS, se utiliza el método requestlocationupdates que a su vez implementa un método llamado onlocationchanged que es invocado cada vez que se detecta que la señal cambia. En el código Java que se muestra a continuación podrá verse con mejoría lo explicado en los párrafos anteriores. public class EjemploGPS extends Activity { private TextView latitud; private TextView longitud; private LocationManager locman; private String contexto; private String provider; private Location location; 89

99 /** Called when the activity is first created. 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){} }); } } } Código 38. Creación del programa que maneja los recursos de GPS Antes de probarlo, no hay que pasar por alto que para poder utilizar la señal 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> Código 39. Permisos necesarios para el acceso al recurso de GPS Para poder emular dicha señal, se debe abrir un terminal de ejecución en el equipo y lanzar una conexión telnet hacia el emulador. Y ejecutar el comando geo fix con la posición geográfica, es decir: telnet localhost 5554 geo fix LONGITUD LATITUD 90

100 La ejecución de dicho ejemplo sería la siguiente: Figura 53. Ejecución del programa ejemplogps Uso de mapas El principal aliciente que presenta la programación en Android, es la utilización del servicio de los mapas de Google. Este servicio se usa posteriormente como si fuera una View lo cual permite trabajar fácilmente con el mapa. Antes de comenzar a conocer qué clases son las más importantes a la hora de crear mapas, es importante saber que para utilizar éstas, no sólo 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 aplicación que se utiliza en Android tiene asignada un certificado de su autoría. Dentro del entorno de programación de Eclipse, las aplicaciones están firmadas bajo un certificado de prueba que se obtiene a través 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

101 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 aplicación. Dicho resumen se puede generar con la herramienta keytool de la JDK de Java. keytool.exe - lista -alias androiddebugkey - almacén de claves "C : \ android \ debug.keystore " - storepass android android - keypass Código 40. Obtención 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 Código 41. Certificado MD5 2. Después, con esa huella generada, se debe registrar en la página disponible de Google. 3. Y una vez efectuado el registro, desde Google se genera un código donde aparece la clave de la API para poder utilizar los mapas y la estructura del componente View creado que se deberá añadir en el archivo main.xml. Dicha estructura es similar al código que se muestra debajo. <com.google.android.maps.mapview android:layout_width="fill_parent" android:layout_height="fill_parent" android:apikey="0yxlxnn2pdcevq4skpxeocguvzo5qmtopygukew" /> Código 42. Clave API del mapa Realizados los trámites pertinentes para la generación 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 Código 43. Comando de listado de targets de Android 92

102 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 aplicación en Android. Como lo que se busca es poder programar una aplicación en la que se usen componentes View que lleven embebidos mapas geográficos, a la hora de crear un nuevo proyecto se deberá elegir el target que incluya las API s correspondientes. Este target específico puede aparecer en el listado que se crea a través de la ejecución 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 ningún 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 enseña a continuación y posteriormente realizar el mismo procedimiento anterior descrito de listado. android update sdk Código 44. Comando de actualización de la SDK de Android 93

103 Aparte de la elección del target necesario también hay que crear un nuevo emulador o avd desde el que se pueda ver el resultado de la aplicación creada además de realizar las pruebas pertinentes y como en principio no se tiene ningún avd con el target de Google Maps se procede a la creación de un nuevo, con el target correspondiente. Figura 55. Creación de un emulador para mapas Creación de una aplicación 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 aplicación de estas características. En primer lugar, y después 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 librerías necesarias para poder trabajar con mapas desde Android, de manera que en el nodo application se tiene que añadir el siguiente código: <uses-library android:name="com.google.android.maps"></uses-library> Código 43. Permiso para el uso de la librería de mapas 94

104 Además de añadir las librerías que dan soporte a la aplicación, también es necesario incluir dentro de este archivo XML los permisos que se necesitan para poder utilizar acceso a Internet. Dicha inclusión sería la que se muestra: <uses-permission android:name="android.permission.internet"></usespermission> Código 44. Permisos de Internet en una aplicación Android En segundo lugar, se pasa a crear la interfaz de usuario en la que se muestre la presentación que puede tener un mapa geográfico 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 aplicación y realizar todas las gestiones necesarias requeridas en cuanto a la representación de mapas. Además con esta clase proporcionada se crea una nueva Activity en la que su componente principal es el MapView. En este código, se muestra como quedaría 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. public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); } mapview=(mapview)findviewbyid(r.id.mapview); } protected boolean isroutedisplayed(){ return false; } Código 45. Ejemplo de una clase Java que utiliza mapas En referencia al código Java mostrado, hay que hacer mención 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 enseña como quedaría plasmado en el archivo main.xml que es dónde se declara la interfaz de usuario que se utiliza, la declaración del componente MapView en cuestión. 95

105 <?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:layout_width="fill_parent" android:layout_height="fill_parent" android:clickable="true" android:enabled="true" android:apikey="0yxlxnn2pdcevq4skpxeocguvzo5qmtopygukew" /> </LinearLayout> Código 46. Ejemplo de archivo main.xml de una aplicación Android con mapas Además de este componente imprescindible, también es importante que para poder crear la clase Java, ésta herede de la clase MapActivity, y sobrescribir el método isroutedisplayed el cual devuelve un valor true si el componente Activity devuelve información sobre la ruta o conjunto de indicaciones de la obtención del recurso y en cualquier otro caso devolverá un valor de false. En la siguiente imagen mostrada puede verse un claro ejemplo de cómo se mostraría un mapa desde el emulador de Android. Figura 56. Ejecución de una aplicación con mapas 96

106 Otra de las peculiaridades que ofrece el componente visual MapView, es la posibilidad de poder cambiar de imagen estándar como la mostrada en la imagen anterior. Como ejemplos posibles puede servir una visión desde el satélite, el tráfico estimado o una simple muestra del callejero. Para hacer posible este cambio existen diferentes métodos provistos desde el componente MapView que se pueden ver en el siguiente código. mapview.setsatellite(true); mapview.setstreetview(true); mapview.settraffic(true); Código 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 localización geográfica dentro del componente MapView. Al crear una ocurrencia de la clase GeoPoint, se le envían la longitud y la latitud del punto en cuestión. private GeoPoint punto; String coordenadas[] = {" ", "-3.875"}; double lat = Double.parseDouble(coordenadas[0]); double lng = Double.parseDouble(coordenadas[1]); punto = new GeoPoint((int) (lat * 1E6),(int) (lng * 1E6)); Código 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. Además esta clase permite centrar la posición 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 método getcontroller() proporcionado por el componente MapView. Con mayor claridad, se puede ver en el siguiente código. private MapController controlador; controlador=mapview.getcontroller(); Código 49. Ejemplo de un objeto de tipo MapController 97

107 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 cartográfica 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 representación del mapa más alejada o cercana. A continuación se muestra el código necesario para poder adoptar dichas cualidades. private GeoPoint punto; private int valorzoom; valorzoom=controlador.setzoom(medzoom); String coordenadas[] = {" ", "-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); Código 50. Ejemplo de uso de zoom en un programa Android con mapas Como se puede ver en el código anterior, para poder ejercer control sobre el zoom se utiliza el método setzoom() al cual se le pasa como parámetro un valor entero comprendido entre 1 y 21 que representan el grado más lejano y cercano respectivamente. A la hora de fijar un punto como centro del mapa se puede realizar por medio del método setcenter(), aunque también se puede hacer con el método animateto(). En la siguiente imagen se puede ver la ejecución de estas nuevas cualidades que se han comentado previamente: Figura 57. Ejecución de una aplicación con mapas en Android 98

108 De la misma forma que existe la clase MapController para poder ejercer determinadas acciones sobre el mapa, también 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, líneas, imágenes o formas dentro de un componente MapView además de manejar los clicks realizados sobre el mapa. El modo en el cual se añaden uno o más Overlays es a base de capas sucesivas que se superponen obstruyendo la capa más reciente a la más 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 métodos draw(), el cual se encarga de añadir todas las anotaciones creadas y el método ontap(), que se utiliza ante los eventos generados por los clicks del usuario. En el caso ejemplo sólo se tratará el primero de estos eventos. public class MiOverlay extends public void draw(canvas canvas, MapView mapview, boolean shadow) { } } Código 51. Ejemplo de clase Overlay Para añadir una anotación 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 anotación a una localización física, se debe realizar previamente una conversión entre el punto en cuestión y las coordenadas dentro de la pantalla. Al realizar esta transformación, 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 asignación del método getprojection() del componente MapView. Y la conversión citada se realiza por medio del método topixels() si se desea obtener las coordenadas x /y de un punto geográfico o por el método frompixels() si se desea lo contrario. private GeoPoint punto; private Point mipunto; mipunto = new Point(); mapview.getprojection().topixels(punto, mipunto); Código 52. Ejemplo de transformación de un punto geográfico a un punto de la pantalla 99

109 En el código siguiente, se puede contemplar lo comentando en los párrafos anteriores: public class MiOverlay extends Overlay{ //variables de localización private GeoPoint punto; private Point mipunto; private int radio=5; private Paint pinta; private Paint pinta2; private Paint public void draw(canvas canvas, MapView mapview, boolean shadow) { String coordenadas[] = {" ", "-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.y- 5,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); } } Código 53. Ejemplo completo de una clase Overlay 100

110 A la hora de añadir la clase Overlay creada al componente MapView se puede observar en el código que se muestra a continuación. mioverlay=new MiOverlay(); overlays=mapview.getoverlays(); overlays.add(mioverlay); Código 54. Ejemplo de adhesión 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 localización actual del dispositivo en un componente MapView a través de la clase MyLocationOverlay. La ejecución de una aplicación en Android en la cual se combine por un lado mapas y por otro lado clases Overlay es la siguiente: Figura 58. Ejecución de una aplicación Android con mapas y objetos Overlay En Android existe también otra forma con la cual se pueden añadir 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 posición al igual que sucede con las ocurrencias de la clase Overlay. 101

111 Una vez que se haya creado el objeto View, se deberá asignar al componente MapView en cuestión mediante el método addview, al cual se le pasan como argumentos el objeto a incrustar en el mapa y la posición deseada dentro de éste. Dicha posición viene dada por un objeto de tipo MapView.LayoutParams que sirve para determinar dónde y cómo será el objeto View a desplegar dentro de la pantalla. Para verlo con mayor precisión se añade el siguiente código. 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); } Código 55. Adhesión 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 métodos oncreate u onrestore de la clase MapActivity con la que se trabaje. La ejecución resultante del código anterior es la que se muestra a continuación: Figura 59.Ejecución de la adhesión de un objeto View a un mapa 102

112 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 cómo acceder a un recurso mediante la conexión a Internet y se enseñará un ejemplo didáctico: un traductor que accede vía web al traductor online de Google. Para poder acceder a los recursos de Internet, la aplicación 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"/> Código 56. Permisos necesarios para el uso de Internet en una aplicación Android Obtenidos los permisos para el acceso a Internet, se debe de crear un patrón de acceso al recurso de Internet. Dicho patrón 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){ } Código 57. Clase Java de acceso al traductor de Google 103

113 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"; Código 58. Ejemplo de URL necesaria para acceder al traductor de Google Como se puede apreciar, la URL la conforman la concatenación de la cadena dirección más 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 comprobación de que se realiza traducción de un texto de español a inglés. Puesto que esto se puede extrapolar a diferentes idiomas. Figura 60. Ejemplo sencillo de un traductor 104

114 Capítulo 5 Máquina Virtual La virtualización es una nueva tecnología que ha revolucionado el conjunto de las TIC y el modo por el cual se utilizan los recursos proporcionados por un ordenador. Esta nueva tecnología consiste principalmente en desplegar diversas máquinas virtuales alojadas dentro de una única máquina física. Esta máquina es la encargada de proporcionar los recursos necesarios para que éstas puedan llevar a cabo las actividades para las cuales son requeridas. Además, en el interior de cada una de estas máquinas virtuales se pueden ejecutar diferentes sistemas operativos dentro una misma máquina física. Máquina Virtual Una máquina virtual es un receptáculo que contiene un sistema operativo completo que está totalmente abstraído y cuyo comportamiento es similar al de un ordenador físico, es decir, una máquina virtual es un componente software capaz de almacenar diferentes sistemas operativos. Éstos pueden estar compuestos por diversas aplicaciones y aislados e independientes de los demás 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 virtualización. El principal beneficio que otorga una máquina virtual es poder compartir los diferentes recursos proporcionados por un ordenador entre las diferentes máquinas virtuales. A modo de capas, en la capa más inferior, se encuentra el hardware. A continuación se sostiene la máquina virtual y por último se sitúan las capas de software con los diferentes sistemas operativos virtualizados. Figura 61. Ejemplo de capas de virtualización 105

115 Por lo tanto una máquina virtual es un paquete software capaz de englobar una serie de recursos hardware virtual, un sistema operativo y diversas aplicaciones que forman un conjunto fácil de portar y de gestionar. Haciéndolo totalmente independiente del hardware físico sobre el que se sostiene y a su vez aislado por completo de las diferentes máquinas virtuales con las que conviva. Ventajas de la virtualización Las principales ventajas que propone la virtualización son las siguientes: La reducción de costes económicos es una de las principales razones por las cuales la visrtualización supone una gran ventaja. Gracias a la virtualización 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 disminución considerable de máquinas físicas. Este hecho facilita en gran medida que se gane en menor espacio físico requerido implicando una reducción importante de gastos de energía, refrigeración y otros costes de infraestructura. Otra ventaja es la flexibilidad y dinamismo que tiene una infraestructura virtual. La virtualización permite una asignación y gestión de los recursos permitiendo agruparlos y distribuirlos de manera que se cumplan los requerimientos de nivel de servicio de forma más rápida y rentable; siendo la infraestructura susceptible a todo tipo de cambio. Es una infraestructura altamente segura ofreciendo una gran disponibilidad. La virtualización además, puede servir como un elemento más de recuperación dando un servicio óptimo como servicio de backup ante situaciones o incidentes imprevistos. 106

116 5.1 Creación de una Máquina Virtual En este apartado, se procederá a ver cómo se ha creado la máquina virtual sobre la cual se ha construido todo el framwework necesario para poder desarrollar aplicaciones en Android. Para poder establecer la máquina virtual, se ha utilizado VirtualBox. VirtualBox es un producto software de código y distribución 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 característica principal VirtualBox aporta compatibilidad con todos los ordenadores que cumplan el estándar x86, así como todas las ventajas anteriormente citadas sobre las maquinas virtuales. También proporciona una interfaz sencilla e intuitiva desde la cual se puede instaurar un sistema operativo simulado como si fuera un ordenador autónomo e independiente. Para llevar a cabo la virtualización de un sistema operativo Ubuntu- Linux desde VirtualBox se deben realizar los siguientes pasos: 1º) Descargar el software VirtualBox desde su página web: 2º) Una vez descargado e instalado el producto VirtualBox, se pulsa sobre el icono Nueva. Figura 63. Creación de una máquina virtual I 107

117 3º) A continuación se pulsa Siguiente y se pasa a seleccionar el tipo de sistema operativo que se va a simular y el nombre que tendrá la máquina virtual. Y finalizado el proceso se pulsa otra vez el botón Siguiente. Figura 64. Creación de una máquina virtual II Figura 65.Configuración del sistema operativo de la máquina virtual 108

118 4º) En el siguiente paso se selecciona parte de los recursos que dispondrá la máquina virtual, en este caso, se trata de la memoria RAM que se le asignará. Figura 66.Configuración de la memoria RAM de la máquina virtual 5º) Después se debe asignar el disco duro virtual en el cual se creará la imagen y que hará las veces de disco duro, donde se almacenarán todos los archivos del sistema operativo virtualizado. Lo recomendable es escoger la opción de imagen dinámica en expansión, puesto que dicho sistema virtualizado no requerirá desde el principio la totalidad del disco sino que irá en aumento en función de sus necesidades. Figura 67.Configuración del disco duro virtual I 109

119 Figura 68. Configuración del disco duro virtual II Figura 69. Configuración del disco duro virtual III 6º) Una vez elegida la capacidad y el lugar donde residirá el disco virtual creado, se pulsa al botón Terminar y en la pantalla principal pulsar la opción de Configuración en donde se terminará de dar forma a la máquina virtual. Figura 70. Creación de una máquina virtual III 110

120 Es aquí donde se termina de dar los últimos retoques para reproducir la máquina virtual deseada. Por ejemplo, en la opción Almacenamiento se configura desde donde se va ejecutar el arranque inicial del sistema operativo en cuestión, 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 portátil cuando se instala el sistema operativo. Figura 71. Creación de una máquina virtual IV Por último solo falta pulsar la opción de Iniciar, en cuanto se finalicen las configuraciones deseadas. Figura 72. Creación de una máquina virtual V 111

Curso de Android con Java

Curso de Android con Java Todos los Derechos Reservados Global Mentoring Experiencia y Conocimiento para tu Vida 1 Este es un tiempo único para el mundo de los celulares, en particular de los Smartphones. Este tipo de dispositivos

Más detalles

Visión general y entorno de desarrollo

Visión general y entorno de desarrollo CAPÍTULO 1. Visión general y entorno de desarrollo La telefonía móvil está cambiando la sociedad actual de una forma tan significativa como lo ha hecho Internet. Esta revolución no ha hecho más que empezar,

Más detalles

Unidad I. Introducción a la programación de Dispositivos Móviles

Unidad I. Introducción a la programación de Dispositivos Móviles Clase:002 1 Unidad I Introducción a la programación de Dispositivos Móviles Tomado de : Programación Multimedia y Dispositivos Móviles 2012 Paredes Velasco, Maximiliano / Santacruz Valencia, Liliana 2

Más detalles

Programación Android Completo

Programación Android Completo Programación Android Completo Duración: 50.00 horas Descripción Este curso pretende formar al alumno en el desarrollo de aplicaciones para dispositivos Android. Se estudiarán con detalle todos aquellos

Más detalles

Sistemas Operativos Para Dispositivos Móviles

Sistemas Operativos Para Dispositivos Móviles Sistemas Operativos Para Dispositivos Móviles Diseño de Sistemas Operativos Prof. Ing. Angel Caffa Gonzalo Villar - 143125 Ignacio Toledo - 143698 25/06/2008 Sistemas tratados Palm OS Symbian Windows Mobile

Más detalles

DESARROLLADOR ANDROID INTRODUCCIÓN ANDROID. Ing. Marco Antonio Toscano Freire mtoscano@matoosfe.com tw: martosfre

DESARROLLADOR ANDROID INTRODUCCIÓN ANDROID. Ing. Marco Antonio Toscano Freire mtoscano@matoosfe.com tw: martosfre DESARROLLADOR ANDROID INTRODUCCIÓN ANDROID Ing. Marco Antonio Toscano Freire mtoscano@matoosfe.com tw: martosfre Introducción Aplicaciones Móbiles Desventajas Tanto las pantallas como teclados son demasiado

Más detalles

Cookbook Creando un Proyecto Android (ADT-Eclipse)

Cookbook Creando un Proyecto Android (ADT-Eclipse) Cookbook Creando un Proyecto Android (ADT-Eclipse) ALONSO PARRA CESAR VIELMA FREDDY RONDON JOSE MARQUEZ Alienx9889 * cesarvielma * spantons * joseangel2212 * * @gmail.com Universidad de Los Andes Escuela

Más detalles

Luis Sosa : 06-40351 Cesar Hernández: 06-39724

Luis Sosa : 06-40351 Cesar Hernández: 06-39724 Sistemas de Operación en Dispositivos Móviles Un enfoque a Android y ios. Luis Sosa : 06-40351 Cesar Hernández: 06-39724 Historia Desarrollado inicialmente por Android Inc. Firma comprada por Google en

Más detalles

Los distintos navegadores para movernos por Internet

Los distintos navegadores para movernos por Internet www.solucionesenlaweb.com Los distintos navegadores para movernos por Internet Para que los usuarios puedan navegar por Internet y ver la información que más les interesa en cada momento, utilizamos los

Más detalles

Capitulo 1: Plataforma Android

Capitulo 1: Plataforma Android Capitulo 1: Plataforma Android Elaborado por: Gary Briceño http://gary.pe http://gary.pe 1 Temario 1. Android 2. Evolución 3. Arquitectura Android 4. Paquetes de Trabajo 5. Android y Java http://gary.pe

Más detalles

MASTER EN COMUNICACIONES Y DESARROLLO DE SERVICIOS MÓVILES 2009-2010

MASTER EN COMUNICACIONES Y DESARROLLO DE SERVICIOS MÓVILES 2009-2010 MASTER EN COMUNICACIONES Y DESARROLLO DE SERVICIOS MÓVILES 2009-2010 La asignatura y el mercado de los servicios móviles 1 Contenido Planificación Objetivos Seguimiento Comparativa de tecnologías actuales

Más detalles

Tema 2: Introducción a Android

Tema 2: Introducción a Android Tema 2: Introducción a Android Android Android es un sistema operativo basado en el Kernel de Linux diseñado principalmente para dispositivos móviles con pantalla táctil. Android Fue desarrollado originalmente

Más detalles

U2. Introducción al desarrollo de aplicaciones móviles Smartphone y Android Desarrollo de Aplicaciones III TIC-UTSV Enero 2015 I.S.C.

U2. Introducción al desarrollo de aplicaciones móviles Smartphone y Android Desarrollo de Aplicaciones III TIC-UTSV Enero 2015 I.S.C. U2. Introducción al desarrollo de aplicaciones móviles Smartphone y Android Desarrollo de Aplicaciones III TIC-UTSV Enero 2015 I.S.C. Rogelio Vázquez Hernández Smartphone Termino utilizado para referirse

Más detalles

TEMA 3: SISTEMAS OPERATIVOS.

TEMA 3: SISTEMAS OPERATIVOS. TEMA 3: SISTEMAS OPERATIVOS. 1. QUÉ ES UN SISTEMA OPERATIVO? 2. SISTEMAS OPERATIVOS GRÁFICOS. 3. SISTEMAS OPERATIVOS MÓVILES. 4. EL ENTORNO DE WINDOWS PARA PC. 5. LA APLICACIÓN DEL TEMA. 6. ACTIVIDADES.

Más detalles

Cómputo Móvil: Diferentes lenguajes de programación para dispositivos móviles que utilizan la plataforma S60

Cómputo Móvil: Diferentes lenguajes de programación para dispositivos móviles que utilizan la plataforma S60 Cómputo Móvil: Diferentes lenguajes de programación para dispositivos móviles que utilizan la plataforma S60 Laboratorio de Tecnologías de Información Cinvestav-Tamaulipas. Laboratorio de Tecnologías de

Más detalles

Capitulo 4. JavaFX. Se da a conocer la plataforma de desarrollo JavaFX, los niveles en el cual se encuentra

Capitulo 4. JavaFX. Se da a conocer la plataforma de desarrollo JavaFX, los niveles en el cual se encuentra Capitulo 4. JavaFX Se da a conocer la plataforma de desarrollo JavaFX, los niveles en el cual se encuentra estructurado el lenguaje de programación, se realiza el análisis del código Helloworld.fx para

Más detalles

S O F T W A R E. Autor: Raquel Giannini

S O F T W A R E. Autor: Raquel Giannini S O F T W A R E Autor: Raquel Giannini Qué es el software? Es un conjunto de instrucciones detalladas que controlan el funcionamiento de un sistema de computación Software Informático Programas que ayudan

Más detalles

Desarrollo de aplicaciones para iphone

Desarrollo de aplicaciones para iphone Desarrollo de aplicaciones para iphone Desarrollo de aplicaciones para iphone Contenidos Conócenos...4 Formación abierta...4 Estudios universitarios...4 Tú eres el centro...5 Nuestra metodología...6 Descripción

Más detalles

Unidad II. Interfaz Grafica

Unidad II. Interfaz Grafica Clase:004 1 Unidad II Interfaz Grafica Basado en https://developer.apple.com/library/ios/#referencelibrary/gettingstar ted/roadmapios/chapters/introduction.html 2 Agenda Desarrollo de Apps para IOS. Diseño

Más detalles

Visualización y modelado de elementos geográficos en dispositivos móviles. Capítulo 5: Aplicaciones cliente

Visualización y modelado de elementos geográficos en dispositivos móviles. Capítulo 5: Aplicaciones cliente Capítulo 5: Aplicaciones cliente 46 5.1 La aplicación cliente en la Pocket PC La aplicación desarrollada para el cliente en un dispositivo móvil como corresponde a la Pocket PC necesita una capa muy delgada

Más detalles

Taller de Programación de Dispositivos Móviles. José Miguel Rubio L. Oficina 3-20 http://www.inf.ucv.cl/~jrubio jose.rubio.l@ucv.

Taller de Programación de Dispositivos Móviles. José Miguel Rubio L. Oficina 3-20 http://www.inf.ucv.cl/~jrubio jose.rubio.l@ucv. Taller de Programación de Dispositivos Móviles José Miguel Rubio L. Oficina 3-20 http://www.inf.ucv.cl/~jrubio jose.rubio.l@ucv.cl Parte 1 1.Programación de dispositivos 2.Limitaciones de los dispositivos

Más detalles

IMPLANTACIÓN PLATAFORMA DE DIFUSIÓN (PAGINA WEB / APP ANDROID)

IMPLANTACIÓN PLATAFORMA DE DIFUSIÓN (PAGINA WEB / APP ANDROID) IMPLANTACIÓN PLATAFORMA DE DIFUSIÓN (PAGINA WEB / APP ANDROID) Valeska Concha C. 122 Transferencia Tecnológica y Difusión del proyecto. Introducción El desarrollo de un plataforma de información para el

Más detalles

TEMA 1. Introducción

TEMA 1. Introducción TEMA 1 Introducción LO QUE ABORDAREMOS Qué es Android? Qué lo hace interesante? Arquitectura del sistema Entorno de desarrollo 2 QUÉ ES ANDROID? Sistema operativo para móviles Desarrollado inicialmente

Más detalles

1) Qué es Avant Manager? 2) Funcionalidades de Avant Manager. 3) Ventajas de Avant Manager. 4) Por qué Avant Manager? 5) Información de Suscripción

1) Qué es Avant Manager? 2) Funcionalidades de Avant Manager. 3) Ventajas de Avant Manager. 4) Por qué Avant Manager? 5) Información de Suscripción Cuestiones clave 1) Qué es Avant Manager? 2) Funcionalidades de Avant Manager 3) Ventajas de Avant Manager 4) Por qué Avant Manager? 5) Información de Suscripción 6) Datos de contacto 2 Gestión eficiente

Más detalles

w w w. s p y r o t o u c h. c o m

w w w. s p y r o t o u c h. c o m w w w. s p y r o t o u c h. c o m Aplicaciones empresariales de movilidad SPYRO TOUCHes un conjunto modular de Apps empresariales, concebidas desde su análisis y desarrollo, para dar solución a los distintos

Más detalles

Estudio Comparativo de dos Plataformas de Programación de Dispositivos Móviles

Estudio Comparativo de dos Plataformas de Programación de Dispositivos Móviles Estudio Comparativo de dos Plataformas de Programación de Dispositivos Móviles Gregorio Elías Pazmiño Vélez (1) Magdeline Estefanie Rosero Pérez (2) Facultad de Ingeniería en Electricidad y Computación

Más detalles

Principales beneficios para una pyme del uso de la plataforma Microsoft Office 365

Principales beneficios para una pyme del uso de la plataforma Microsoft Office 365 Portal de la competitividad - Office 365. Escenario Necesito movilidad y colaboración: estar fuera de la oficina y tener acceso a la información Hoja de Producto Técnica (para Pymes). Todas las empresas

Más detalles

http://www.droidlife.com/#47

http://www.droidlife.com/#47 Oct 2003 Fundación de Android, Inc. en Palo Alto, CA. 16 Ago, 2005 Android, Inc. es adquirida por Google. 5 Nov, 2007 Se anuncia el Open Handset Alliance (OHA), una alianza formada por 34 compañías líderes

Más detalles

Resumen. Introducción

Resumen. Introducción Sistema de Integración de Plataforma en la Nube para Móviles David Araujo Díaz 1, Erika Hernández Rubio 2, Elena Fabiola Ruiz Ledesma 3 Instituto Politécnico Nacional Escuela Superior de Cómputo Resumen

Más detalles

CURSO EXPERTO EN DESARROLLO DE APPS CON ANDROID 5 LOLLIPOP PARA DISPOSITIVOS MOVILES Y MULTIMEDIA

CURSO EXPERTO EN DESARROLLO DE APPS CON ANDROID 5 LOLLIPOP PARA DISPOSITIVOS MOVILES Y MULTIMEDIA CURSO EXPERTO EN DESARROLLO DE APPS CON ANDROID 5 LOLLIPOP PARA DISPOSITIVOS MOVILES Y MULTIMEDIA DESARROLLO DEL CURSO EXPERTO EN DESARROLLO DE APPS CON ANDROID 5 LOLLIPOP PARA DISPOSITIVOS MOVILES Y MULTIMEDIA

Más detalles

INTRODUCCIÓN AL WEB. Pag. 1 de 10

INTRODUCCIÓN AL WEB. Pag. 1 de 10 INTRODUCCIÓN AL WEB La World Wide Web o simplemente WWW o Web es uno de los métodos más importantes de comunicación que existe en Internet. Consiste en un sistema de información basado en Hipertexto (texto

Más detalles

Introduccion a la plataforma Android

Introduccion a la plataforma Android Introduccion a la plataforma Android Felipe A. Besoaín Pino fbesoain@gmail.com 22-05-2009 Resumen Las características y usos que nos proveen los dispositivos móviles en los últimos años, han provocado

Más detalles

Unidad I. Introducción a la programación de Dispositivos Móviles (Continuación )

Unidad I. Introducción a la programación de Dispositivos Móviles (Continuación ) Clase:003 1 Unidad I Introducción a la programación de Dispositivos Móviles (Continuación ) 2 Entornos de Desarrollo Virtualizaciones. Agenda IDE s. Y Lenguajes de Programación. 3 Virtualización Que es

Más detalles

Proyecto UniMóvil: una aplicación móvil para Universidades

Proyecto UniMóvil: una aplicación móvil para Universidades Proyecto UniMóvil: una aplicación móvil para Universidades Diego de la Riva 1, Carlos Di Cicco 2, Facundo Montero 3, Sebastián Sottile 4 {delariva,carlosdicicco,facundomontero,sebastiansottile}@unnoba.edu.ar

Más detalles

Presentación y objetivos

Presentación y objetivos Presentación y objetivos Android es un sistema operativo para dispositivos móviles (Smartphone, Tablet-pc,...) basado en Linux, que integra una serie de librerías para el desarrollo de aplicaciones en

Más detalles

ios Introducción Licencia

ios Introducción Licencia ios Introducción Albert Meco Alías Director Ejecutivo en Materia Works Licencia 2 Este documento, su texto y gráficos e imágenes, puede ser utilizado bajo una licencia Creative Commons de tipo Reconocimiento

Más detalles

Manual Terabox. Manual del usuario. Portal WEB. Versión 2015. 1 Índice. 2015 Telefónica. Todos los derechos reservados. http://telefonica.com.

Manual Terabox. Manual del usuario. Portal WEB. Versión 2015. 1 Índice. 2015 Telefónica. Todos los derechos reservados. http://telefonica.com. Manual del usuario Portal WEB 1 Índice Versión 2015 2015 Telefónica. Todos los derechos reservados. http://telefonica.com.ar 1 1 Índice... 1 2 Terabox... 4 3 Terabox Web... 5 3.1 Página Inicial... 5 3.1.1

Más detalles

Desarrollo de apps para móviles Android. Entorno de desarrollo

Desarrollo de apps para móviles Android. Entorno de desarrollo Desarrollo de apps para móviles Android Entorno de desarrollo Entorno de desarrollo Las aplicaciones Android van a ser implementadas en Java usando Android SDK. El software necesario para realizarlas es

Más detalles

Un sistema operativo móvil o SO móvil es un sistema operativo que controla un dispositivo móvil al igual que las computadores utilizan Windows o

Un sistema operativo móvil o SO móvil es un sistema operativo que controla un dispositivo móvil al igual que las computadores utilizan Windows o Un sistema operativo móvil o SO móvil es un sistema operativo que controla un dispositivo móvil al igual que las computadores utilizan Windows o Linux en tre otros. Sin embargo, los sistemas operativos

Más detalles

Desarrollo de Aplicaciones Móviles. Java

Desarrollo de Aplicaciones Móviles. Java Java Java es la base para prácticamente todos los tipos de aplicaciones de red, además del estándar global para desarrollar y distribuir aplicaciones móviles y embebidas, juegos, contenido basado en web

Más detalles

Sistemas Operativos. Introducción. Actividades. Soluciones

Sistemas Operativos. Introducción. Actividades. Soluciones Sistemas Operativos. Introducción. Actividades. Soluciones Contesta a las siguientes preguntas: 1.- Cuáles son las funciones de un Sistema Operativo? Un Sistema Operativo es el conjunto de programas o

Más detalles

Servicios electrónicos en movilidad. Actuaciones en el Ayuntamiento de Madrid

Servicios electrónicos en movilidad. Actuaciones en el Ayuntamiento de Madrid Servicios electrónicos en movilidad Actuaciones en el Ayuntamiento de Madrid Antonio López-Fuensalida D.G. de Desarrollo de TI IAM Informática del Ayuntamiento de Madrid mayo de 2011 Página 1 El nuevo

Más detalles

Smartphones y Tablets

Smartphones y Tablets Smartphones y Tablets El mundo en tus manos José Enrique García Domingo Ortega Abril 2011 Jornadas TIC para personal técnico del PAS Índice Conceptos Tablets Sistemas Operativos Dispositivos Tendencias

Más detalles

Cursos de orientación profesional

Cursos de orientación profesional Cursos de orientación profesional ACCIONES COFINANCIADAS CON FONDOS COMUNITARIOS DEL FONDO SOCIAL EUROPEO, A TRAVÉS DEL PROGRAMA OPERATIVO FONDO SOCIAL EUROPEO DE CANARIAS 20072013 CON UN PORCENTAJE DE

Más detalles

Anexo IV Configuración del Entorno de Desarrollo. Guía de puntos de interés de la Ciudad de Madrid

Anexo IV Configuración del Entorno de Desarrollo. Guía de puntos de interés de la Ciudad de Madrid Anexo IV Configuración del Entorno de Desarrollo Guía de puntos de interés de la Ciudad de Madrid 1. Índice Anexo IV Configuración del Entorno de Desarrollo... 1 1. Índice... 2 2. Entorno de Desarrollo...

Más detalles

TELÉFONOS INTELIGENTES. TECNOLOGÍAS DE DESECHO La competencia en el mercado de telefonía celular es intensa. Hace apenas unos años la mayor

TELÉFONOS INTELIGENTES. TECNOLOGÍAS DE DESECHO La competencia en el mercado de telefonía celular es intensa. Hace apenas unos años la mayor TELÉFONOS INTELIGENTES. TECNOLOGÍAS DE DESECHO La competencia en el mercado de telefonía celular es intensa. Hace apenas unos años la mayor funcionalidad que tenían los teléfonos era una agenda con un

Más detalles

3 er Barómetro Splio sobre aperturas email marketing en móvil 1 er semestre 2013 www.splio.es @splioes Linkedin: Expertos en Email Marketing

3 er Barómetro Splio sobre aperturas email marketing en móvil 1 er semestre 2013 www.splio.es @splioes Linkedin: Expertos en Email Marketing Presentamos la tercera edición del Barómetro Splio de aperturas de email marketing en móvil, un estudio semestral realizado por Splio y que analiza los datos de aperturas de email marketing y cuál es el

Más detalles

Por medio de la presente nos complace presentar a ustedes nuestra propuesta de certificaciones de alta cobertura por volumen.

Por medio de la presente nos complace presentar a ustedes nuestra propuesta de certificaciones de alta cobertura por volumen. MBA. JUAN ALFREDO SALDÍVAR CABRAL Director Nacional de MexicoFIRST LIC. ANDRÉS SIMÓN BUJAIDAR Director de Alianzas de MexicoFIRST México D.F. a 05 de agosto de 2014 P R E S E N T E Por medio de la presente

Más detalles

Ronald Hernández (rhernandez@avantica.net) Director de Proyectos y Coordinador de la unidad Mobile en Avantica Technologies

Ronald Hernández (rhernandez@avantica.net) Director de Proyectos y Coordinador de la unidad Mobile en Avantica Technologies Desarrollo en plataformas iphone y Android Ronald Hernández (rhernandez@avantica.net) Director de Proyectos y Coordinador de la unidad Mobile en Avantica Technologies Agenda Características y desarrollo

Más detalles

PRÁCTICA SOFTWARE OPERATIVO Y DE DESARROLLO Parte I. Objetivos

PRÁCTICA SOFTWARE OPERATIVO Y DE DESARROLLO Parte I. Objetivos Objetivos El alumno conocerá algunos tipos de software operativo existentes que le serán útiles en su desempeño académico y profesional. Al final de esta práctica el alumno podrá: 1. Distinguir varias

Más detalles

Aplicateca. Guía Rápida SPONTANIA de DIALCOM NETWORKS

Aplicateca. Guía Rápida SPONTANIA de DIALCOM NETWORKS Aplicateca Guía Rápida SPONTANIA de DIALCOM NETWORKS Índice 1 Qué es SPONTANIA?...2 1.1 Más detalles... 2 1.2 Qué ventajas ofrece SPONTANIA?... 3 1.3 Cuáles son las principales funcionalidades de SPONTANIA?...

Más detalles

David Vargas B16844 II Ciclo 2013

David Vargas B16844 II Ciclo 2013 ESCUELA DE CIENCIAS DE LA COMPUTACION E INFORMATICA SISTEMAS OPERATIVOS David Vargas B16844 II Ciclo 2013 1 Tabla de contenido I. Introducción... 2 II. Reseña... 3 III. Principios de diseño... 4 IV. Aplicaciones

Más detalles

App Android: Desarrollo de aplicaciones en Android.

App Android: Desarrollo de aplicaciones en Android. App Android: Desarrollo de aplicaciones en Android. Introducción a Android Charla-taller impartida en CAMON Alicante el 11-12 de enero de 2011. Boyán Bonev, Pablo Suau, Miguel A. Lozano y el Dep. CCIA

Más detalles

Módulo 1 El lenguaje Java

Módulo 1 El lenguaje Java Módulo 1 El lenguaje 1.1 Presentación de es un lenguaje de programación desarrollado por la empresa Sun Microsystems en 1991 como parte de un proyecto secreto de investigación llamado Green Proyect, con

Más detalles

Sistema operativo móvil desarrollado por Apple Inc. Lanzada en el 2007 bajo el nombre de Iphone OS.

Sistema operativo móvil desarrollado por Apple Inc. Lanzada en el 2007 bajo el nombre de Iphone OS. Sistema operativo móvil desarrollado por Apple Inc. Lanzada en el 2007 bajo el nombre de Iphone OS. Posee la mayor tasa de adopción de nuevas actualizaciones. Al 13 de julio, el 90% posee ios 7 a menos

Más detalles

Cartera de soluciones Silk: la opción más ligera para la realización de pruebas, el desarrollo y la gestión

Cartera de soluciones Silk: la opción más ligera para la realización de pruebas, el desarrollo y la gestión Cartera de soluciones : la opción más ligera para la realización, el desarrollo y la gestión Ligera Creada tan solo con la funcionalidad que necesita Asequible Desde soluciones gratuitas hasta concesiones

Más detalles

Medios técnicos. Pdi. PPt. Medios de comunicación. Tablets

Medios técnicos. Pdi. PPt. Medios de comunicación. Tablets Medios técnicos Pdi PPt Medios de comunicación Tablets Pizarra digital (Pdi) 2 1.- Qué es una pizarra digital? Qué es una pizarra digital interactiva? Distinguimos básicamente dos tipos de pizarra digital,

Más detalles

CAPÍTULO 1. Visión general y entorno de desarrollo... 21

CAPÍTULO 1. Visión general y entorno de desarrollo... 21 Índice general Lista de acrónimos... xv Cómo leer este libro?... xvii CAPÍTULO 1. Visión general y entorno de desarrollo... 21 1.1. Qué hace que Android sea especial?... 22 1.2. Los orígenes... 23 1.3.

Más detalles

Manual de Reserva de Salas de Reúnete

Manual de Reserva de Salas de Reúnete Manual de Reserva de Salas de Reúnete El servicio Reúnete ofrece una plataforma de videoconferencia y mensajería instantánea para todas las Administraciones Públicas que estén interesadas. Gracias a este

Más detalles

Tabla de contenido. 1. Certificado Android Developer... 4. 1.1. Introducción a la programación para la plataforma Android... 4. Objetivos Clave...

Tabla de contenido. 1. Certificado Android Developer... 4. 1.1. Introducción a la programación para la plataforma Android... 4. Objetivos Clave... Tabla de contenido 1. Certificado Android Developer.... 4 1.1. Introducción a la programación para la plataforma Android.... 4... 4... 4... 4... 4 1.2. Certificado Programador Jr. para Android... 5...

Más detalles

Systems Manager Gestión de dispositivos móviles basada en la nube

Systems Manager Gestión de dispositivos móviles basada en la nube Systems Manager Gestión de dispositivos móviles basada en la nube Introducción Meraki Systems Manager ofrece gestión, diagnóstico y seguimiento centralizados y en el aire de los dispositivos móviles gestionados

Más detalles

Fundamentos de software. Introducción a la Informática 2010-2011

Fundamentos de software. Introducción a la Informática 2010-2011 Fundamentos de software Introducción a la Informática 2010-2011 Objetivos Describir las 3 categorías principales de software y su relación Explicar la correspondencia entre algoritmos y programas Discutir

Más detalles

Soluciones Corporativas para Smartphones

Soluciones Corporativas para Smartphones Libro Blanco Soluciones Corporativas para Smartphones Análisis de las soluciones de movilidad disponibles en el mercado y la contribución de soluciones de mensajería para el desarrollo del mercado móvil

Más detalles

Compilación de Minimo

Compilación de Minimo Capítulo 6 Compilación de Minimo En este capítulo se muestra al lector los pasos a seguir para, desde el código fuente disponible de Minimo, poder llegar a compilarlo obteniendo así un paquete instalable

Más detalles

Universidad Austral. Aplicación móvil para manejo de una computadora Droid Control Trabajos de Cátedra

Universidad Austral. Aplicación móvil para manejo de una computadora Droid Control Trabajos de Cátedra Universidad Austral Aplicación móvil para manejo de una computadora Droid Control Trabajos de Cátedra Autores: Tomas A. Najun Jose M. Gonzalez Docentes: Nicolas Damonte Lucas Luppani Ignacio Rodriguez

Más detalles

Lanzan Windows 8, el nuevo sistema operativo de Microsoft

Lanzan Windows 8, el nuevo sistema operativo de Microsoft Lanzan Windows 8, el nuevo sistema operativo de Microsoft Jueves, 25 de octubre 2012, Noticias Ciencia y tecnología Fuente: Pública Créditos: Microsoft: La interfaz gráfica se llama Metro y estará integrada

Más detalles

IVista: es la interfaz con la que el Presentador se comunica con la vista.

IVista: es la interfaz con la que el Presentador se comunica con la vista. Capítulo 3 MODELO DE DISEÑO 3.1 Arquitectura Modelo-Vista-Presentador La arquitectura Modelo-Vista-Presentador (MVP) [11] separa el modelo, la presentación y las acciones basadas en la interacción con

Más detalles

TEMA 1. SISTEMAS OPERATIVOS Y ALMACENAMIENTO DE INFORMACIÓN

TEMA 1. SISTEMAS OPERATIVOS Y ALMACENAMIENTO DE INFORMACIÓN TEMA 1. SISTEMAS OPERATIVOS Y ALMACENAMIENTO DE INFORMACIÓN 1 SISTEMAS OPERATIVOS. INTRODUCCIÓN. Un sistema operativo es un programa (software) que se inicia al encender el ordenador, se encarga de gestionar

Más detalles

Introducción al desarrollo para plataformas móviles con Phonegap

Introducción al desarrollo para plataformas móviles con Phonegap Introducción al desarrollo para plataformas móviles con Phonegap Si queremos desarrollar aplicaciones para móviles, qué herramienta conviene utilizar y para qué plataforma móvil? Las aplicaciones Android

Más detalles

Programación para Android

Programación para Android Programación para Android Programación para Android Contenidos Conócenos...4 Formación abierta...4 Estudios universitarios...4 Tú eres el centro...5 Nuestra metodología...6 Descripción del estudio...8

Más detalles

Historia de revisiones

Historia de revisiones Binary Rain Glosario Versión 1.1 Historia de revisiones Fecha Versión Descripción Autor 17/08/2012 1.0 Creación del documento Carolina Trias 18/08/2012 1.1 Revisado y corregido por SQA Mercedes Marzoa

Más detalles

Introducción RESPONSABILIDAD SOCIAL EMPRESARIAL (RSE) RSE Y MEDIOS DE COMUNICACIÓN

Introducción RESPONSABILIDAD SOCIAL EMPRESARIAL (RSE) RSE Y MEDIOS DE COMUNICACIÓN Introducción RESPONSABILIDAD SOCIAL EMPRESARIAL (RSE) RSE Y MEDIOS DE COMUNICACIÓN Introducción Misión Visión Uso del teléfono celular Comparación Computadoras Smarthphones Compra de aplicaciones Appstore,

Más detalles

Además podremos conectarnos a Internet sin límites para ver los partes meteorológicos, nuestro correo, la intranet del trabajo, prensa

Además podremos conectarnos a Internet sin límites para ver los partes meteorológicos, nuestro correo, la intranet del trabajo, prensa INFORMATICA A BORDO CAPITULO 17 GOOGLE EARTH (y III) (http://earth.google.es). Ahora que ya hemos aprendido a instalar y manejar Google Earth, vamos a ver en esta tercera entrega como podemos obtener conectarnos

Más detalles

Qué es una tablet? Qué se puede hacer con una tablet?

Qué es una tablet? Qué se puede hacer con una tablet? Hoy en día, uno de los utensilios más recurrentes en el terreno de la informática son las computadoras portátiles, las cuales ofrecen funcionalidades pensadas para que los usuarios puedan visualizar todo

Más detalles

UNIVERSIDAD CARLOS III DE MADRID

UNIVERSIDAD CARLOS III DE MADRID UNIVERSIDAD CARLOS III DE MADRID DEPARTAMENTO DE INFORMÁTICA GRADO EN INGENIERÍA INFORMÁTICA TRABAJO DE FIN DE GRADO SHARESHIPPING: App para compartir gastos de envío Autor: Tutores: Carlos Molina Benavente

Más detalles

Android Professional

Android Professional Android Professional Información del examen: Certificación Asociada: Android Professional Duración: 150 minutes. Número de preguntas: 70. Porcentaje para aprobar: 70%. Formato: opción Múltiple. Lenguaje:

Más detalles

MOTOROLA RHOELEMENTS DESARROLLE MENOS. OBTENGA MÁS.

MOTOROLA RHOELEMENTS DESARROLLE MENOS. OBTENGA MÁS. MOTOROLA RHOELEMENTS DESARROLLE MENOS. OBTENGA MÁS. MOTOROLA RHOELEMENTS FOLLETO EXISTEN TANTOS DISPOSITIVOS... QUE LO IDÓNEO SERÍA DISPONER DE UNA APLICACIÓN QUE FUNCIONARA EN TODOS CON RHOELEMENTS, YA

Más detalles

Entorno de desarrollo Instalación y configuración

Entorno de desarrollo Instalación y configuración Entorno de desarrollo Instalación y configuración GExCALL Formación http://gexcall.unex.es/formacion El plugin ADT (Android Development Tools) extiende al IDE Eclipse. Te permite crear y depurar aplicaciones

Más detalles

Biblio USAL. La primera aplicación de bibliotecas nativa para dispositivos móviles realizada en España

Biblio USAL. La primera aplicación de bibliotecas nativa para dispositivos móviles realizada en España José Antonio Merlo Vega Director del Servicio de Bibliotecas de la Universidad de Salamanca Biblio USAL La primera aplicación de bibliotecas nativa para dispositivos móviles realizada en España Conscientes

Más detalles

José Carlos García Cabrero Universidad Nacional de Educación a Distancia (UNED, España) Correo-e: jcgarcia@flog.uned.es

José Carlos García Cabrero Universidad Nacional de Educación a Distancia (UNED, España) Correo-e: jcgarcia@flog.uned.es Consideraciones sobre el de diseño de contenidos para los teléfonos móviles de tercera generación: materiales didácticos para la tecnología del futuro. José Carlos García Cabrero Universidad Nacional de

Más detalles

Unidad 1: Conceptos generales de Sistemas Operativos.

Unidad 1: Conceptos generales de Sistemas Operativos. Unidad 1: Conceptos generales de Sistemas Operativos. Tema 1: Introducción: 1.1 Introducción: Qué es un sistema operativo?. 1.2 Conceptos clave de un sistema operativo. 1.3 El sistema operativo como administrador

Más detalles

Análisis de aplicación: BlueFish

Análisis de aplicación: BlueFish Análisis de aplicación: BlueFish Este documento ha sido elaborado por el Centro de excelencia de software libre de Castilla La Mancha (Ceslcam, http://ceslcam.com). Copyright 2011, Junta de Comunidades

Más detalles

Sistema de grabación por celulares

Sistema de grabación por celulares Sistema de grabación por celulares Informe Técnico Interno Miguel Martínez Soler Laboratorio de Investigaciones Sensoriales - LIS Facultad de Medicina Universidad de Buenos Aires Buenos Aires, mayo de

Más detalles

Smartphone OBJETIVO. Función multitarea. Cámara digital integrada, los smartphones siguen la tendencia multimedia de los anteriores celulares.

Smartphone OBJETIVO. Función multitarea. Cámara digital integrada, los smartphones siguen la tendencia multimedia de los anteriores celulares. SMARTPHONE 1 Smartphone OBJETIVO Desarrollar una aplicación móvil para la captura de datos de campo como son el punto georeferenciado de muestreo, municipio, estado, entre otros. Todo esto para agilizar

Más detalles

Microsoft Dynamics CRM va más allá

Microsoft Dynamics CRM va más allá Microsoft Dynamics CRM va más allá Los lanzamientos de nuevas funcionalidades para Microsoft Dynamics CRM tienen lugar dos veces al año. Ha llegado la actualización del 2T de 2012, que amplía la funcionalidad

Más detalles

Objetivos del curso:

Objetivos del curso: Objetivos del curso: -Conocer las tecnologías móviles Objetivos del curso: -Conocer las tecnologías móviles -Conocer las plataformas móviles Objetivos del curso: -Conocer las tecnologías móviles -Conocer

Más detalles

Desarrollo de apps para móviles Android. Introducción a Android

Desarrollo de apps para móviles Android. Introducción a Android Desarrollo de apps para móviles Android Introducción a Android Qué es Android? I Es una plataforma de desarrollo libre y de código abierto. Ofrece gran cantidad de servicios: bases de datos, servicios

Más detalles

Tutorial 1. Instalación del entorno de desarrollo de Android. Curso de perfeccionamiento: Programación de Android TUTORIAL 1: INSTALACIÓN DEL SOFTWARE

Tutorial 1. Instalación del entorno de desarrollo de Android. Curso de perfeccionamiento: Programación de Android TUTORIAL 1: INSTALACIÓN DEL SOFTWARE Tutorial 1 Instalación del entorno de desarrollo de Android Curso de perfeccionamiento: Programación de Android 2013 1 Para desarrollar aplicaciones Android debemos instalar el siguiente software en nuestro

Más detalles

Servicios de infraestructura. Aplicaciones web

Servicios de infraestructura. Aplicaciones web 10 Julio 2013 Servicios de infraestructura Compílela o tráigala y nosotros la ejecutamos Windows Azure proporciona infraestructura a petición que se escala y se adapta a las necesidades cambiantes de cada

Más detalles

ANDROID 5 LOLLIPOP CERTIFIED APPLICATION DEVELOPER (ACAD)

ANDROID 5 LOLLIPOP CERTIFIED APPLICATION DEVELOPER (ACAD) ANDROID 5 LOLLIPOP CERTIFIED APPLICATION DEVELOPER (ACAD). CURSO CERTIFICADO EN DESARROLLO DE APLICACIONES ANDROID 5 LOLLIPOP PARA DISPOSITIVOS MOVILES DESARROLLO DEL CURSO ANDROID 5 LOLLIPOP CERTIFIED

Más detalles

online Programación para dispositivos Android 4.x

online Programación para dispositivos Android 4.x online Programación para dispositivos Android 4.x Objetivos Conocer los distintos componentes que permiten interactuar con el dispositivo con la voz. Saber cómo reproducir sonido en base a un contenido

Más detalles

Introducción al sistema operativo para dispositivos móviles Android

Introducción al sistema operativo para dispositivos móviles Android Introducción al sistema operativo para dispositivos móviles Android Ricardo S. Guadrón.(1) Juan J. Guevara.(2) Resumen. En este artículo, se hace una descripción del sistema operativo para dispositivos

Más detalles

LINUX. GNU/Linux. Cuatro características muy peculiares lo diferencian del resto de los sistemas que podemos encontrar en el mercado:

LINUX. GNU/Linux. Cuatro características muy peculiares lo diferencian del resto de los sistemas que podemos encontrar en el mercado: LINUX GNU/Linux GNU/Linux es un sistema operativo de libre distribución, basado en el kernel Linux creado por Linus Torvalds y los desarrolladores del grupo GNU (Fundación para el software libre encabezada

Más detalles

EXPERTO EN DESARROLLO DE APLICACIONES PARA DISPOSITIVOS MÓVILES

EXPERTO EN DESARROLLO DE APLICACIONES PARA DISPOSITIVOS MÓVILES Instituto de Formación Profesional CBTech Estudie desde su hogar y obtenga un certificado universitario Formación a distancia de EXPERTO EN DESARROLLO DE APLICACIONES PARA DISPOSITIVOS MÓVILES 1 Introducción

Más detalles

ESTUDIO SOBRE EL ESTADO ACTUAL DE LAS HERRAMIENTAS E-BUSINESS

ESTUDIO SOBRE EL ESTADO ACTUAL DE LAS HERRAMIENTAS E-BUSINESS ESTUDIO SOBRE EL ESTADO ACTUAL DE LAS HERRAMIENTAS E-BUSINESS Fecha: 28-08-2006 1 ÍNDICE 1.-Introducción 2.-Objetivo 3.-Herramientas E-Business 3.1.-Conceptos Generales 3.2.-Características principales

Más detalles

Introducción a Gestión de Proyectos. Beneficios del Sistema. Arquitectura y Diseño del Aplicativo. Requerimientos del Sistema.

Introducción a Gestión de Proyectos. Beneficios del Sistema. Arquitectura y Diseño del Aplicativo. Requerimientos del Sistema. Introducción a Gestión de Proyectos. Beneficios del Sistema. Arquitectura y Diseño del Aplicativo. Requerimientos del Sistema. Introducción a gestión de proyectos Un sistema de gestión de proyectos es

Más detalles

Sistema Web con Acceso a Bases de Datos Multiplataforma a Través de Teléfonos Celulares

Sistema Web con Acceso a Bases de Datos Multiplataforma a Través de Teléfonos Celulares TELEPROCESO Y SISTEMAS DISTRIBUIDOS Sistema Web con Acceso a Bases de Datos Multiplataforma a Través de Teléfonos Celulares L I C. S E R G I O A N D R É S S O T O Guía de la Presentación Marco Conceptual

Más detalles

Informática y Programación Escuela de Ingenierías Industriales y Civiles Grado en Ingeniería en Ingeniería Química Curso 2010/2011

Informática y Programación Escuela de Ingenierías Industriales y Civiles Grado en Ingeniería en Ingeniería Química Curso 2010/2011 Módulo 1. Fundamentos de Computadores Informática y Programación Escuela de Ingenierías Industriales y Civiles Grado en Ingeniería en Ingeniería Química Curso 2010/2011 1 CONTENIDO Tema 1. Introducción

Más detalles

Instalación de Eclipse Galileo y depuradores compatibles con OpenMPI y OpenMP

Instalación de Eclipse Galileo y depuradores compatibles con OpenMPI y OpenMP Instalación de Eclipse Galileo y depuradores compatibles con OpenMPI y OpenMP Programación Distribuida y Paralela Universidad de Granada Departamento del LSI Por: Daniel Guerrero Martínez Sergio Rodríguez

Más detalles

Symantec Mobile Management 7.2

Symantec Mobile Management 7.2 Gestión de dispositivos integrada, segura y escalable Hoja de datos: Gestión y movilidad de puntos finales Descripción general La rápida proliferación de dispositivos móviles en el lugar de trabajo está

Más detalles