Source: http://docplayer.es/2804240-Universidad-veracruzana-monografia-licenciado-en-sistemas-computacionales-administrativos-elias-diaz-de-la-vega-cordova.html
Timestamp: 2016-10-25 14:13:03+00:00

Document:
⭐UNIVERSIDAD VERACRUZANA MONOGRAFÍA. Licenciado en Sistemas Computacionales Administrativos. Elías Díaz de la Vega Córdova
UNIVERSIDAD VERACRUZANA MONOGRAFÍA. Licenciado en Sistemas Computacionales Administrativos. Elías Díaz de la Vega Córdova
Download "UNIVERSIDAD VERACRUZANA MONOGRAFÍA. Licenciado en Sistemas Computacionales Administrativos. Elías Díaz de la Vega Córdova"
María Rosario Casado Segura
1 UNIVERSIDAD VERACRUZANA Facultad de Contaduría y Administración Programación en Android para control de sensores en un teléfono móvil inteligente MONOGRAFÍA Para obtener el título de: Licenciado en Sistemas Computacionales Administrativos Presenta: Elías Díaz de la Vega Córdova Asesor: M.C. Rubén Álvaro González Benítez Cuerpo Académico: Tecnologías de la Información y las Organizaciones Inteligentes en la sociedad de conocimiento. Xalapa-Enríquez, Veracruz Agosto 20132 3 UNIVERSIDAD VERACRUZANA Facultad de Contaduría y Administración Programación en Android para control de sensores en un teléfono móvil inteligente MONOGRAFÍA Para obtener el título de: Licenciado en Sistemas Computacionales Administrativos Presenta: Elías Díaz de la Vega Córdova Asesor: M.C. Rubén Álvaro González Benítez Cuerpo Académico: Tecnologías de la Información y las Organizaciones Inteligentes en la sociedad de conocimiento. Xalapa-Enríquez, Veracruz Agosto 20134 Agradecimientos A Dios por concederme las bendiciones y oportunidades necesarias para concretar mi desarrollo académico. A mis padres Patricia y Elías, por proporcionarme el sustento necesario para obtener mi educación, porque siempre me han apoyado, me han dado su amor incondicional y han creído en mí. A mi hermano Miguel Ángel, porque sé que cuento con su apoyo en todas las metas familiares y personales que me proponga. A mis abuelos, tías y tíos, quienes me han inculcado los valores necesarios siendo ejemplos a seguir para ser una persona honrada, honesta, productiva. A mis amigas y amigos, porque con su apoyo y amistad he aprendido que es importante tener personas honestas y fieles a mi lado. A todos los maestros que han participado en mi vida académica, ya que gracias a los conocimientos que me han impartido he podido llegar a este importante momento de mi carrera profesional. A mi asesor M.C. Rubén Álvaro, por haber aceptado trabajar conmigo en esta etapa y por su apoyo brindado durante la realización este proceso.5 ÍNDICE Resumen... 1 INTRODUCCIÓN... 2 CAPITULO I: ANDROID Concepto básico de Android Antecedentes Desarrollo y Arquitectura Kernel Linux Librerías Entorno de ejecución (Android Runtime) Marco de aplicaciones (Application framework) Aplicaciones Generalidades y Características Versiones Existentes Android beta Android 1.0 Apple Pie Android 1.1 Banana Bread Android 1.5 Cupcake Android 1.6 Donut Android 2.0/2.1 Eclair Android 2.2.x Froyo (Yogurth helado) Android 2.3.x Gingerbread Android 3.x Honeycomb Android 4.0.x Ice Cream Sandwich Android 4.1 Jelly Bean Android 4.2 Jelly Bean Otros Sistemas Operativos Móviles II6 1.6.1 ios Blackberry OS Windows Phone CAPITULO II: SMARTPHONE Introducción al Smartphone Antecedentes Software Sistema operativo móvil Aplicaciones Hardware Pantalla Microprocesador Batería Memoria Cámara Sensores Conectividad CAPITULO III: PROGRAMACIÓN EN ANDROID Lenguajes de programación en Android Java Basic4Android Mono App Inventor LiveCode Componentes de una aplicación Android Herramientas y entorno de desarrollo para programar en Android Descarga e instalación de herramientas III7 3.3.2 Características y funciones del IDE Eclipse con SDK Android Crear aplicaciones con Eclipse Crear un nuevo proyecto Estructura del proyecto Ejecutar el proyecto Aplicación Básica CAPITULO IV: CONTROL DE SENSORES EN ANDROID Sensores en Android Marco para sensores de Android Tipos de sensores Aplicación para sensores CONCLUSIONES FUENTES DE INFORMACIÓN GLOSARIO INDICE DE FIGURAS INDICE DE TABLAS IV8 Resumen El presente trabajo recepcional realiza un análisis y describe el uso básico de la programación en el sistema operativo móvil Android y como se puede utilizar para controlar los sensores que integran un teléfono móvil inteligente o Smartphone, todo esto mediante la descripción del lenguaje y sus características así como también de la descripción de los resultados obtenidos mediante pruebas realizadas en software especializado y en un teléfono móvil inteligente para ejemplificar su funcionamiento. Para comprender ampliamente estos temas se inicia abordando los antecedentes de Android y del Smartphone, como surgieron y se desarrollaron, cuáles son sus funciones, compatibilidad, tipos y características y como se volvieron una parte fundamental de las tecnologías de la información y la comunicación. Posteriormente se procede a analizar qué es y cómo funciona la programación en Android, porqué se ha vuelto uno de los sistemas móviles más importante a nivel mundial, que lenguaje de programación maneja y con qué software se puede trabajar, así como también de qué manera se realiza una aplicación básica y que resultados se obtienen que demuestre su funcionamiento a nivel práctico. Finalmente se habla del control de sensores mediante la programación en Android, porque son importantes para el Smartphone, como funcionan y como se pueden controlar, después se realizara una aplicación para ejemplificar su funcionamiento en el dispositivo, con qué tipos de sensores cuenta así como también mostrar los datos que mide cada uno. 19 INTRODUCCIÓN10 En la actualidad las tecnologías de la información y las comunicaciones forman una parte muy importante en el funcionamiento de la sociedad, ya que al vivir en un mundo cada vez más dinámico y globalizado se vuelve de suma importancia para una persona estar en comunicación constante e informado de lo que sucede a su alrededor, ya sea por cuestiones de negocios para estar en contacto con sus colegas de trabajo, clientes, etc., o a nivel personal mediante el uso de las redes sociales, chat, etc. Esto sucede gracias a que hemos visto como la tecnología en el sector de los dispositivos de comunicación móviles ha ido evolucionando tanto a nivel de hardware como también de software, transformándose de teléfonos celulares que solo soportaban funciones básicas como realizar llamadas y enviar mensajes de texto, a dispositivos Smartphone con una gran capacidad de procesamiento de datos que permiten realizar una amplia cantidad de funciones como conectarse a internet, chatear, enviar , escuchar música, tomar y ver tanto videos como fotografías, utilizar aplicaciones multitarea, etc. (Cassavoy, 2013). El éxito de estos dispositivos se debe a su capacidad de conectividad WEB(por sus siglas en inglés World Wide Web) ya que pueden hacer la conexión en cualquier lugar ya sea mediante un plan de datos proporcionado por el operador de la red telefónica o mediante un punto Wi-Fi, y a la versatilidad que tienen ya que pueden realizar una amplia cantidad de tareas mediante la ejecución de las aplicaciones o programas que se generan para los Smartphone y que cubren diversas categorías ya sean aplicaciones de entretenimiento, financieras, juegos, etc. (Cassavoy, 2013). El interés por los Smartphone se ha ido incrementando considerablemente con el paso de los años y queda demostrado ya que en el periodo de 2011 a 2012 las 311 ventas a nivel mundial de estos dispositivos aumentaron de 472 millones (Sánchez Onofre, 2012) a 717 millones de unidades (Redacción, 2012). Esto comenzó a tomar impulso en el año de 2007 cuando la compañía Apple que se distingue por fabricar dispositivos innovadores y versátiles lanza al mercado su Smartphone eliphone, el cual genera una gran expectación ya que revoluciona el mercado al ser el primer dispositivo que combinaba las funciones de un teléfono celular con las de una PC(por sus siglas en inglés Personal Computer) mediante el uso de su sistema operativo móvil el ios, y que en lugar de utilizar un teclado numérico convencional funcionaba con una pantalla táctil. A partir de esta situación y observando el gran impacto e interés que se genera en los consumidores por adquirir un iphone fue que otros fabricantes deciden entrar al mercado y construir sus propios Smartphone (EFECOM, 2012). El crecimiento y expansión de este mercado ha ocasionado que exista una amplia gama de Smartphones de diversos fabricantes, precios y características, aparte de los de Apple en los cuales sobre salen Samsung, Sony, Nokia, HTC, Motorola y BlackBerry, los cuales funcionan con diversos sistemas operativos móviles como el Android, Windows Mobile, Symbian, Blackberry OS. El mercado se encuentra liderado actualmente por los Smartphone que funcionan mediante el sistema operativo móvil de Google el Android dejando en segundo lugar a los Smartphone que utilizan ios de Apple. En el 2012 el Android ocupo el 68.8% del dominio de mercado mientras que el ios quedo muy atrás con el 18.8%, esto se debe principalmente a la gran variedad de equipos que existen en cada tamaño y cada precio imaginable utilizando el sistema operativo móvil Android, caso contrario al iphone de Apple del cual solo se han lanzado seis versiones a la venta. Otro ejemplo de esta diferencia son las ventas directas de los fabricantes de los cuales Samsung el desarrollador más fuerte de equipos Android vendió millones de unidades en 2012 contra 130 millones de Apple (Kelly, 2013). 412 La gran variedad de equipos Android que existen se debe a que Google lanzo este sistema operativo móvil de licencia y código abierto, esto quiere decir que los desarrolladores tienen acceso al código fuente para utilizarlo de manera libre y abierta por lo que pueden manipularlo y adaptarlo para aplicarlo de diferentes maneras a sus dispositivos con lo cual varias marcas pueden fabricar sus Smartphone utilizando el Android. Caso contrario al ios el cual su código fuente y licencia no son abiertos por lo cual el sistema y todas las aplicaciones desarrolladas en este lenguaje solo podrán ser utilizados en los dispositivos desarrollados por Apple. El ser un sistema de licencia y código abierto ha permitido al Android crecer masivamente a nivel mundial alcanzando la activación de 400 millones de dispositivos en el 2012 (Google, 2012), esto se debe a la plataforma versátil de desarrollo que ofrece en la cual los programadores pueden contribuir al desarrollo del sistema y los dispositivos sin costo alguno, así como también realizar sus propias aplicaciones en distintas áreas, ejecutarlas en los Smartphone, personalizarlos, realizar pruebas de hardware, etc. La programación en Android es similar a la realizada en Java a pesar de ser un sistema basado en UNIX, para trabajar en este lenguaje se debe conseguir el kit de desarrollo elaborado por Google el cual es gratuito y contiene las herramientas necesarias para programar tales como el código fuente, librerías, documentación, emulador, tutoriales, etc. Una ventaja para el programador es que estas herramientas son compatibles con diferentes entornos de programación o IDE (por sus siglas en inglés Integrated Development Enviroment) mediante los plug-in correspondientes también elaborados por Google. Con todas las herramientas proporcionadas los programadores pueden realizar diversas aplicaciones que posteriormente pueden usar en sus Smartphone o comercializarlas mediante la app store (application store) de Google: la Google Play, así como también hacer personalizaciones y modificaciones al sistema o realizar pruebas de rendimiento y funcionamiento. 513 Una de las innovaciones que establecieron los Smartphone aparte del software son las del hardware en sí, ya que vienen fabricados con procesadores similares a los de las PC con los cuales ejecutan tanto el sistema operativo como las aplicaciones. La mayoría de los equipos ya no funcionan con teclado numérico si no que utilizan unos cuantos botones y una pantalla táctil que de acuerdo al equipo puede variar en tamaño y en resolución con lo que en algunos dispositivos se pueden generar imágenes en alta definición como nunca antes en un teléfono celular. Como los celulares más recientes los Smartphone también traen cámaras que pueden grabar video y tomar fotografías las cuales varían desde las normales con 2 MP (Megapíxeles) a las más poderosas de 15 MP y alta definición (Cellphoneshop.cc, 2013). Otra parte muy importante e innovadora característica de los Smartphone son los sensores con los que están construidos, ya que estos componentes capturan datos como la localización, temperatura, posición, movimiento, condiciones del entorno, etc., que el dispositivo procesa y que ayudan para su operación y a las aplicaciones, ya que mediante estos datos puede realizar diversas acciones como por ejemplo hacer uso de aplicaciones geográficas con mapas para saber la ubicación del usuario, saber la temperatura del ambiente y condiciones de luminosidad, proximidad de un objeto o lugar, usar un juego mediante el movimiento del dispositivo, etc. (Google, 2012). Mediante el entorno de programación en Android se puede interactuar con los sensores que integran el Smartphone, elaborando código o una aplicación especial es posible realizar diversas tareas con ellos como saber con qué tipos de sensores fue construido el dispositivo, como funcionan, que datos registran y analizan, monitorear si operan de manera correcta, etc. 614 CAPITULO I: ANDROID15 1.1 Concepto básico de Android Android es un núcleo de sistema operativo móvil desarrollado por Android Inc. y posteriormente comercializado por Google. Se diferencia de los demás sistemas operativos móviles ya que está basado en Linux y es multiplataforma, esto quiere decir que diseñado principalmente para usarse en diversos dispositivos, principalmente los móviles touchscreen tales como el Smartphone y Tablet (Edureka, 2013). Es de licencia y código libre, por lo cual el sistema permite realizar a cualquier programador o desarrollador modificaciones, mejoras o inclusive generar sus propias aplicaciones que accedan y trabajen con las funciones del dispositivo (Global Positioning System o GPS, sensores, llamadas, WEB, etc.) mediante lenguaje de programación Java para posteriormente compilarlas a código nativo de Android (Android SO, 2011). 1.2 Antecedentes En Octubre de 2003 es fundada la compañía de Android Inc. en la comunidad de Palo Alto California por los desarrolladores Andy Rubin, Rich Miner, Nick Sears y Chris White, quienes estaban interesados en desarrollar dispositivos móviles inteligentes los cuales fueran capaces de ubicar la localización del usuario y sus preferencias. Durante los primeros años la compañía trabajo en sus proyectos de manera secreta y sin revelar mucha información acerca de ellos (Editorial Team, 2013). 816 Posteriormente en Agosto de 2005 Android Inc. es adquirida por Google colocándola como una de sus subsidiarias, conservando al personal esencial y continuando el proyecto de desarrollar un sistema operativo móvil basado en el Linux. Mientras el equipo continuaba trabajando en los proyectos, Googlecomenzó a publicitar la plataforma y hacer alianzas entre varios fabricantes de dispositivos y proveedores de servicio telefónico prometiendo brindarles de un sistema flexible y actualizable. Aunque el proyecto y los trabajos continuaban de manera secreta se comenzaba a rumorar que Google estaba interesada en entrar al mercado de las telecomunicaciones móviles. El año 2007 fue trascendental y de gran relevancia para el proyecto ya que el 5 de noviembre es revelado al público el sistema operativo móvil Android y liberado el kit de desarrollo de software (Software Developmet Kit o SDK) para programadores el cual incluía la mayoría del código fuente bajo la licencia Apache, la cual es una licencia libre y de código abierto. También ese mismo día se instituye la Open Handset Alliance, un consorcio de 78 compañías tecnológicas de los cuales destacan Google, los fabricantes de dispositivos Samsung y HTC (High Tech Computer), los distribuidores de servicio celular T-Mobile y Sprint Nextel, y los fabricantes de componentes electrónicos Qualcomm y Texas Instruments entre otros, cuyo propósito era establecer estándares abiertos para la fabricación de dispositivos móviles (Antocara, 2012). Un año después de su revelación el 23 de septiembre de 2008 sale la primera versión comercial del sistema el Android 1.0 junto con el famoso logotipo del robot verde que distingue a la marca, un mes más tarde el 22 de octubre es puesto a la venta el primer Smartphone comercial que corre con Android: el HTC Dream. Desde aquel año hasta la actualidad han salido numerosas versiones nuevas de Android, las cuales han ido actualizando progresivamente el sistema, agregándole nuevas funciones y corrigiendo fallos de versiones anteriores. En el 2010 Google lanza su serie de dispositivos móviles Nexus, la cual es una línea de Smartphones y tablets que funcionan exclusivamente con Android pero 917 que son construidos por los fabricantes asociados. Google utiliza esta línea como sus productos insignia para demostrar las capacidades de Android. 1.3 Desarrollo y Arquitectura Android es desarrollado en privado por Google hasta que terminan de realizar las actualizaciones y cambios al código, posteriormente es liberado al público. Solo en algunos dispositivos se incluye el código fuente de Android sin modificación alguna, como en los de la serie Nexus, en los demás casos al haber tanta variedad de equipos algunos fabricantes deben hacer adaptaciones para que los componentes de sus modelos funcionen correctamente con el sistema. El sistema operativo se encuentra estructurado en una arquitectura ARM (por sus siglas en inglés Acorn RISC Machine o Advanced RISC Machine) de capas, la cual facilita al desarrollador la creación de aplicaciones así como también acceder a las capas más bajas mediante el uso de librerías sin necesidad de tener que programar a bajo nivel las funciones para que dichas aplicaciones hagan uso de los componentes de hardware de los Smartphone (Rodríguez, 2011). Cada una de las capas utiliza elementos de la capa inferior para realizar sus actividades, es por ello que a este tipo de arquitectura se le conoce también como pila. En la Figura 1.1 se muestran cada una de las capas que integran la arquitectura de Android, las cuales se describen a continuación, señalando el funcionamiento y características de cada una de ellas, comenzando desde el nivel inferior (kernel) hasta llegar al nivel superior (aplicaciones). 1018 Figura 1.1 Capas de Android (Vico, 2011) Kernel Linux El núcleo del sistema operativo Android es un kernel Linux versión 2.6, similar al que puede incluir cualquier distribución de Linux, como Ubuntu, solo que adaptado a las características de hardware del dispositivo en el que se ejecutará Android generalmente un Smartphone (Rodríguez, 2011). Proporciona una capa de abstracción para los elementos hardware a los que tienen que acceder las aplicaciones. Esto permite que se pueda acceder a esos 1119 componentes sin necesidad de conocer el modelo o características precisas de los que están instalados en cada teléfono. De esta manera, si una aplicación necesita, por ejemplo la brújula, podrá utilizar la que incluya el teléfono, sin importar cuál sea. Para cada elemento hardware del teléfono existe un controlador (driver) dentro del kernel que permite utilizarlo desde el software. Además de proporcionar controladores de hardware, el kernel se encarga de gestionar los diferentes recursos del teléfono (energía, memoria, etc.) y del sistema operativo (procesos, elementos de comunicación, etc.). El kernel de Android posee la licencia GNU GPLv2 el cual implica que su código se debe poner al alcance de todos y que todos pueden hacer con este código lo que parezca oportuno: modificarlo, ampliarlo, recortarlo, pero siempre con la obligación de volver a registrarlo bajo la licencia de Google (Antocara, 2012) Librerías La siguiente capa que se sitúa justo sobre el kernel la componen las bibliotecas nativas de Android, también llamadas librerías. Están escritas en C o C++ y compiladas para la arquitectura de hardware específica del teléfono. Estas normalmente están desarrolladas por el fabricante, quien también se encarga de instalarlas en el dispositivo antes de ponerlo a la venta. El objetivo de las librerías es proporcionar funcionalidad a las aplicaciones para tareas que se repiten con frecuencia, evitando tener que codificarlas cada vez que se ejecutan y garantizando que se llevan a cabo de la forma más eficiente (Rodríguez, 2011). Como explica Vico (2011), algunas de las bibliotecas que se incluyen habitualmente son: Gestor de superficies (Surface Manager): se encarga de componer las imágenes que se muestran en la pantalla a partir de capas gráficas 2D ( 2 dimensiones) y 3D (3 dimensiones). Cada vez que la aplicación pretende 1220 dibujar algo en la pantalla, la biblioteca no lo hace directamente sobre ella. En vez de eso, realiza los cambios en imágenes (mapas de bits) que almacena en memoria y que después combina para formar la imagen final que se envía a pantalla. Esto permite realizar con facilidad diversos efectos: superposición de elementos, transparencias, transiciones, animaciones, etc. SGL (Scalable Graphics Library): desarrollada por Skia (empresa adquirida por Google en 2005) y utilizada tanto en Android como en Chrome (navegador web de Google), se encarga de representar elementos en dos dimensiones. Es el motor gráfico 2D de Android. OpenGL ES (OpenGL for Embedded Systems): motor gráfico 3D basado en las API (Application Program Interface) de OpenGL ES 1.0, 1.1 (desde la versión 1.6 de Android) y 2.0 (desde la versión 2.2 de Android). Utiliza aceleración hardware (si el teléfono la proporciona) o un motor software altamente optimizado cuando no la hay. Bibliotecas multimedia: basadas en OpenCORE, permiten visualizar, reproducir e incluso grabar numerosos formatos de imagen, vídeo y audio como: JPG, GIF, PNG, MPEG4 AVC (H.264), MP3, AAC o AMR (por sus siglas en inglés Join Photograph Expert Group, Graphics Interchange Format, Portable Network Graphics, Moving Picture Experts Group 4, MPEG Audio Layer 3, Advanced Audio Coding, Audio/Modem Riser). WebKit: Es el motor web utilizado por el navegador (tanto como aplicación independiente y como adjunto en otras aplicaciones). Es el mismo motor que utilizan los navegadores Google Chrome y Safari (el navegador de Apple). SSL (Secure Sockets Layer): proporciona seguridad al acceder a Internet por medio de criptografía. FreeType: permite mostrar fuentes tipográficas, tanto basadas en mapas de bits como vectoriales. SQLite: motor de bases de datos relacionales, disponibles para todas las aplicaciones. 1321 Biblioteca C de sistema (libc): está basada en la implementación de Berkeley Software Distribution (BSD), pero optimizada para sistemas Linux adjuntados. Proporciona funcionalidad básica para la ejecución de las aplicaciones Entorno de ejecución (Android Runtime) El entorno de ejecución de Android, aunque se apoya en las bibliotecas mencionadas en la capa anterior no se considera parte de ella, ya que también está formado por bibliotecas. En concreto por las bibliotecas esenciales de Android, que incluyen la mayoría de las funciones de las bibliotecas habituales de Java así como otras específicas de Android. El componente principal del entorno de ejecución de Android es la máquina virtual Dalvik, la cual que ejecuta todas y cada una de las aplicaciones no nativas de Android. Las aplicaciones se codifican normalmente en Java y son compiladas, pero no para generar un ejecutable binario compatible con la arquitectura hardware específica del dispositivo Android. En lugar de eso, se compilan en un formato específico para la máquina virtual Dalvik (.dex), que es la que las ejecuta. Esto permite compilar una única vez las aplicaciones y distribuirlas ya compiladas teniendo la total seguridad de que podrán ejecutarse en cualquier dispositivo Android que disponga de la versión mínima del sistema operativo que requiera cada aplicación. Aunque las aplicaciones se escriben en Java, Dalvik no es realmente una máquina virtual Java. Por esta razón no es compatible con el bytecode Java (instrucciones ejecutables independientes de la arquitectura hardware) que ejecutan las máquinas virtuales Java normales. Java se usa únicamente como lenguaje de programación, pero los ejecutables que se generan con el SDK de Android no son ejecutables Java convencionales y por lo tanto no se pueden ejecutar en máquinas virtuales de Java. Durante el proceso de compilación de los programas 1422 Java (normalmente archivos.java) que se generan utilizan el bytecode habitual (archivos.class). Pero esos archivos son convertidos al formato específico de Dalvik en el proceso final (.dex, de Dalvik executable). Las aplicaciones Android se ejecutan cada una en su propia instancia de la máquina virtual Dalvik, evitando así interferencias entre ellas, y tienen acceso a todas las bibliotecas mencionadas antes y, a través de ellas, al hardware y al resto de recursos gestionados por el kernel (Vico,2011) Marco de aplicaciones (Application framework) La siguiente capa está integrada por todas las clases y servicios que utilizan directamente las aplicaciones para realizar sus actividades. La mayoría de los componentes de esta capa son librerías Java que acceden a los recursos de las capas anteriores a través de la máquina virtual Dalvik. Nos dice Vico (2011) que entre las más importantes se encuentran las siguientes: Administrador de actividades (Activity Manager): se encarga de controlar el ciclo de vida de las actividades y la propia pila de actividades. Las actividades se pueden definir como las ventanas que se muestran, una sobre otra, en la pantalla del dispositivo Android (usando un concepto de ventana similar al de los sistemas operativos gráficos de PC, aunque el funcionamiento en Android sea muy diferente). Administrador de ventanas (Windows Manager): se encarga de organizar lo que se muestra en pantalla, creando superficies que pueden ser rellenadas por las actividades. Proveedor de contenidos (Content Provider): permite encapsular un conjunto de datos que va a ser compartido entre aplicaciones creando una capa de abstracción que hace accesible dichos datos sin perder el control sobre cómo se accede a la información. Por ejemplo: uno de los proveedores de contenido existentes permite a las aplicaciones acceder a 1523 los contactos almacenados en el teléfono, esta biblioteca permite crear también proveedores para permitir que otras aplicaciones accedan a dicha información. Vistas (Views): si las actividades se comparan con las ventanas de un sistema operativo de PC, las vistas se asemejan a los controles que se suelen incluir dentro de esas ventanas. Android proporciona numerosas vistas con las que construir las interfaces de usuario: botones, cuadros de texto, listas, etc. También proporciona otras opciones más sofisticadas, como un navegador web o un visor de Google Maps. Administrador de notificaciones (Notification Manager): proporciona servicios para notificar al usuario cuando algo requiera su atención. Normalmente las notificaciones se realizan mostrando alerta en la barra de estado, pero esta biblioteca también permite emitir sonidos, activar el vibrador o hacer pardear los LED (por sus siglas en inglés, Light Emitting Diode) del teléfono. Administrador de paquetes (Package Manager): las aplicaciones Android se distribuyen en paquetes (archivos.apk) que contienen tanto los archivos.dex como todos los recursos y archivos adicionales que necesite la aplicación, para facilitar su descarga e instalación. Esta biblioteca permite obtener información sobre los paquetes actualmente instalados en el dispositivo Android, además de gestionar la instalación de nuevos paquetes que sean necesarios. Administrador de telefonía (Telephony Manager): proporciona acceso a la pila hardware de telefonía del dispositivo Android. Permite realizar llamadas o enviar y recibir SMS/MMS (por sus siglas en inglés Short Messagins Service/Multimedia Messaging Service), aunque no permite reemplazar o eliminar la actividad que se muestra cuando una llamada está en curso (por motivos de seguridad). Administrador de recursos (Resource Manager): proporciona acceso a todos los elementos propios de una aplicación que se incluyen directamente en el código: cadenas de texto traducidas a diferentes idiomas, imágenes, 1624 sonidos e incluso disposiciones de las vistas dentro de una actividad (layouts). Permite gestionar esos elementos fuera del código de la aplicación y proporcionar diferentes versiones en función del idioma del dispositivo o la resolución de pantalla que tenga. Administrador de ubicaciones (Location Manager): permite determinar la posición geográfica del dispositivo Android (usando el GPS o las redes disponibles) y trabajar con mapas. Administrador de sensores (Sensor Manager): permite gestionar todos los sensores hardware disponibles en el dispositivo Android: acelerómetro, giroscopio, sensor de luminosidad, sensor de campo magnético, brújula, sensor de presión, sensor de proximidad, sensor de temperatura, etc. Cámara: proporciona acceso a las cámaras del dispositivo Android, tanto para tomar fotografías como para grabar vídeo. Multimedia: conjunto de bibliotecas que permiten reproducir y visualizar audio, vídeo e imágenes en el dispositivo Aplicaciones En la última capa se incluyen todas las aplicaciones del dispositivo, tanto las que tienen interfaz de usuario como las que no, las nativas (programadas en C o C++) y las administradas (programadas en Java), las que vienen preinstaladas en el dispositivo y aquellas que el usuario ha instalado. En este nivel se encuentra la aplicación principal del sistema Inicio (Home), también llamada a veces lanzador (launcher), la cual permite ejecutar otras aplicaciones, proporciona la lista de aplicaciones instaladas y muestra diferentes escritorios donde se pueden colocar accesos directos a aplicaciones o utilizar pequeñas aplicaciones incrustadas o widgets, que también forman parte de esta capa (Rodríguez, 2011). 1725 1.4 Generalidades y Características A continuación se mencionan algunas de las características que hacen tan atractivo y popular a Android (Google, 2012): Pantallas principales personalizables: Una peculiaridad de Android es que cuenta con cinco pantallas, que pueden ser personalizadas y acceder desde ellas a todas las partes del sistema. En cada pantalla los usuarios pueden manejar y modificar los widgets, aplicaciones y fondos de pantalla de forma independiente. Además, cada pantalla tiene un botón que permite acceder a todas las aplicaciones instaladas así como a las demás funcionalidades: agendas de contactos, navegador, etc. Widgets: Los widgets son una de las herramientas más potentes del sistema operativo de Google, ya que permiten tener toda la información más importante al alcance de la mano sin necesidad de abrir ninguna aplicación. Existen widgets para casi cualquier cosa, desde meteorología calendarios, marcadores deportivos, información financiera, así como también simples adornos o listas To-Do. Instalación de aplicaciones desde la PC: En Android Market, con su versión web, y con otras aplicaciones de terceros, se pueden buscar aplicaciones que se necesiten e instalarlas directamente con el PC, ya que se puede sincronizar automáticamente en el teléfono sin necesidad de conexión de cables. Controlar el móvil en la PC: Otra opción es la de usar el ordenador para controlar el móvil, permitiendo desde enviar textos directamente desde Chrome a incluso acceder a funciones básicas del móvil desde la PC. Integración de servicios Google: la experiencia de integración de todos los servicios de Google en un equipo Android permiten una gran variedad de funciones para la satisfacción del usuario. Desarrollo gratuito: Una gran ventaja que ofrece Android sobre los demás sistemas es que brinda la capacidad y las herramientas para desarrollar 1826 aplicaciones que se pueden ejecutar en sus dispositivos sin costo alguno, con lo cual actualmente existen millones de aplicaciones disponibles. Código fuente abierto: Se encuentra disponible en para analizar y modificar. Este código fuente permite a los fabricantes de Smartphone y tabletas, crear interfaces de usuario y añadir características para incorporarlas a sus dispositivos. Pero no solo los fabricantes de dispositivos móviles pueden hacerlo, los desarrolladores también, puesto que ahora están en igualdad de condiciones. Compatibilidad: Android puede ser ejecutado en muchos dispositivos diferentes, ya que viene con herramientas que ayudan a desarrollar aplicaciones Cross-compatibility, lo cual significa que Google solo permite que las aplicaciones funcionen en dispositivos compatibles. Es decir, si una aplicación requiere cámara frontal, entonces solo podrá ser vista en el Android Market por Smartphones que cumplan con esta característica. Conectividad: Soporta tecnologías de conectividad como Wi-Fi, Bluetooth, GSM (Global System for Mobile communications), EDGE, UMTS (Universal Mobile Telecommunications System), WiMAX (Worldwide Interoperability for Microwave Access) y otras más. Mensajería: Las formas más comunes como SMS y MMS están disponibles además del servicio Push Messaging de Android. Video llamada: A partir de la versión HoneyComb, Android soporta video llamadas a través de Google Talk. Soporte multimedia: Puede soportar los formatos más conocidos como JPEG, MP3, MPEG-4, WAV (Windows Audio Video), además de otros como WebM, H.263 y H.264. Multi- táctil: Android cuenta con soporte base para equipos móviles con pantallas multi táctiles. Almacenamiento: Posee una base SQLite, la cual es utilizada para almacenamiento de datos. 1927 1.5 Versiones Existentes Google lanza al mercado una actualización del sistema aproximadamente de cada 6 a 9 meses corrigiendo fallos de versiones anteriores, mejorando algunas funciones e incluyendo otras nuevas. Aunque un aspecto negativo es que al haber tantos modelos diferentes de dispositivos a veces tarda algunos meses en salir su actualización correspondiente, ya que se debe adaptar el código para que funcione adecuadamente con el hardware (Editorial Team, 2013). Otra de las peculiaridades de Android es que Google bautiza sus actualizaciones en orden alfabético y generalmente escoge nombres de postres. Estas son las versiones de Android hasta el momento (Wikipedia, 2013): Android beta La versión beta de Android fue lanzada el 5 de noviembre del 2007, mientras el Software development kit (SDK) fue lanzado el 12 de noviembre del Android 1.0 Apple Pie Android 1.0, la primera versión comercial del software, fue lanzado el 23 septiembre de El primer dispositivo Android, el HTC Dream, incorporó las siguientes características de Android 1.0: Android Market Programa con un mercado para la descarga y actualización de aplicaciones. Navegador Web para visualizar, páginas webs en full HTML (HyperText Markup Language) y XHTML (Extensible HiperText Markup Language) múltiples páginas mostradas como ventanas. 2028 Soporte Cámara sin embargo esta versión carece de la opción de cambiar la resolución de la cámara, balance de blancos, calidad, etc. Carpetas permiten la agrupación de un número de íconos de aplicaciones dentro de una simple carpeta en la pantalla de inicio. Acceso a servidores de correo electrónico por web, soporte POP3 (Post Office Protocol 3), IMAP4 (Internet Message Access Protocol), y SMT (Surface Mount Technology). Sincronización de Gmail (Google mail) con la aplicación de Gmail. Sincronización de Google Contacts aplicación de personas. Sincronización de Google Calendar con la aplicación de calendario Google Maps con Latitude y Street View para ver mapas e imágenes satelitales, también como para encontrar negocios locales y obtener direcciones de manejo usando GPS. Google Sync, permite la toda la administración al aire de Gmail, Personas, y Calendario Google Search, permite a los usuarios buscar en internet, aplicaciones del teléfono móvil, contactos, calendario, etc. Mensajería instantánea Google Talk. Mensajería instantánea, mensajes de texto, y MMS. Reproductor de medios, habilitada administración, importación, y reproducción de archivos multimedia, sin embargo, esta versión carece de soporte video y estéreo por Bluetooth. Notificaciones aparecen en la barra de estado, con opciones para configurar alertas por ringtone, LED o vibración. Discador de voz permite hacer discado y llamar sin escribir nombre o número. Fondo de escritorio permite al usuario configurar una imagen de fondo o una foto detrás de los íconos y widgets de la pantalla de inicio. Reproductor de video YouTube. 2129 Otras aplicaciones incluyen: Alarma, Calculadora, Discado (teléfono), Pantalla de inicio (launcher), Imágenes (Galería) y ajustes. Soporte para Wi-Fi y Bluetooth Android 1.1 Banana Bread El 9 de febrero de 2009, La actualización Android 1.1 fue lanzada, inicialmente para el HTC Dream solamente. Android 1.1 fue conocido como Petit Four internamente, aunque este nombre no se utilizó oficialmente. La actualización resolvió fallos, cambio la API(Application Program Interface) y agregó una serie de características: Detalles y reseñas disponibles cuando un usuario busca por negocios en los mapas. Pantalla en llamado más larga por defecto cuando están en uso los parlantes del teléfono, además la habilidad de mostrar/esconder el discado. Posibilidad de guardar los archivos adjuntos en los mensajes. Añadido soporte para marquesina en diseños de sistemas Android 1.5 Cupcake El 30 de abril de 2009, La actualización de Android 1.5 fue lanzada, basada en núcleo Linux Esta fue la primera versión en usar un nombre basado en un postre, un tema que se utilizaría para todas las versiones de aquí en adelante. La actualización incluye varias nuevas características y correcciones de interfaz de usuario: 2230 Soporte para teclados virtuales de terceros con predicción de texto y diccionario de usuarios para palabras personalizadas. Soporte para Widgets, vistas de miniaturas de las aplicaciones que pueden ser insertadas en otras aplicaciones (tal como la pantalla inicio) y recibir actualizaciones periódicas. Grabación y reproducción en formatos MPEG-4 y 3GP (Third Generation Partnership). Auto-sincronización y soporte para Bluetooth estéreo añadido (perfiles A2DP(Advanced Audio Distribution Profile) y AVRCP(Audio/Video Remote Control Profile)) Características de Copiar y pegar agregadas al navegador web. Fotos de los usuarios son mostradas para favoritos en los contactos Estampillas especificas con fecha/hora mostradas para eventos en registro de llamados, y acceso de un toque a la tarjeta de un contacto desde un evento del registro de llamados. Pantallas de transiciones animadas. Agregada opción de auto-rotación. Agregada la animación de booteo por defecto actual. Habilidad de subir videos a YouTube. Habilidad de subir fotos a Picasa Android 1.6 Donut El 15 de septiembre de 2009, el SDK de Android 1.6 SDK fue lanzado, basado en el núcleo Linux Incluido en la actualización son numerosas características nuevas: Mejora en la búsqueda por entrada de texto y voz para incluir historial de marcadores, contactos, y la web. 2331 Habilidad de los desarrolladores de incluir su contenido en los resultados de búsqueda. Motor multi-lenguaje de Síntesis de habla para permitir a cualquier aplicación de Android hablar una cadena de texto. Búsqueda facilitada y habilidad para ver capturas de las aplicaciones en el Android Market (Google Play). Galería, cámara y filmadora con mejor integración, con rápido acceso a la cámara. Habilidad para los usuarios de seleccionar múltiples fotos para eliminar. Actualización soporte a tecnología para CDMA/EVDO (Code Division Multiple Access/ Evolution-Data Optimized), 802.1x, VPNs(Virtual Private Networks), y un motor text-to-speech. Soporte para resoluciones de pantalla WVGA (Wide Video Graphics Array). Mejoras de velocidad en búsqueda y aplicaciones de cámara. Marco de gestos ampliado y una nueva herramienta de desarrollo constructor de gestos Android 2.0/2.1 Eclair El 26 de octubre de 2009, el SDK de Android 2.0 fue lanzado, basado en el núcleo de linux Con varios cambios que incluyen: Sincronización cuenta expandida, permitiendo a los usuarios agregar múltiples cuentas al dispositivo para sincronización de correo y contactos. Soporte intercambio de correo, con bandeja combinada para buscar correo desde múltiples cuentas en la página. Soporte Bluetooth32 Habilidad para tocar un foto de un contacto y seleccionar llamar, enviar SMS o correo a la persona. Habilidad para en todos los mensajes SMS y MMS guardados, con eliminación de mensajes más antiguos en una conversación automáticamente cuando un límite definido se ha alcanzado. Nuevas características para la cámara, incluyendo soporte de flash, zoom digital, modo escena, balance de blancos, efecto de colores y enfoque macro. Mejorada velocidad de escritura en el teclado virtual, con diccionario inteligente que aprende el uso de palabras e incluye nombres de contactos como sugerencias. Renovada interfaz de usuario del navegador con imágenes en miniatura de marcador, zoom de toque doble y soporte para HTML5. Vista agenda del calendario mejorada, que muestra el estado asistiendo a cada invitado, y la capacidad de invitar a nuevos invitados a los eventos. Optimización en velocidad de hardware y GUI (graphical user interface) renovada. Soporte para más tamaños de pantalla y resoluciones, con mejor radio de contraste. Mejorado Google Maps Clase MotionEvent mejorada para rastrear eventos multi-touch. Adición de fondos de pantalla animados, permitiendo la animación de imágenes de fondo de la pantalla inicio para mostrar movimiento fecha de lanzamiento: 3 de diciembre de 2009 Cambios menores de API, arreglo de errores y cambios del comportamiento del framework. 2.1 fecha de lanzamiento: 12 de enero de 2010 Modificaciones menores de la API y correcciones de errores. 2533 1.5.7 Android 2.2.x Froyo (Yogurth helado) El 20 de mayo de 2010, El SDK de Android 2.2 (Froyo, yogurth helado) fue lanzado, basado en el núcleo Linux , esta versión incluye: Optimizaciones en velocidad, memoria y rendimiento Mejoras adicionales de rendimiento de aplicación, implementadas mediante compilación Just-in-time (JIT). Integración del motor de JAVAScript V8 de Chrome en el navegador. Soporte para el servicio Android Cloud to Device Messaging (C2DM), habilitando notificaciones push. Soporte para Microsoft Exchange mejorado, incluyendo políticas de seguridad, auto-descubrimiento, consulta a la Global Access List (GAL), sincronización de calendario, y borrado remoto. Mejoras en la aplicación del lanzador con accesos directos de las aplicaciones teléfono y navegador web Funcionalidad de anclaje de red por USB (Universal Serial Bus) y Wi- Fi hotspot. Agregada opción para deshabilitar acceso de datos sobre red móvil Actualizada la aplicación Market con características de grupo y actualizaciones automáticas Cambio rápido entre múltiples lenguajes de teclado y diccionario Discado por voz e intercambio de contactos por Bluetooth Soporte para docks Bluetooth habilitado para autos y de escritorio Soporte para contraseñas numéricas y alfanuméricas Soporte para subida de archivos en la aplicación del navegador Soporte para instalación de aplicaciones en la memoria expandible Soporte para Adobe Flash Soporte para pantallas de alto número de PPI (pixels per inch) (320 ppi), como 4" 720p 2634 Galería permite a los usuarios ver pilas de imágenes mediante un gesto de zoom fecha de lanzamiento: 18 de enero de 2011 Arreglo de errores, actualizaciones de seguridad y mejoras de rendimiento fecha de lanzamiento: 22 de enero de 2011 Arreglo de fallos menores, incluyendo problemas con el ruteo de SMS que afectaron al Nexus One fecha de lanzamiento 21 de noviembre de 2011 Dos parches de seguridad Android 2.3.x Gingerbread El 6 de diciembre de 2010, el SDK de Android 2.3 (Gingerbread) fue lanzado, basado en el núcleo Linux Los cambios incluyen: Actualizado el diseño de la interfaz de usuario con incrementos en velocidad y simpleza. Soporte para tamaños y resoluciones de pantalla extra-grandes (WXGA y mayores). Soporte nativo para SIP (Session Initiation Protocol) y telefonía por internet VoIP (Voice over Internet Protocol). Entrada de texto del teclado virtual más rápida e intuitiva, con mejoras en precisión, texto sugerido y entrada por voz. Mejoras en la funcionalidad de copiar/pegar, permitiendo a los usuarios seleccionar una palabra al presionar-mantener, copiar y pegar. 2735 Soporte para Near Field Communication (NFC), permite al usuario leer la etiqueta NFC incrustada en un poster, sticker o aviso publicitario. Nuevos efectos de audio tales como reverberación, ecualizar, virtualización de audífonos, y aumento de bajos. Nuevo Gestor de descargas, dándoles a los usuarios fácil acceso a cualquier archivo descargado del navegador, correo electrónico, u otra aplicación. Soporte para múltiples cámaras en el dispositivo, incluyendo cámara frontal-facial, si está disponible. Soporte para reproducción de video por WebM/VP8, codificación de audio por AAC. Mejoras en la administración de la energía, con un mayor rol activo en aplicaciones de administración que se mantienen activas en el dispositivo por mucho tiempo. Mejorado soporte para el desarrollo de código nativo. Cambio desde YAFFS (Yet Another Flash File System) a ext4 (Fourth extended filesystem) en dispositivos nuevos. Mejoras en audio, gráficos, y entrada para desarrolladores de juegos. recolector basura concurrente para incrementar el rendimiento. Soporte nativo para más sensores (tales como giroscopio y barómetro) fecha de lanzamiento: 9 de febrero de 2011 Mejoras severas y arreglos al API fecha de lanzamiento: 28 de abril de 2011 Soporte de chat de video o voz, usando Google Talk. Soporte a la biblioteca Open Accessory. Open Accessory fue introducida en 3.1 ( Honeycomb ) pero la biblioteca Open Accessory Library subvenciona en agregado su soporte cuando un periférico USB es conectado con software compatible y una aplicación compatible en el dispositivo. 2836 2.3.5 fecha de lanzamiento: 25 de julio de 2011 Mejoras en el sistema. Mejoras en el rendimiento por red del Nexus S 4G (Fourth Generation). Arreglado una falla de Bluetooth en el Samsung Galaxy S. Mejoras a la aplicación de correo electrónico. Animación de sombras al deslizar por listas. Mejoras al software de la cámara. Mejorada la eficiencia de la batería fecha de lanzamiento: 2 de septiembre de 2011 Arreglado fallo en la búsqueda por voz fecha de lanzamiento: 21 de septiembre de 2011 Soporte a Google Wallet para el Nexus S 4G Android 3.x Honeycomb. El 22 de febrero de 2011, el SDK de Android 3.0 (Honeycomb) la primera actualización exclusiva para tablet Android fue lanzado, basado en el núcleo de linux El primer dispositivo con esta versión, la tableta Motorola Xoom, fue lanzada el 24 de febrero de Las características de la actualización incluyen: Soporte optimizado para tablets, con una nueva y virtual interfaz de usuario holográfica. Agregada barra de sistema, con características de acceso rápido a notificaciones, estados, y botones de navegación suavizados, disponible en la parte inferior de la pantalla Añadida barra de acción, entregando acceso a opciones contextuales, navegación, widgets, u otros tipos de contenido en la parte superior de la pantalla. 2937 Multitarea simplificada tocando aplicaciones recientes en la barra del sistema permite a los usuarios ver instantáneas de las tareas en curso y saltar rápidamente de una aplicación a otra Teclado rediseñado, permitiendo tecleo rápido, eficiente y acertado en pantallas de gran tamaño Simplificada y más intuitiva interfaz copiar/pegar Las pestañas múltiples reemplazan las ventanas abiertas en el navegador web, además de la característica de auto completado texto y un nuevo modo de incógnito permitiendo la navegación de forma anónima. Acceso rápido a las características de la cámara como la exposición, foco, flash, zoom, cámara facial-frontal, temporizador u otras. Habilidad para ver álbumes y otras colecciones de fotos en modo pantalla completa en galería, con un fácil acceso a vistas previas de las fotografías. Nueva interfaz de contactos de dos paneles y desplazamiento rápido para permitir a los usuarios organizar y reconocer contactos fácilmente. Nueva interfaz de correo de dos paneles para hacer la visualización y organización de mensajes más eficiente, permitiendo a los usuarios seleccionar uno o más mensajes. Soporte para video chat usando Google Talk Aceleración de hardware. Soporte para microprocesadores multi-núcleo. Habilidad para encriptar toda la data del usuario. Mejoras en el uso de HTTPS (Hypertext Transfer Protocol Secure) con Server Name Indication (SNI). Filesystem in Userspace (FUSE; kernel module). 3.1 fecha de lanzamiento: 10 de mayo de 2011 Refinamiento a la interfaz de usuario. Conectividad para accesorios USB. 3038 Lista expandida de aplicaciones recientes. Widgets de pantalla de inicio redimensionables. Soporte para teclados externos y dispositivos punteros. Soporte para joystick y gamepads. Soporte para reproducción de audio FLAC (Free Lossless Audio Codec) Bloqueo de Wi-Fi de alto rendimiento, manteniendo conexiones Wi-Fi de alto rendimiento cuando la pantalla del dispositivo está apagada. Soporte para proxy HTTP (Hypertext Transfer Protocol) para cada punto de acceso Wi-Fi conectado 3.2 fecha de lanzamiento: 15 de julio de 2011 Mejoras al soporte de hardware, incluyendo optimizaciones para un amplio rango de tabletas. Incrementada habilidad de las aplicaciones para acceder a archivos de las tarjetas SD (Segure Digital), por ejemplo para sincronización. Modo de vista de compatibilidad para aplicaciones que no has sido optimizadas para resoluciones de pantalla de tabletas. Nuevas funciones de soporte de pantalla, dando a los desarrolladores un mayor control sobre la apariencia de la pantalla en diferentes dispositivos Android fecha de lanzamiento: 20 de septiembre de 2011 Corrección de errores menores y mejoras de seguridad, mejoras en estabilidad y Wi-Fi. Actualización del Android Market con actualizaciones texto de términos y condiciones de fácil lectura. Actualización de Google Books. Mejoras en el soporte de Adobe Flash del navegador. Mejoras predicción escritura a mano en chino fecha de lanzamiento: 30 de agosto de39 Arreglo de fallos y otros mejoras menores para el Motorola Xoom 4G fecha de lanzamiento: diciembre de 2011 Soporte para Pay as You Go para tabletas 3G (Third Generation) y 4G fecha de lanzamiento: febrero de 2012 Arreglado problema de conectividad de datos en modo avión en la versión estadounidense 4G del Motorola Xoom Android 4.0.x Ice Cream Sandwich El SDK para Android (Ice Cream Sandwich), basado en el núcleo de linux 3.0.1, fue lanzado públicamente el 19 de octubre del Gabe Cohen de Google declaró que Android 4.0 era "teóricamente compatible" con cualquier dispositivo Android 2.3.x en producción en ese momento. El código fuente para Android 4.0 se puso a disposición el 14 de noviembre del La actualización incluyo numerosas novedades, entre ellas: Botones suaves Android 3.x están ahora disponibles para usar en los teléfonos móviles. Separación de widgets en una nueva pestaña, listados de forma similar a las aplicaciones. Facilidad para crear carpetas, con estilo de arrastrar y soltar. Lanzador personalizable. Buzón de voz mejorado con la opción de acelerar o retrasar los mensajes del buzón de voz. Funcionalidad de pinch-to-zoom en el calendario. Captura de pantalla integrada (manteniendo presionado los botones de bloqueo y de bajar volumen). Corrector ortográfico del teclado mejorado. 3240 Habilidad de acceder a aplicaciones directamente desde la pantalla de bloqueo. Funcionalidad copiar-pegar mejorada. Mejor integración de voz y dictado de texto en tiempo real continúo. Desbloqueo facial, característica que permite a los usuarios desbloquear los equipos usando software de reconocimiento facial. Nuevo navegador web con pestañas bajo la marca de Google Chrome, permitiendo hasta 15 pestañas. Sincronización automática del navegador con los marcadores de Chrome del usuario. Nueva tipografía para la interfaz de usuario, Roboto. Sección para el uso de datos dentro de la configuración que permite al usuario poner avisos cuando se acerca a cierto límite de uso, y desactivar los datos cuando se ha excedido dicho límite. Habilidad para cerrar aplicaciones que están usando datos en segundo plano. Aplicación de la cámara mejorada con cero shutter lag, ajustes para el time lapse, modo panorámico, y la posibilidad de hacer zoom durante la grabación. Editor de fotos integrado. Nuevo diseño de la Galería, organizado por persona y localización. Aplicación People actualizada con integración en redes sociales, actualización de estados e imágenes en alta resolución. Android Beam, una característica de Near field communication que permite el rápido intercambio de corto alcance de enlaces web favoritos de un navegador de Internet, información de contactos, direcciones, videos de YouTube y otros datos. Soporte para el formato de imagen WebP. Aceleración por Hardware de la interfaz de usuario. Wi-Fi Direct. Grabación de video a 1080p para dispositivos stock de Android. 3341 Android VPN Framework (AVF), y TUN (but not TAP) kernel module fecha de lanzamiento: 29 de noviembre de 2011 Arreglados fallas menores en el Galaxy nexus de Verizon, el lanzamiento en EEUU fue posteriormente retrasado hasta diciembre de fecha de lanzamiento: 16 de diciembre de 2011 Numerosas optimizaciones y corrección de errores. Mejoras a los gráficos, bases de datos, deletreo y Bluetooth. Nuevas APIs para desarrolladores. Mejoras en el calendario. Nuevas aplicaciones de la cámara en mejora de la estabilidad en los videos y resolución QVGA (Quarter Video Graphics Array). Mejoras de accesibilidad como contenido mejorado para visualización de pantalla fecha de lanzamiento: 29 de marzo de 2012 Mejoras de estabilidad. Mejor rendimiento de la cámara. Rotación de la pantalla más fluida. Mejoras en el reconocimiento de los números en el teléfono Android 4.1 Jelly Bean Google anunció el Android 4.1 (Jelly Bean) en conferencia Google I/O el 27 de junio de Basado en el núcleo de linux , Jelly Bean fue una actualización incremental con el enfoque primario de mejorar la funcionalidad y el rendimiento de la interfaz de usuario. La mejora de rendimiento involucró el 3442 Proyecto Butter, el cual usa anticipación táctil, triple buffer, latencia vsync (vertical synchronization) extendida y un arreglo en la velocidad de cuadros de 60 FPS (Frames Per Second) para crear una fluida y mantecosa-suavidad de la interfaz de usuario. Android 4.1 Jelly Bean fue lanzado bajo AOSP (Android Open Source Project) el 9 de julio de 2012, y el Nexus 7, el primer dispositivo en correr Jelly Bean, fue lanzado el 13 de julio de Android 4.2 Jelly Bean Se esperaba que Google anunciara Jelly Bean 4.2 en un evento en la ciudad de Nueva York el 29 de octubre de 2012, pero el evento fue cancelado debido al Huracán Sandy. En lugar de reprogramar el evento en vivo, Google anunció la nueva versión con un comunicado de prensa, bajo el eslogan A new flavor of Jelly Bean. El primer dispositivo en correr Android 4.2 fue el Nexus 4 de LG (Life is Good) y el Nexus 10 de Samsung, los cuales fueron lanzados el 13 de noviembre de Esta versión incluye: Fotos panorámicas con Photo Sphere Teclado con escritura gesticular Mejoras al Lock screen, incluyendo soporte a widgets y la posibilidad de deslizar con el dedo e ir directamente a la cámara Controles en las notificaciones (Quick Settings) Protectores de pantalla Daydream, que muestran información cuando el equipo está inactivo o conectado por USB (docked). Múltiples cuentas de usuario (sólo en tablets) Soporte para pantallas inalámbricas (Miracast) Mejoras en accesibilidad: toque triple para ampliar imagen en pantalla, zoom con dos dedos. Funciones especiales para usuarios ciegos. Nueva aplicación del reloj con función de reloj mundial, cronómetro y temporizador 3543 Todos los dispositivos ahora usan el mismo diseño de interface, previamente adaptado desde los teléfonos en 4.1 para las tablets pequeñas (con botones centrados en la pantalla, la barra de sistema en la parte superior de la pantalla, y una pantalla de inicio con un dock y el menú de aplicaciones centrado), independientemente del tamaño de la pantalla Incrementado el número de notificaciones extendidas y notificaciones accionables para más aplicaciones, permitiendo responder a ciertas notificaciones con la barra de notificaciones sin lanzar la aplicación directamente SE Linux Siempre-activa VPN Confirmación SMS Premium SMS fecha de lanzamiento: 27 de noviembre de 2012 Arreglado un fallo que en la aplicación People, diciembre no era mostrado cuando se agregaba a un contacto Agregado Bluetooth gamepads y joysticks como dispositivos HID (High Discharge Intensity) soportados fecha de lanzamiento: 11 de febrero de 2013 Arreglados fallos del streaming de audio por Bluetooth. Arreglado fallo de cámara que dejaba flash pegado. El Presionado-largo sobre los íconos de Wi-Fi y Bluetooth en Quick Settings ahora cambia el estado activado / desactivado (on/off) Nuevas notificaciones de descarga, las cuales ahora muestran el porcentaje y el tiempo estimado que queda para las descargas activas de aplicaciones. Nuevos sonidos para la carga en forma inalámbrica y batería baja. Removida la opción de mostrar todas las llamadas en la lista de llamadas de la aplicación teléfono. Nueva animación de la aplicación galería la cual permite carga más rápida. Lista blanca de depuración USB. 3644 Mejoras en rendimiento y arreglo de fallos menores. 1.6 Otros Sistemas Operativos Móviles Aparte de Android existen otros sistemas operativos móviles elaborados por diferentes desarrolladores, los cuales funcionan de manera diferente y tienen otras características. A continuación se habla un poco de los más importantes (Reyes, 2013) ios Es el sistema operativo móvil desarrollado y distribuido por Apple. Fue lanzado en 2007 para el iphone y posteriormente para ipod Touch, más tarde fue adaptado para los demás dispositivos de la compañía. Su licencia es de uso restringido y solo puede utilizarse en productos Apple. Actualmente se posiciona como el segundo sistema móvil más importante del mundo después de Android (Kelly, 2013). Es una derivación del sistema operativo OSX (Operating System X) el cual se basa en Darwin y tiene una arquitectura ARM la cual está integrada por 4 capas: núcleo de sistema, servicios principales de núcleo, medios y cocoa touch. La interfaz de usuario de ios está basada en el concepto de manipulación directa, usando gestos multitáctiles. Los elementos de control consisten de deslizadores, interruptores y botones. La respuesta a las órdenes del usuario es inmediata y provee de una interfaz fluida. La interacción con el sistema operativo incluye gestos como deslices, toques, pellizcos, los cuales tienen definiciones diferentes dependiendo del contexto de la interfaz. Se utilizan acelerómetros internos para 3745 hacer que algunas aplicaciones respondan a sacudir el dispositivo (por ejemplo, para el comando deshacer) o rotarlo en tres dimensiones (un resultado común es cambiar de modo vertical al apaisado u horizontal). A partir de la versión 4.0 se incluyen funciones multitarea. Se pueden crear aplicaciones mediante el kit de desarrollo (SDK) proporcionado por Apple, las cuales deben ser realizadas específicamente para ios, pero a diferencia de Android se debe pagar una cuota para que los programadores puedan ejecutar las aplicaciones en el dispositivo, colocarlas en la app store u obtener ganancias sobre dichas aplicaciones Blackberry OS El BlackBerry OS es un sistema operativo móvil desarrollado por Research In Motion en el lenguaje C++ para sus dispositivos BlackBerry. El sistema permite multitarea y tiene soporte para diferentes métodos de entrada adoptados por RIM (Research In Motion) para su uso en computadoras de mano, particularmente la trackwheel, trackball, touchpad y pantallas táctiles. Es de licencia reservada por lo que solo puede ser utilizado en dispositivos Blackberry y de fabricantes asociados. Se encuentra como el tercer sistema operativo de más importancia a nivel mundial pero muy por debajo de ios y Android. Su desarrollo se remonta la aparición de los primeros handheld en Estos dispositivos permiten el acceso a correo electrónico, navegación web y sincronización con programas como Microsoft Exchange o Lotus Notes aparte de poder hacer las funciones usuales de un teléfono móvil. El sistema operativo BlackBerry está orientado principalmente a su uso profesional como gestor de correo electrónico y agenda. Desde la cuarta versión se puede sincronizar el dispositivo con el correo electrónico, el calendario, tareas, notas y 3846 contactos de Microsoft Exchange Server además es compatible también con Lotus Notes y Novell GroupWise. BlackBerry Enterprise Server (BES) proporciona el acceso y organización del a grandes compañías identificando a cada usuario con un único BlackBerry PIN. Los usuarios más pequeños cuentan con el software BlackBerry Internet Service, programa más sencillo que proporciona acceso a Internet y a correo POP3 / IMAP / Outlook Web Access sin tener que usar BES. Al igual que en el SO Symbian desarrolladores independientes también pueden crear programas para BlackBerry pero en el caso de querer tener acceso a ciertas funcionalidades restringidas necesitan ser firmados digitalmente para poder ser asociados a una cuenta de desarrollador de RIM Windows Phone Windows Phone es un sistema operativo móvil desarrollado por Microsoft lanzado el 1 de septiembre de 2010, como sucesor de la plataforma Windows Mobile 2. A diferencia de su predecesor, está enfocado en el mercado de consumo general en lugar del mercado empresarial por lo que carece de muchas funcionalidades que proporcionaba la versión anterior. Microsoft ha decidido no hacer compatible Windows Phone con Windows Mobile por lo que las aplicaciones existentes no funcionan en Windows Phone haciendo necesario desarrollar nuevas aplicaciones. Con Windows Phone, Microsoft ofrece una nueva interfaz de usuario que integra varios servicios en el sistema operativo. Está basado en el núcleo Windows Embbeded CE, cuenta con una nueva interfaz de usuario, llamada Metro. La pantalla de inicio, llamada Start Screen, se compone de Live Tiles, mosaicos dinámicos que son enlaces a aplicaciones, características, funciones y objetos individuales (como contactos, páginas web, o archivos multimedia) y que muestran información útil y personalizada para el 3947 usuario. Estos mosaicos se actualizan frecuentemente manteniendo informado de cualquier cambio al usuario. La información que se muestra en los mosaicos dinámicos puede ser desde llamadas, mensajes recibidos, correos electrónicos pendientes, citas previstas, juegos o enlaces rápidos a aplicaciones. La pantalla de inicio y la posición de los mosaicos dinámicos se pueden personalizar pulsando y arrastrando los mosaicos a la posición que se desee. Utiliza tecnología multitáctil. La interfaz por defecto de Windows Phone tiene un estilo visual negro que prolonga la batería en pantallas OLED (organic light-emitting diode) ya que los píxeles negros no emiten tanta luz como otros, por lo tanto no gastan tanta batería. Windows Phone no es un sistema centralizado solamente en aplicaciones sino que se organiza en un nuevo concepto denominado hubs. Los hubs de Windows Phone clasifican acciones y agrupan las aplicaciones que se correspondan con una actividad determinada. De esta forma en WP están presentes hubs de contactos, imágenes y cámara, Office (menos Outlook), juegos y el Marketplace. Las aplicaciones de terceros se pueden integrar en el hub que corresponda mejorando las funciones de cada hub. De esta forma un editor de fotos podría incorporarse al hub de Imágenes y Cámara. El desarrollo de aplicaciones se puede realizar mediante el kit de desarrollo proporcionado por Microsoft el cual puede ser utilizado en 2 plataformas: Silverlight y XNA Framework, las cuales deberán hacerse en el lenguaje.net.se debe pagar la licencia de desarrollador para poder ejecutar las aplicaciones en dispositivos. 4048 CAPITULO II: SMARTPHONE49 2.1 Introducción al Smartphone Los Smartphone o teléfonos inteligentes son una nueva modalidad de dispositivos móviles, los cuales incorporan mucha más capacidad de proceso y conectividad que los dispositivos tradicionales. El desarrollo de la tecnología microelectrónica y de las redes de telecomunicación es lo que ha hecho posible su aparición y su popularidad, de forma que son uno de los dispositivos tecnológicos multifunción más demandados en la actualidad por los usuarios. Un Smartphone puede ser considerado como un PC de bolsillo, ya que gracias a las nuevas tecnologías para móviles se han ido acumulando funciones y posibilidades que lo acercan a estos dispositivos. Los Smartphone incluyen, como mínimo, una pantalla normalmente táctil, microprocesadores poderosos, un importante tamaño de memoria entre muchas más características. En la actualidad son cada vez menos las diferencias y costos que hay, entre computadoras portátiles, tabletas y Smartphones, ya que los teléfonos inteligentes están incluyendo tecnologías y funciones que les permiten entrar en el terreno de los otros dispositivos. A veces, la principal diferencia solo se encuentra en el tamaño y forma del teclado o de la pantalla (InformeTICfacil.com, 2013). Un dispositivo inteligente de estas características necesita un sistema operativo específico que lo haga funcionar, totalmente adaptado a la movilidad y a las posibilidades que posea. Hoy en día hay diferentes sistemas operativos que cumplen esta funcion y los que dominan el mercado son: ios, Android, WP7, Symbian, Blackberry, etc. 4250 Las nuevas funciones que realizan los Smartphone se deben también a la instalación por parte del usuario de aplicaciones (apps), que lo convierte en una herramienta muy potente que se complementa con los servicios ya muy consolidados, como la voz, el correo electrónico o el acceso a Internet. Las aplicaciones brindan al usuario a un nuevo mundo de acceso movil a la información, entretenimiento y servicios que hasta hace pocos años no existía. Gracias a ellas los dispositivos permiten hacer fotos, enviar o recibir mensajes de texto, grabar vídeos, navegar por internet, chatear, buscar información médica, comprar electrónicamente, etc. Si al soporte físico del Smartphone se le suma el sistema operativo, los programas y las aplicaciones que puede almacenar y las redes móviles a las que conecta, se tienen todos los elementos que lo hacen innovador y revolucionario. Los teléfonos inteligentes se complementan y ofrecen mejor rendimiento mediante la conexión que utilizan con redes avanzadas de telecomunicaciones. Hasta la aparición de las redes de tercera generación o 3G no se disponía del ancho de banda o de las velocidades de datos necesarias para que un dispositivo pudiera aprovechar todas las prestaciones que ofrece la WEB. Con la expansión de las redes 3G y la progresiva implantación de las 4G, los teléfonos móviles han podido elevar y desarrollar su inteligencia (InformeTICfacil.com, 2013). 2.2 Antecedentes Los primeros modelos o antecesores al Smartphone actual han existido realmente desde La diferencia entre esos modelos y los actuales, es que los primeros Smartphone solo estaban disponibles para altos ejecutivos, ya que su precio era demasiado caro y resultaba imposible adquirir uno para la mayoría de las personas (Morrison, 2011). 4351 Tras el enorme éxito del iphone, las operadoras de telefonía móvil han descubierto el enorme potencial que posee este sector del mercado y por lo cual han decidido participar en el mediante la comercialización de los modelos más novedosos de los fabricantes. A continuación se menciona como se ha presentado la evolución del Smartphone desde sus comienzos simples con equipos monocromáticos en 1993 hasta la tecnología de punta disponible en la actualidad, capaz de reproducir video en alta definición, y mucho más (Morrison, 2011): 1993 Simon, de IBM: fue el primer intento real de la industria tecnológica de crear un teléfono con algo más, mediante la incorporación de servicios de voz y datos, por lo que el equipo funcionaba como un teléfono móvil, un asistente digital personal (tenia calendario, libreta de direcciones, reloj mundial, calculadora, bloc de notas, correo electrónico y juegos), e incluso como una máquina de fax. Lo que resulta increíble, teniendo en cuenta que fue lanzado al mercado en 1993, es que contaba con una pantalla táctil para marcar los números, y el texto se ingresaba mediante un teclado QWERTY, como sucede hoy en día. Sus aspectos negativos eran su diseño, tamaño y peso, por lo que se llegaron a comparar con un ladrillo. Su precio original era de 900 dólares, una cifra que en 1993 era un gasto inaccesible Palm Pilot: La Palm Pilot no fue técnicamente un Smartphone, pero fue muy importante ya que ayudo a popularizar el uso de dispositivos portátiles, y acostumbrar a los usuarios a la idea de poder llevar sus datos de un lado a otro. Fue un equipo muy utilizado por ejecutivos y hombres de negocios. El Pilot 1000 contaba un procesador de 16MHz y una memoria de 128KB. Todo esto a un precio de 300 dólares, una cifra que hoy puede parecer mucho, pero en ese entonces era tecnología de última generación, y fue el equipo que popularizo la sigla PDA (Personal Digital Assitant) en los Estados Unidos. 4452 1998 Nokia 9110 Communicator: fue un dispositivo con un diseño más similar a lo que hoy entendemos como Smartphone. Su pantalla no era color, y no se podía navegar por Internet, pero tenía un teclado QWERTY deslizable que sirvió como modelo para los teléfonos actuales, como el Motorola Droid BlackBerry 5810: A fines de la década de los 90, la compañía canadiense Research In Motion (RIM) era conocida gracias a sus pagers o bipers, que eran usados por decenas de millones de personas en todo el mundo. Pero a comienzos de 2002, RIM entró en el mercado de los teléfonos móviles, y lo hizo por la puerta grande: su BlackBerry 5810 era un teléfono con la capacidad de revisar correos electrónicos y navegar por Internet. El principal aspecto negativo de este producto es que, para hablar por teléfono, era necesario utilizar auriculares ya que el equipo no tenía altavoces. Esto fue así durante 2 años, ya que en 2004 RIM lanzo su BlackBerry 6210 con la cual se podía hacer llamadas sin accesorio adicional alguno Palm Treo 600: El Treo 600 fue el primer Smartphone lanzado por Palm, tras adquirir al fabricante Handspring. Este móvil tenía la particularidad de soportar redes GSM y CDMA, tenía 32MB de memoria RAM y un procesador de 144 MHz. Fue un equipo que se vendió muy bien, aunque fue lanzado en 2003 una época en la que Palm comenzaba su caída en popularidad iphone, de Apple: Este es el punto en el cual el Smartphone comienza a generar expectación entre los consumidores. El éxito que tuvo Apple con su primer intento en ingresar al mercado de los móviles fue alucinante. El dispositivo vendió millones de unidades, gracias a su pantalla táctil, a que ofrecía la mejor conexión móvil en Internet hasta ese momento y a la innovadora experiencia del usuario al manejar el ios para ejecutar aplicaciones. Han pasado casi 6 años, y todavía el iphone es el Smartphone con el que los demás equipos son comparados. 4553 2007 Google presenta Android: En el mismo año en que Apple lanzo el iphone, Google presento su sistema operativo Android. No fue tan explosivo, ni causo tanto revuelo en ese entonces, pero hoy en día se puede decir que Android es rotundamente exitoso, ya que el líder en ventas en Estados Unidos y Europa, tiene miles de aplicaciones disponibles en la Tienda Android, y un futuro más que prometedor. Se calcula que actualmente en los Estados Unidos hay más móviles con Android que iphones Droid, de Motorola: Si bien Android ya tenía bastante tiempo en el mercado, el Droid, de Motorola fue el primer Smartphone exitoso en utilizar la plataforma Android en los Estados Unidos. El equipo, que también fue el primer móvil con Android en la red Verizon, vendió más de 1 millón de unidades en sus primeros 74 días en el mercado EVO 4G, de HTC: Actualmente, la red WiMAX es la red inalámbrica más rápida en los Estados Unidos. Con el lanzamiento del EVO 4G, de HTC, apareció un equipo que busca aprovechar el máximo potencial de este tipo de conectividad. Además, el equipo se distingue por su enorme pantalla táctil de 4,3 pulgadas, que ofrece una resolución de 800 x 400 pixeles. Utiliza el sistema operativo Android. 2.3 Software A diferencia de los celulares convencionales, los Smartphone requieren de software especializado para poder trabajar tal como un sistema operativo en el cual se pueden ejecutar aplicaciones con diversas funciones. A continuación se explica en qué consiste este software. 4654 2.3.1 Sistema operativo móvil Los Smartphone, funcionan al igual que las computadoras con un sistema operativo. Cada plataforma o sistema ofrece diversas características y funciones, tambien cada una con fortalezas y debilidades. Las plataformas para Smartphone más populares son: ios, Android, Windows Phone y Blackberry Os (Khronox, 2012). La mayoría se encuentran basados en capas las cuales funcionan de la siguiente manera: Kernel: El núcleo o kernel proporciona el acceso a los distintos elementos del hardware del dispositivo. Ofrece distintos servicios a las superiores como son los controladores o drivers para el hardware, la gestión de procesos, el sistema de archivos, el acceso y gestión de la memoria. Middleware: El middleware es el conjunto de módulos que hacen posible la propia existencia de aplicaciones para móviles. Es totalmente transparente para el usuario y ofrece servicios claves como el motor de mensajería y comunicaciones, códecs multimedia, intérpretes de páginas web, gestión del dispositivo y seguridad. Entorno de ejecución de aplicaciones: El entorno de ejecución de aplicaciones consiste en un gestor de aplicaciones y un conjunto de interfaces programables abiertas y programables por parte de los desarrolladores para facilitar la creación de software. Interfaz de usuario: Las interfaces de usuario facilitan la interacción con el usuario y el diseño de la presentación visual de la aplicación. Los servicios que incluye son el de componentes gráficos (botones, pantallas, listas, etc.) y el del marco de interacción. Aparte de estas capas también existe una familia de aplicaciones nativas del teléfono que suelen incluir los menús, el marcador de números de teléfono etc. 4755 2.3.2 Aplicaciones Las aplicaciones móviles son software diseñado especialmente para funcionar en Smartphones, tablets y otros dispositivos móviles (Scholarium, 2011). Se encuentran disponibles principalmente a través de plataformas de distribución que son usualmente manejadas por los propietarios del sistema operativo móvil, por ejemplo: la app store de Apple, Google play de Android, Windows phone store, etc. Algunas de estas aplicaciones pueden adquirirse de forma gratuita mientras que otras deben pagarse para poder descargarlas. Se dividen en dos tipos las nativas y las Web. Las aplicaciones nativas son aquellas que están específicamente diseñadas para ejecutarse en el sistema operativo y en el firmware del dispositivo, por lo general tienen que ser adaptadas para distintos modelos como por ejemplo los juegos. Una aplicación Web o una aplicación de navegador, es aquella en la cual en su totalidad o algunas partes de los programas se descargan de la Web y funcionan con ella cada vez que se ejecuta. Por lo general, se puede acceder desde todos los dispositivos móviles con capacidad Web como por ejemplo el Facebook (García, 2012). En sus inicios las aplicaciones móviles estaban solamente enfocadas a las labores de producción e información como la agenda, , calendario, contactos, bolsa de valores, pronostico del clima. Sin embargo actualmente con la disponibilidad de herramientas de desarrollo y la demanda del consumidor han provocado que estas aplicaciones se hayan expandido rápidamente a muchas otras categorías como: juegos, posicionamiento global, noticias, entretenimiento, salud, ejercicio, etc. Esto resulta en que haya cientos de miles de aplicaciones en diferentes plataformas las cuales generan anualmente millones de dólares en ventas. 4856 2.4 Hardware Otro parte esencial de los Smartphone son los componentes físicos o hardware. Un dispositivo generalmente sobrepasa la docena de elementos ya que mediante estos realiza todas las funciones y alcanza las asombrosas prestaciones que han revolucionado el mercado. A continuación se explican las partes más importantes en el hardware de un Smartphone Pantalla La pantalla es uno de los elementos más importantes, ya que a través de ella el usuario interactúa con el equipo disfrutando de sus funciones (música, películas, juegos, aplicaciones, web, etc.) La mayoría de los Smartphone cuenta con pantallas táctiles, esto quiere decir que para interactuar con los elementos que se muestran en la pantalla solo basta con tocarlos, también se utilizan teclados virtuales que se muestran en pantalla (Barrios, 2012). Las pantallas táctiles pueden ser de dos tipos resistivas y capacitivas. Las pantallas resistivas son más baratas que las capacitivas y no les afecta el agua ni el polvo. Además de ser más precisas pueden ser usadas con un puntero o con el dedo. Sin embargo, las pantallas, que montan esta tecnología, pierden hasta un 25% del brillo y son más gruesas. Por ello están siendo sustituidas en los dispositivos móviles que precisan un tamaño y peso ajustado, que necesitan un mayor brillo en la pantalla para usarse expuestos a la luz directa del sol. En las pantallas capacitivas la calidad de imagen es mejor, tienen mejor respuesta y algunas permiten el uso de varios dedos a la vez, permitiendo funciones multi táctiles. Sin embargo, son más caras y no se pueden usar con puntero normal, sino con uno especial que disponga de capacitancia (es la propiedad que tienen los cuerpos para mantener una carga eléctrica) o simplemente con el dedo. 4957 Otra característica con la que cuentan las pantallas de los equipos es su tecnología. Las principales son LCD (Liquid Crystal Display) y AMOLED a las cuales se les derivan varios tipos específicos con diferentes características de acuerdo a la marca y generación a la que pertenezcan (Lara, 2012). AMOLED (active matrix organic light emitting diode): Hoy en día la tecnología más popular en pantallas y encontrada en teléfonos como el Samsung Galaxy S2 o el Nokia Lumia 800. Son de colores mucho más vibrantes y nítidos que tecnologías como la TFT (la norma hasta unos años) pero con un mejor uso energético, resaltando los colores negros que destacan en pantallas. Su mayor problema es que es sumamente complicado verlos bien con luz de sol sin tener que subir el brillo del equipo al máximo. Super AMOLED: Encontrado en equipos Samsung en especial, se diferencia del AMOLED tradicional ya que se mezcla el panel touch con la capa misma del vidrio, haciéndola más eficiente con cualquier tipo de iluminación, aunque aún no es completamente apta bajo luz solar directa Super AMOLED Plus También exclusivo de Samsung, no es tan brillante como el Super Amoled, pero si presenta mejor representación de colores y nitidez de contenidos al separar en subpixeles. AMOLED Clear Black Display: Exclusivo de Nokia y presente en equipos como el Lumia, mantiene los negros profundos característicos de esta tecnología y es de las mejores pantallas AMOLED para un uso bajo el sol, además de una calidad visual a la par del Super Amoled Plus de Samsung. IPS (in-plane switching) Actualmente en los iphone 4 y superiores, las pantallas IPS se caracterizan por su excelente visibilidad al poder subdividir de gran manera los contenidos, mejorando la calidad de visualización y zoom desde variados ángulos. Super LCD (SLCD) La evolución de pantallas LCD tradicionales, es mejor en contraste, brillo y color que las primeras pantallas LCD, pero no es tan brillante como las AMOLED. 5058 TFT LCD (thin film transistor): Los más comunes y más probables de encontrar en teléfonos gama baja (baratos), media e incluso alta que necesitan abaratar costos de producción en alguna parte. Si bien están de salida en relación a tecnologías más nuevas, por años han entregado una calidad decente de visualización, aunque carecen del brillo o claridad de la competencia más reciente. Las pantallas pueden variar en un tamaño de 3 a 5 pulgadas y tener una resolución de 240X320 pixeles (QVGA) la pantalla más sencilla y 720X1280 pixeles (720p) la pantalla con alta definición (Lara, 2012) Microprocesador El microprocesador es el circuito integrado central y más complejo de un sistema informático. Está conformado por millones de componentes electrónicos y constituye la unidad central de procesamiento. Es el encargado de ejecutar las aplicaciones; desde el sistema operativo hasta las aplicaciones de usuario; sólo ejecuta instrucciones programadas en lenguaje de bajo nivel (el lenguaje de las computadoras), realizando operaciones aritméticas y lógicas simples, tales como sumar, restar, multiplicar, dividir, las lógicas binarias y accesos a memoria. En pocas palabras, el procesador es el cerebro del Smartphone, el que se encarga de analizar, resolver y dar respuesta a todas las instrucciones que el usuario le da al equipo. La unidad para medir la velocidad de un procesador actual es el GHz (Gigahercio), equivale a 1,000,000,000 Hz (Hercios), es decir, se procesan 1,000,000,000 de ciclos en 1 segundo (Barrios, 2012). 5159 El diseño de los procesadores de los Smartphone se encuentra a la par al desarrollo del concepto multinúcleo y miniaturización del proceso de su fabricación en nm (1 nanómetro = 0, metros, 45nm de tamaño en el proceso de fabricación es más pequeño que 65nm, a menor tamaño menos calor y menor consumo eléctrico, al ser más pequeños permiten un mayor número de ellos en el chip y se gana un mejor rendimiento) El microprocesador es la parte más importante de cualquier equipo electrónico, y desde hace unos años la tendencia es duplicar, triplicar e incluso cuadriplicar el núcleo de dicho microprocesador. Los sistemas operativos y el software que corre en ellos deben estar adaptados a esta tecnología para poder aprovecharla al máximo. El 98% de los microprocesadores utilizados en Smartphones hace uso de la arquitectura de ARM. Diversas compañías (TI, Qualcomm, Freescale, Samsung, etc.) se encargan de montarlos en un chip, y adaptarlos en algunos aspectos para brindar el máximo rendimiento y/o mejorar su consumo de energía y dedicarlos a un propósito específico (Jonadep, 2012). Las arquitecturas más antiguas de ARM se utilizan en los chips más baratos; la generación ARM9 en los Smartphone de gama baja, la ARM11 en los de gama media-alta, y Cortex A8 para gama alta. Actualmente la computación multinúcleo, es el estándar a utilizar, los procesadores (Central Processing Unit o CPU) de escritorio migraron hace algunos años a este diseño que busca mejor eficiencia y rendimiento de computo. Los procesadores ARM se inclinan al mismo estándar, por lo que actualmente preocupa en la investigación es mejorar el consumo energético. Los Smartphone poseen un límite de consumo fijado aproximadamente a 300 mw (megawatts), un pequeño foco estándar de una linterna típica con un voltaje de 1,2V (Volts) y con una intensidad de 0,3A tiene un consumo de 0,36W (Watts) o lo que es lo mismo 360mW, o un LED de 5 mm (milímetros) y alta luminosidad tiene un consumo de 0.06W o 60 mw (Jonadep, 2012). 5260 La familia de ARM llamada Cortex A9 utiliza un proceso de producción de 45nm, lo que le permite mantener el consumo eléctrico en cuotas aceptables. Además del Cortex-A9, se está contando tambien con el nuevo modelo de ARM, el Cortex-A15 el cual es un microprocesador dual core (dos núcleos) o quad core (cuatro núcleos) y tiene potencia que puede llegar hasta los 2.5 Ghz. Actualmente lo llevan los Samsung Galaxy Nexus, los chips Nvidia Tegra2, los Qualcomm Snapdragon 8X72, la consola portátil PlayStation Vita, los Samsung Galaxy S II (Exynos 4210), y los Samsung Galaxy S III (Exynos 4212) (Jonadep, 2012) Batería Se le llama batería al equipo que almacena carga eléctrica utilizando procesos electroquímicos y que después la utiliza casi completamente, repitiendo el procedimiento hasta que es terminada su vida útil. De cierto modo, se trata de un generador, solo que no puede funcionar sin que se le haya suministrado electricidad previamente en el proceso de carga (Jonadep, 2012). Los Smartphone usan generalmente las baterías de Li-ion (iones de litio), las cuales utilizan un ánodo de grafito y un cátodo de óxido de cobalto, trifilina (LiFePO4) u óxido de manganeso. Su desarrollo es más reciente, y permite llegar a grandes capacidades de carga. No admiten descargas, y se dañan mucho cuando éstas suceden por lo que suelen llevar acoplada circuitos adicionales para conocer el estado de la batería, y evitar así tanto la carga excesiva, como la descarga completa. Casi no sufren el efecto memoria (que la batería se dañe cuando no se carga a tope) y pueden cargarse sin necesidad de estar descargadas completamente, sin reducción de su vida útil. Las baterías de Li-ion cuentan con una vida útil de 4000 cargas (Jonadep, 2012). 5361 En las baterías es normal el uso del mah (miliamperio hora), esto indica la máxima carga eléctrica que es capaz de almacenar la batería. A mayor carga eléctrica almacenada, más tiempo tardará en descargarse. Los Smartphone actuales de gama alta trabajan con una batería con 1800 mah como mínimo, con la que pueden duran un día entero e incluso dos con poco uso. Cabe destacar que de hace 5 a 7 años, los teléfonos celulares podían aguantar 1 semana funcionando con una batería de 1000 mah, sin embargo, los teléfonos solo eran usados para llamadas y mensajes de texto. En la actualidad, los Smartphone cuentan con pantallas de 4", microprocesadores arriba de 1 GHz, conectividad 3G, reproducción de música, vídeo, aplicaciones, juegos, etc. Por lo cual no puede esperarse que se siga teniendo la misma autonomía de energía que antes, cuando ahora son usados casi como computadoras portátiles. El mercado sigue pidiendo teléfonos cada vez más delgados y estéticos, por lo que se ha sacrificado la batería, que es uno de los componentes más grandes. Actualmente, existen más modelos que nos brindan la posibilidad de ganar más capacidad de batería a cambio de unos cuantos milímetros extras de grosor Memoria Al igual que las computadoras, los Smartphone cuentan con varios tipos de memoria en los cuales se almacenan los datos, aplicaciones, etc. (Khronox, 2012). La memoria RAM o memoria de acceso aleatorio (Random Access Memory), es uno de los componentes importantes del móvil, junto con los núcleos de procesamiento de la CPU y GPU (Graphics Processing Unit). Sin RAM, cualquier tipo de sistema sería incapaz de realizar tareas básicas y para acceder a los archivos de su memoria secundaria sería demasiado lento. Este tipo de memoria es un intermediario entre el sistema de archivos, ubicados en la ROM (Read Only 5462 Memory, es la memoria que permite sólo la lectura de la información y no su escritura), y los núcleos de procesamiento, que procesa cualquier tipo de información lo más rápidamente posible (Jonadep, 2012). Los archivos críticos que necesita el procesador se almacenan en la memoria RAM, que siempre debe de estar lista en espera de ser leída o escrita. Estos archivos críticos para el dispositivo pueden ser: los componentes del sistema operativo, datos de aplicaciones y gráficos de un juego, o en general cualquier cosa a la que se deba acceder a velocidades mayores que las de acceso a memorias de almacenamiento secundario. El tipo de memoria RAM que se utiliza en los Smartphone es DRAM (RAM Dinámica), la cual hace un manejo más efectivo y rápido de la información para no saturar el microprocesador del dispositivo. Dependiendo el uso que se le dé al dispositivo es recomendable que se tenga la mayor capacidad posible si se requiere realizar funciones o aplicaciones grandes ya que en entre más espacio esté disponible más datos podrán almacenarse y procesarse, los Smartphone del momento tienen capacidad de 512 MB (Megabyte) a 2000 MB (Jonadep, 2012). El almacenamiento interno también es de gran importancia para el funcionamiento del dispositivo, ya que sin ningún lugar para almacenar el sistema operativo y los archivos críticos de las aplicaciones no se podría tener nada. Incluso si un teléfono no tiene memoria accesible para el usuario, debe haber alguna forma de almacenamiento permanente interno que guarde por lo menos el sistema operativo. Dependiendo del sistema operativo instalado y del dispositivo hay múltiples chips de almacenamiento en el interior del sistema. Estos chips pueden estar divididos en varias áreas para diferentes propósitos, tales como archivos de aplicaciones, memoria caché y el sistema operativo. Normalmente, el chip que almacena los archivos de sistema se denomina ROM (memoria de sólo lectura), la cual solo puede ser modificada a través de las actualizaciones del sistema, pero no por el usuario final. 5563 Algunos dispositivos, como el Samsung Galaxy S, tienen una configuración multi- ROM. Un chip de memoria más pequeño de cerca de 512 MB (Megabyte), pero muy rápido que almacena los archivos principales del sistema, caché y datos de aplicaciones en particiones independientes. El segundo chip es más grande, y es generalmente una partición, 1 o 2 GB (Gigabyte), de almacenamiento del usuario que es más lento pero permite almacenar aplicaciones y archivos diferentes al sistema operativo (Jonadep, 2012). Otros modelos como el iphone 4S de Apple o el Motorola Droid Razr prefieren incluir un solo chip de almacenamiento que se encuentra, en términos de rendimiento, entre los dos chips utilizados en una configuración multi-chip (multi- ROM). El rendimiento de los chips de almacenamiento internos son, en general, mejor que lo que cualquier usuario puede conseguir con tarjetas microsd, que son las más utilizadas en los Smartphone para almacenamiento externo. Al estar los chips directamente soldados a la placa base del dispositivo las velocidades de lectura/escritura alcanzadas son óptimas, pueden estar por encima de 6 MB/s en escritura. Otra opción de almacenamiento con la que cuenta el Smartphone son las memorias extraíbles, las cuales se insertan en el dispositivo mediante una ranura de acuerdo al formato de la memoria. Actualmente casi todos los móviles usan almacenamiento extraíble con tarjetas microsd, por medio de ranuras para tarjetas SD (Jonadep, 2012). De los tres principales sistemas operativos de Smartphone (ios, Android y WP7), Android es el único que realmente soporta de forma nativa el almacenamiento extraíble. Con los dispositivos ios como el iphone, Apple no incluye ningún método para expandir el almacenamiento, en su lugar se le da al usuario un almacenamiento interno de gran tamaño que puede utilizar para aplicaciones, videos, música y demás. 5664 En Windows Phone es inusual el soporte para tarjetas micro SD, pero hay algunos modelos con una ranura para estas tarjetas como el Samsung Focus. Sin embargo, los datos que se colocan en la tarjeta extraíble tienen fuertes medidas de seguridad para que no se puedan leer en otros dispositivos o en una PC, siendo el software de gestión del propio teléfono el único capaz de cambiar lo que está en la tarjeta (Jonadep, 2012). Android cuenta con dos implementaciones de almacenamiento extraíble accesibles por el usuario: el almacenamiento accesible solo por el usuario en memoria externa o complementada con la memoria interna. Si se complementa lo que ya está disponible internamente, hay una partición independiente del sistema para la tarjeta externa como /sd-ext o /mmc, a las que algunas aplicaciones, tales como reproductores de música y vídeo, pueden tener acceso. La especificación original de SD permite tarjetas de hasta 2 GB de tamaño, y luego SDHC (SD de alta capacidad) aumentó el límite de tamaño a 32 GB. Recientemente SDXC (SD Extended Capacity) aumenta el límite hasta los 2 TB, pero las tarjetas SDXC no son compatibles con la mayoría de los nuevos Smartphone, es decir, la expansión máxima de almacenamiento se ha fijado, por el momento, en 32 GB (Jonadep, 2012) Cámara Otro punto importante en un Smartphone, es la cámara. Los actuales Smartphone tratan de cumplir con la finalidad de que puedas contar con la mayor cantidad de herramientas al alcance de tu bolsillo, por lo que una cámara fotográfica resulta esencial en el Smartphone. Los modelos actuales suelen contar hasta con 2 cámaras, una principal y otra secundaria (Khronox, 2012). 5765 Una cámara digital es una cámara fotográfica que, en vez de captar y almacenar fotografías en películas químicas como las cámaras de película fotográfica, aprovecha el proceso de la fotografía digital para generar y almacenar imágenes en el dispositivo. Cuando se toma una fotografía, se abre un pequeño obturador (una especie de cortina) por milésimas de segundo (depende de la cantidad de luz que haya) que hace que la luz entre y haga contacto con el sensor captando la imagen. Cada objeto que se observa, está reflejando colores en diferentes tonos que llegan a los ojos. Cada tonalidad de color produce calor en diferentes potencias. El sensor de la cámara tiene millones de sensores, dependiendo la cantidad, es el número de pixeles que tendrá. Estos se encargan de capturar el calor del cuadro a retratar y convertirlo en señales eléctricas que se transforman en un archivo electrónico de imagen, comúnmente JPEG. Existen 2 tipos de sensores, los CCD (Charge-Coupled Device) y los CMOS (Complementary Metal Oxide Semiconductor). Los sensores CCD funcionan mejor en entornos con poca luz y puede crear imágenes de más alto brillo, tonalidad de colores y calidad que los CMOS. Los CMOS crean imágenes en menor tiempo, gastan menos batería y son más económicos, pero no trabaja muy bien cuando la luz es escasa. Entre más megapíxeles (MP) tenga una cámara, tendrá la opción de capturar fotografías grandes, con más detalles y que se pueden imprimir o visualizar en computadora con mayor tamaño. Actualmente, un Smartphone de gama media debe contar como mínimo con una resolución de 8MP aunque muchos equipos actuales ya rebasan los 10 MP como por ejemplo el Sony Xperia Z de gama alta. Otra característica importante es la de contar con flash LED o Xenón para poder tomar fotografías en condiciones de poca luz. Actualmente hay modelos hasta con 2 flashes LED. 5866 El DSP (Digital Signal Processing), o procesador de imagen es un similar al procesador del dispositivo. En su interior se interpretan los datos recogidos por el sensor y se crea la imagen. El hecho de que los colores o las luces estén mejor o peor representados y sean más o menos fieles a la realidad, es debido en gran parte a este elemento encargado de realizar la exposición correcta y de construir la imagen. La rapidez de funcionamiento de la cámara además del sensor, está muy relacionada con el procesador. Los lentes son otro componente de la cámara, de ellos depende en cierta forma la velocidad de captura de imagen, los efectos de profundidad de campo y la estabilidad en las imágenes, entre otros. Los puntos en los que influyen son el control de apertura de lente, autofoco y foco manual, balance de tonos y colores, reconocimiento de sonrisa y de rostros. Un buen ejemplo son los lentes de Carl Zeiss. La cámara también permite grabar video, el cual varía en la resolución y calidad, los equipos actuales graban en una calidad de 720p a 1080p (alta definición). De esto dependerá que al momento de ver los vídeos grabados en nuestra computadora o televisión, se vean de buena calidad sin estar pixelados. La velocidad de grabación generalmente es de 30fps (Cuadros por segundo), de esta forma, el vídeo no se verá lento o en cuadros Sensores Por ultimo otro de los componentes que integran a un Smartphone que no son muy relevantes entre los consumidores pero que son de gran importancia ya que contribuyen al funcionamiento de los dispositivos para que sean inteligentes son los sensores. Estos son componentes electrónicos muy novedosos que sirven para captar información de diversos tipos, tales como: medir las condiciones ambientales, movimiento, posición, etc; en las que se encuentra el dispositivo. 5967 Son capaces de proveer estos datos con alta precisión y exactitud al Smartphone, los cuales posteriormente procesa y utiliza para realizar varias de sus funciones principales o utilizarlos con las de alguna aplicación especializada. Por ejemplo para localizar la ubicación geográfica del dispositivo y trazar una ruta requerida por el usuario mediante una aplicación de mapas que haga uso de los datos obtenidos mediante el GPS (Google, 2012). Estas capacidades son importantes ya que gracias a ellas permiten un mejor desempeño del Smartphone, ya que le otorgan la capacidad de interactuar con el mundo exterior generando que aproveche todo su potencial para que el usuario tenga una buena experiencia interactuando con el dispositivo y la variedad de funciones disponibles. Los fabricantes de dispositivos se han puesto a la tarea de desarrollar nuevos modelos de sensores que contribuyan en nuevos aspectos que influyen en el entorno del usuario como por ejemplo su salud. (Dolcourt, 2013) Los sensores que generalmente se incluyen en la fabricación de los Smartphone son (Jonadep, 2012): Acelerómetro: es un instrumento destinado a medir aceleraciones. Es capaz de medir la magnitud y la dirección de la aceleración y se puede utilizar para detectar la inclinación, la vibración, el movimiento, el giro y el choque. Actualmente es posible construir acelerómetros de tres ejes (X,Y,Z) en un sólo chip de silicio, incluyendo en el mismo la parte electrónica que se encarga de procesar las señales. La mayoría de los nuevos modelos de cámaras de fotos incluyen un acelerómetro con el que es posible detectar si hacemos la toma en forma horizontal o vertical, grabando ese dato en la foto y permitiendo verla con la orientación deseada, esto ya se incluye en algunos modelos de Smartphone. Incluso, la foto puede girarse automáticamente dependiendo de la posición con que la sostengamos. En los teléfonos móviles existen infinidad de aplicaciones que utilizan acelerómetros en las cuales el contenido se adapta a la pantalla dependiendo la posición del dispositivo. 6068 Giroscopio: El objetivo principal del giroscopio es el de detectar la rotación del teléfono sobre sí mismo, calculando también la velocidad angular o velocidad de giro. Además en combinación del acelerómetro es capaz de moverse por 6 ejes simultáneamente, detectando el movimiento con mucha más precisión. Por tanto puede capturar la aceleración, velocidad angular y la tasa de rotación, esto implica mejores gestos y mayor precisión en el control de juegos y demás aplicaciones. Brújula: Este dispositivo detecta los polos magnéticos de la tierra como una brújula convencional pero lo realiza mediante un chip cuya calibración inicial detectar la posición que ocupa el teléfono con respecto al campo magnético terrestre. Esto es muy útil cuando utilizas por ejemplo un mapa, o la visión a pie de calle de Google. Este chip mide 2,5 milímetros de ancho y de largo y 0,5 milímetros de grosor. Dentro lleva tres sensores, aunque ya los hay de seis para darles mayor precisión pero aún no se han generalizado en los móviles. Al tener tres sensores sensibles al magnetismo que está colocados en tres posiciones diferentes dentro del chip conseguimos que la brújula detecte los tres ejes (X,Y,Z). Sensor de luz: Es un dispositivo electrónico que responde al cambio en la intensidad de la luz. Estos sensores requieren de un componente emisor que genera la luz, y un componente receptor que ve la luz generada por el emisor. Todos los diferentes modos de censo se basan en este principio de funcionamiento. Están diseñados especialmente para la detección, clasificación y posicionado de objetos; la detección de formas, colores y diferencias de superficie, incluso bajo condiciones ambientales extremas. Los sensores de luz se usan para detectar el nivel de luz y producir una señal de salida representativa respecto a la cantidad de luz detectada, por ejemplo en un ambiente de poca luz la pantalla del Smartphone aumenta su brillo. Un sensor de luz incluye un transductor fotoeléctrico para convertir la luz a una señal eléctrica y puede incluir electrónica para condicionamiento de la señal, compensación y formateo de la señal de salida. 6169 Sensor de proximidad: Es un transductor que detecta objetos o señales que se encuentran cerca del elemento sensor. Existen varios tipos de sensores de proximidad según el principio físico que utilizan. Los más comunes son los interruptores de posición, los detectores capacitivos, los inductivos y los fotoeléctricos, como el de infrarrojos. Por ejemplo, en muchos móviles actuales un sensor de proximidad desactiva la capacidad táctil de la pantalla cuando el dispositivo se usa cerca de la cara durante una llamada de voz. Se hace para ahorrar batería y para prevenir ejecuciones incorrectas con la cara u orejas. NFC: Near field communication (NFC) es una tecnología de comunicación inalámbrica, de corto alcance y alta frecuencia que permite el intercambio de datos entre dispositivos. Los estándares de NFC cubren protocolos de comunicación y formatos de intercambio de datos, y están basados en ISO (RFID, radio-frequency identification). Muchos Smartphone de alta gama lo llevan integrado en sus placas base. También hay tarjetas SIM (Secure Identity Management) con tecnología NFC por lo que no hace falta cambiar de equipo para utilizarla. El intercambio se realiza acercando nuestro teléfono móvil o tarjeta con chip NFC a otro dispositivo o terminal con esta tecnología, como por ejemplo algunos equipos Samsung que con tan solo tocarse se pueden transferir archivos. GPS: Su función es proporcionar la posición geográfica en la que se encuentra el Smartphone. Utiliza una variación del GPS convencional llamada A-GPS (Assisted Global Positioning System) la cual puede funcionar de dos formas mediante el acceso a un Servidor de Asistencia en línea (modo on-line) o fuera de línea (modo off-line). Los modos en línea acceden a los datos en tiempo real, por lo que tienen la necesidad de tener una conexión de datos activa con el consiguiente coste de la conexión. Los sistemas fuera de línea permiten utilizar datos descargados previamente. Por tanto, algunos dispositivos A-GPS requieren una conexión activa (modo en línea) a una red celular de teléfono (como 3G) para funcionar, mientras que en otros simplemente se hace el posicionamiento más rápido y preciso, 6270 pero no se requiere conexión (modo fuera de línea). Los dispositivos que funcionan en modo fuera de línea (off-line), descargan un fichero mientras tienen acceso a la red (ya sea a través de una conexión de datos GPRS, Ethernet, WIFI, ActiveSync o similar) que se almacena en el dispositivo y puede ser utilizado por éste durante varios días hasta que la información se vuelve obsoleta y se nos avisa de que es preciso actualizar los datos. En cualquier caso, el sistema de GPS asistido utilizará los datos obtenidos, de una u otra forma, de un servidor externo y lo combinará con la información de la celda o antena de telefonía móvil para conocer la posición y saber qué satélites tiene encima. Todos estos datos de los satélites están almacenados en el servidor externo o en el fichero descargado, y según nuestra posición dada por la red de telefonía, el GPS dispondrá de los datos de unos satélites u otros y completará a los que esté recibiendo a través del receptor convencional de GPS, de manera que la puesta en marcha de la navegación es notablemente más rápida y precisa. Sensor de Rotación: Obtiene la orientación del dispositivo mediante la combinación de los ángulos en que se encuentran sus tres ejes. Generalmente es implementado como software, el cual combina y corrige la información obtenida mediante otros sensores como pueden ser el giroscopio, acelerómetro y brújula (a esto se le llama fusión de sensores). Sensor de Orientación: Permite al dispositivo monitorear su posición respecto al marco de referencia de la Tierra (específicamente la posición del polo norte), mediante el acelerómetro y el sensor de campos magnéticos mide los ángulos de los tres ejes del dispositivo respecto al norte magnético. Sensor de Campos Magnéticos: Es similar a la brújula, detecta cambios en el campo magnético de la Tierra y su función principal es la de medir de que manera afecta a los ejes del dispositivo. 6371 2.5 Conectividad La conectividad es esencial para el Smartphone, ya que para realizar en plena capacidad sus funciones tales como el uso de las aplicaciones, actualizaciones de sistema, etc., se debe tener una conexión a la Web constante. El dispositivo puede conectarse con un plan de datos proporcionado por alguna operadora telefónica mediante una red especializada o accediendo a una red Wi-Fi mediante un hotspot. A continuación se explica cómo funcionan estas redes (Jonadep, 2012). Las operadoras de servicio telefónico celular ofrecen generalmente a sus clientes planes de datos a través de la red 3G aunque se comienza a migrar a la red 4G o LTE (Long Term Evolution). Red 3G: Es la tercera generación en redes de telefonía móvil. Esta red tiene la capacidad de transmitir voz y datos a través de la telefonía móvil mediante UMTS (universal mobile telecommunications system o servicio universal de telecomunicaciones móviles). Puede alcanzar una velocidad de 114 kbtis/s hasta 7.2 Mbtis/s dependiendo de las condiciones de terreno y del plan de datos. Esta capacidad le permite prestar servicios multimedia interactivos y nuevas aplicaciones de banda ancha, tales como servicios de video telefonía y video conferencia y transmisión de audio y video en tiempo real. Red 3.5G: Es la evolución de la red 3G, esta ofrece las mismas prestaciones pero de manera más rápida ya que mejora significativamente la capacidad de transferencia de información alcanzando velocidades de hasta 14 Mbits/s. Red 4G: Es la cuarta generación en tecnologías de telefonía móvil. En ella se integran varios protocolos y tecnologías lo cual le permitirá en redes modernas alcanzar velocidades de conexión Web de 100 Mbits/ hasta el 1 Gbit/s. 6472 Wi-Fi es un mecanismo de conexión de dispositivos electrónicos de forma inalámbrica. Los dispositivos habilitados con Wi-Fi, pueden conectarse a Internet a través de un punto de acceso de red inalámbrica. Dicho punto de acceso (hotspot) tiene un alcance de unos 20 metros (65 pies) en interiores y al aire libre una distancia mayor. Pueden cubrir grandes áreas la colocación de múltiples puntos de acceso (Jonadep, 2012). Wi-Fi es una marca de la Wi-Fi Alliance (anteriormente la WECA: Wireless Ethernet Compatibility Alliance), la organización comercial que adopta, prueba y certifica que los equipos cumplen los estándares relacionados a redes inalámbricas de área local. Los estándares IEEE b, IEEE g e IEEE n disfrutan de una aceptación internacional debido a que la banda de 2.4 GHz está disponible casi universalmente, con una velocidad de hasta 11 Mbit/s, 54 Mbit/s y 300 Mbit/s, respectivamente. Otro mecanismo de conexión que utiliza el Smartphone es el Bluetooth el cual es una especificación industrial para redes inalámbricas de área personal (WPAN) que posibilita la transmisión de voz y datos entre diferentes dispositivos mediante un enlace por radiofrecuencia en la banda ISM (Industrial, Scientific and Medical) que son bandas reservadas internacionalmente para uso no comercial, en los 2,4 GHz. Con esta tecnología se facilitan las comunicaciones entre equipos móviles y fijos, se eliminan los cables y conectores entre éstos y se ofrece la posibilidad de crear pequeñas redes inalámbricas para facilitar la sincronización de datos entre equipos personales (Jonadep, 2012). 6573 CAPITULO III: PROGRAMACIÓN EN ANDROID74 3.1 Lenguajes de programación en Android Como se describe en capítulos anteriores, desde sus inicios Android se ha enfocado en ser una plataforma de desarrollo abierta y libre para que los desarrolladores elaboren aplicaciones de distintas maneras y con diversos contenidos. Es por esta razón que a diferencia de otros sistemas operativos móviles, con Android se puede trabajar en diferentes lenguajes de programación. A continuación se realiza una descripción de los más importantes (León, 2012) Java El lenguaje oficial de Google para la programación en Android es el Java. Mediante este lenguaje se da soporte a empresas y desarrolladores para realizar aplicaciones nativas para el sistema operativo. Las aplicaciones se realizan en archivos.class de Java, los cuales posteriormente son convertidos por la herramienta dx contenida en el SDK a archivos.dex, los cuales son ejecutados por Dalvik. Estos archivos son más compactos y especialmente diseñados para sistemas con restricciones de memoria y procesamiento. En la página oficial para desarrolladores de Android (http://www.developer.android.com) se puede encontrar toda la información necesaria para poder hacer aplicaciones, ya que cuenta con tutoriales, foros, videos y códigos de ejemplo sobre cada API de Android. 6775 3.1.2 Basic4Android Basic4Android es una plataforma de programación para aplicaciones Android cuyo lenguaje base de programación es VisualBasic. Está orientado a personas que apenas inician en el mundo de la programación de una manera más gráfica y no tan abstracta. No es el mismo lenguaje de Microsoft, pero su sintaxis es la misma. En la página oficial (http://www.basic4ppc.com) se encuentra toda la documentación de esta plataforma de programación para Android. Esta página cuenta con sección de descargas, documentación, foros y las características que lo hacen sobresalir sobre otros ambientes, así como la sección de pago ya que esta plataforma no es gratuita. Hay desde la versión básica de 49 dólares hasta la versión máxima de 249 dólares americanos. La diferencia entre estas versiones es el tiempo que se tiene de actualizaciones, en la básica se obtiene acceso completo a la plataforma pero con solo 2 meses de actualizaciones, y la máxima tiene 2 años de actualizaciones Mono Otro de los lenguajes que Microsoft desarrollo para hacer aplicaciones fue C# y.net, las cuales son muy usados en diferentes ambientes, por lo que también se adaptaron para trabajar con Android. Los desarrolladores que ya han trabajado con Visual Studio lo único que deben hacer es instalar es el SDK de Android, la versión para Android de Mono y listo. Pueden seguir desarrollando sin ningún inconveniente; además se trabaja con un lenguaje nativo para Android ya que no tiene un intérprete como lo tendría Basic4Android, y su aprendizaje es relativamente sencillo en un tiempo prudente si lo que se busca es hacer una aplicación que se tiene ya en mente pero sin tiempo de aprender un nuevo lenguaje. Esta plataforma tiene un costo de $300 dólares la versión indie con funciones básicas, $999 la versión negocios con funciones más avanzadas y $1999 la versión empresarial con todas las funciones disponibles. El 6876 sitio oficial contiene toda la información y documentación necesaria (http://xamarin.com/monoforandroid) App Inventor Esta plataforma está basada en un lenguaje de desarrollo gráfico en donde no se utilizan líneas de código, tan solo se arrastran bloques identificados con la acción que se necesita hacer y listo. Está orientado a personas con poca preparación técnica en programación pero que desean realizar sus propias aplicaciones. Esta plataforma de desarrollo fue impulsada por Google con el fin de que más personas se unieran a la familia de Android; esta herramienta usa el navegador Web como centro principal de trabajo, y almacena todo esto en servidores que están disponibles cada vez que se entre a internet. En la página esta toda la información, documentación y tutoriales para usar esta plataforma LiveCode Es una plataforma en la que su principal característica es que se puede programar tanto para Android, ios, Windows, Linux, iphone, ipad, Web y para Servidores con una sola plataforma de trabajo. El lenguaje de programación que usa LiveCode se llama Programación Orientada a Eventos, y se basa en arrastrar elementos a un área de trabajo y programar los eventos que estén vinculados a este elemento; por ejemplo, si se arrastra un botón al área de trabajo, el evento que se vincula es el clic sobre ese botón, o por ejemplo si se arrastra una imagen, el evento vinculado puede ser moverlo sobre la pantalla. Este programa también es de pago dependiendo de que alcance se desee tener en los desarrollos, existen diferentes paquetes de pago mensual y anual los cuales 6977 van desde los $199 a los $1499 dólares. La página oficial es en donde hay mucha más información al respecto. 3.2 Componentes de una aplicación Android Los componentes son los elementos básicos de una aplicación Android. Cada uno de los componentes es un punto de acceso mediante el cual el sistema puede ingresar a la aplicación. Algunos dependen de otros pero individualmente cada componente realiza un proceso en específico que define la actividad de la aplicación (Rodríguez, 2012). Existen diferentes tipos de componentes los cuales realizan diversas actividades y ciclos de vida, los principales son (Google, 2012): Activities (actividades): Es la parte encargada de construir la interfaz de usuario, la ventana que aparezca en pantalla para la aplicación. Tiene la responsabilidad de presentar los elementos visuales y reaccionar a las acciones del usuario. Una aplicación puede tener diferentes actividades, por ejemplo, una aplicación de puede contar con una actividad para enlistar los correos recibidos, una actividad para escribir correo, una actividad para eliminar correo, etc. Android tiene la capacidad de ejecutar diferentes actividades al mismo tiempo y pasar de una a otra. Services (servicios): Son los componentes que se ejecutan en segundo plano para realizar operaciones de larga duración o para realizar un trabajo para procesos remotos. Un servicio no proporciona una interfaz de usuario. Por ejemplo, un servicio puede reproducir música en segundo plano mientras el usuario está en una aplicación diferente, o puede obtener datos mediante la red sin bloquear la interacción del usuario con una actividad. Otro componente, tal como una actividad, puede iniciar el servicio y ejecutarlo o unírsele con el fin de interactuar con él. 7078 Content providers (proveedores de contenido): Un proveedor de contenido gestiona un conjunto compartido de datos de la aplicación. Puede almacenar los datos en el sistema de archivos, una base de datos SQLite, en la web, o cualquier otro lugar de almacenamiento persistente a la que la aplicación pueda acceder. A través del proveedor de contenido, otras aplicaciones pueden consultar o incluso modificar los datos (si el proveedor de contenido lo permite). Por ejemplo, el sistema Android proporciona un proveedor de contenido que gestiona la información de contacto del usuario. Como tal, cualquier aplicación con los permisos adecuados puede consultar parte del proveedor de contenidos para leer y escribir información sobre una persona en particular. Broadcast receivers (receptores de difusión): Un receptor de difusión es un componente que responde a los anuncios de difusión en todo el sistema. Muchas emisiones se originan en el sistema, por ejemplo, una emisión que anuncia que la pantalla se apaga, la batería está baja, o una imagen fue tomada. Las aplicaciones también pueden iniciar emisiones, por ejemplo, para permitir que otras aplicaciones sepan que algunos datos o archivos se han descargado en el dispositivo y están disponibles para ser utilizados. Aunque los receptores de difusión no muestran una interfaz de usuario, se puede crear una barra de estado de notificación para alertar al usuario cuando se produce un evento de difusión. Sin embargo, un receptor de difusión es sólo una puerta de entrada a otros componentes y su objetivo es hacer una cantidad de trabajo mínima. Por ejemplo, se podría iniciar un servicio para realizar un trabajo basado en el evento. Intents (intenciones): Son los mensajes del sistema que se encuentran corriendo en el interior del dispositivo. Mediante los intents se activan los componentes de actividades, servicios y proveedores de contenido. Se encargan de notificar a las aplicaciones de varios eventos: cambios de estado en el hardware (por ejemplo cuando se inserta una SD al teléfono), notificaciones de datos entrantes (por ejemplo cuando llega un SMS) y eventos en las aplicaciones (por ejemplo cuando una actividad es lanzada desde el menú principal). Así como se pueden crear actividades que respondan a las intenciones, también se pueden crear intenciones 7179 que lancen actividades o usarlas para detonar eventos ante algunas situaciones específicas (por ejemplo que el Smartphone nos notifique por medio de un mensaje cuando nuestra localización esté a 10 metros del punto de destino). Es importante mencionar que el sistema es el que elige entre las actividades disponibles en el teléfono y dará respuesta a la intención con la actividad más adecuada. 3.3 Herramientas y entorno de desarrollo para programar en Android Antes de comenzar la programación en Android es necesario conseguir las herramientas y el entorno de desarrollo, posteriormente realizar la instalación y los ajustes (Google, 2012) Descarga e instalación de herramientas A continuación se enlistan los pasos generales necesarios para obtener e instalar las herramientas oficiales con las que se realiza la programación (Gómez, 2012). 1. Kit de desarrollo Java: Ya que la programación en Android funciona con Java, es necesario conseguir el kit de desarrollo o JDK (Java Development Kit) de este lenguaje ya que es indispensable para el funcionamiento del IDE o entorno de desarrollo Eclipse. El kit cuenta con las herramientas, documentación y licencias para programar en Java. Se puede descargar de manera gratuita y para diversos sistemas operativos en el sitio oficial: La versión actual es la JDK 7u17. 7280 2. Entorno de desarrollo Eclipse y Kit de desarrollo Android: Para trabajar en el desarrollo de Android, Google proporciona de manera gratuita un paquete oficial en el cual se incluyen: el IDE Eclipse, el SDK Android, herramientas, emulador, etc (Google, 2012). El IDE Eclipse es un entorno de desarrollo que funciona con Java, en el cual mediante el plugin ADT (Android Developer Tools) se pueden crear aplicaciones para Android. Solo es necesario descargar el paquete, descomprimirlo, colocarlo en el sitio deseado dentro de la PC y listo comenzar a trabajar en Eclipse, esto gracias a que el entorno de desarrollo ya viene configurado con las herramientas, plugins y SDK de Android (Google, 2012). El paquete se encuentra disponible para diferentes sistemas operativos y es necesario tener el JDK Java para poder trabajar. Se puede obtener en el sitio: Características y funciones del IDE Eclipse con SDK Android El entorno de desarrollo Eclipse ofrece una variedad de funciones y características al trabajar en conjunto con el SDK de Android mediante el plug-in ADT proporcionado por Google (Smith, 2011). Las funciones principales se realizan mediante perspectivas, el IDE Eclipse cuenta con 2: Java y la DDMS (Dalvik Debug Monitor Service). En la perspectiva Java se realiza el desarrollo de los proyectos en diferentes lenguajes de programación ya sean Android, Java, etc. Tal como se muestra en la Figura 3.1 esta perspectiva se encuentra integrada por varias secciones, las cuales se describen a continuación (Smith, 2011): 7381 Figura 3.1 Perspectiva Java Fuente: Elaboración propia Explorador de paquetes (Package Explorer): Esta sección ofrece una manera jerárquica de explorar los proyectos que se están desarrollando en el IDE, permitiendo al usuario navegar y controlar los elementos de estos mediante una estructura de directorio. Editor: En esta sección el usuario realiza las tareas principales del proyecto tales como el desarrollo de código, elaboración de pantallas, etc. Esquema (Outline): Aquí el usuario puede visualizar un representación interactiva del archivo que se esté utilizando en el editor, esquematizado en unidades de código, para poder accesar rápidamente a una parte especifica de un archivo muy grande. Problemas (Problems): Es la sección encargada de enlistar los errores y advertencias que surjan durante el proceso de desarrollo de un proyecto. 7482 Documentación (Javadoc): Esta parte sirve para que el usuario genere la documentación necesaria durante el desarrollo de un proyecto. Declaración (Declaration): Esta función despliega las clases o métodos que se seleccionen en el código de desarrollo del proyecto. Consola (Console): Muestra las acciones y errores que se presenten al ejecutar el emulador. Consola Android (LogCat): Aquí se despliega las acciones, advertencias y errores que pueda tener el código para el proyecto. Figura 3.2 Perspectiva DDMS Fuente: Elaboración propia La perspectiva DDMS es una función del SDK Android que aporta el plug-in ADT al entorno Eclipse. Su objetivo principal es realizar la depuración de las aplicaciones desarrolladas, así como también, las acciones y funciones de los dispositivos virtuales. Como se muestra en la Figura 3.2 a esta perspectiva la integran las siguientes secciones (Smith, 2011): 7583 Dispositivos (Devices): Aquí se enlistan los dispositivos virtuales que se estén ejecutando en el emulador, así como también, los procesos y acciones que estén realizando. El usuario puede realizar diferentes acciones como monitorear el funcionamiento de los procesos, depurarlos o detenerlos, hacer capturas de pantalla del emulador, etc. Hilos (Threads): Esta vista permite acceder a la información de los threads que se estén ejecutando dentro de la aplicación. Pila (Heap): Esta parte sirve analizar y mejorar la administración de la memoria en la aplicación. Monitoreo de asignación (Allocation Tracker): Aquí se enlista la información de cómo el recolector de basura de Dalvik administra la memoria de la aplicación. Estadísticas de red (Network Statics): Aquí se despliega la información de las estadísticas sobre el uso de red que utiliza la aplicación. Explorador de archivos (File Explorer): Esta sección permite al usuario acceder y controlar la estructura del sistema del dispositivo (Carpetas dentro del sistema). Control del emulador (Emulator Control): Permite realizar pruebas en cuanto al funcionamiento del dispositivo para mejor desempeño de la aplicación. Se pueden simular llamadas, mensajes de texto, etc. Información del sistema (System Information): Despliega graficas en cuanto al funcionamiento del dispositivo como uso del procesador, uso de memoria, etc. 3.4 Crear aplicaciones con Eclipse Después de obtener las herramientas se pueden comenzar a crear aplicaciones mediante el entorno de desarrollo Eclipse. Los proyectos tienen una estructura y 7684 se programan de manera similar a las aplicaciones Java. Una ventaja que ofrece este IDE es que se conjuga el desarrollo mediante código y ambiente gráfico Crear un nuevo proyecto Para crear un nuevo proyecto se deben seguir los siguientes pasos (Google, 2012): Se inicia el IDE Eclipse y después se despliega menú File / New / Android Application Project como se muestra en la Figura 3.3. Figura 3.3 Crear nuevo proyecto Android Fuente: Elaboración propia De esta forma se inicia el asistente de creación del proyecto, que guiará al usuario por las distintas opciones de creación y configuración de un nuevo proyecto. El IDE eclipse ofrece al desarrollador diversas opciones para elaborar trabajos en diferentes lenguajes de programación. En la Figura 3.4 se observa la primera pantalla donde el desarrollador debe indicar el nombre que tendrá la aplicación, el nombre del proyecto y el paquete Java que se utilizara en las clases Java. Después selecciona la mínima versión del SDK que aceptará la aplicación para funcionar al ser instalada en un dispositivo (Minimum Required SDK), la versión del SDK para la que será desarrollada (Target SDK), y la versión del SDK con la que se compilara el proyecto (Compile with). Las dos últimas opciones suelen coincidir con la versión de Android más reciente con la 7785 que esté funcionando Eclipse. El resto de opciones permite escoger el tema de diseño con que se desarrollara y presentara el proyecto. Figura 3.4 Ajustes iniciales Fuente: Elaboración propia Al pulsar el botón Next, se accede al segundo paso del asistente el cual se muestra en la Figura 3.5, donde se tiene que indicar si durante la creación del nuevo proyecto se quiere hacer un icono para la aplicación (Create custom launcher icon) y si se quiere crear una actividad inicial (Create activity). También se puede indicar si el proyecto será del tipo Librería (Mark this Project as a library). Otra opción disponible en este paso es la de asignar el espacio de trabajo en donde se creara el proyecto (Workspace) en donde se guardaran todos los archivos de desarrollo. La última opción sirve para agregar el proyecto a los grupos de trabajo (Working sets), los cuales permiten agrupar en vistas los distintos proyectos en los que esté desarrollando el usuario para que pueda trabajar de manera mas cómoda. 7886 Figura 3.5 Creación de elementos Fuente: Elaboración propia En la siguiente pantalla del asistente se configura el icono que tendrá la aplicación en el dispositivo como se muestra en la Figura 3.6. Aquí se seleccionan los atributos que tendrá el icono tales como: la imagen, texto o dibujo predefinido que aparecerá en el icono, el margen, la forma y los colores aplicados. Cada atributo puede ser modificado a gusto del usuario para la elaboración del icono, selecciona si utilizara una imagen, clipart o texto. La opción de imagen permite agregar un archivo existente, seleccionar el color de fondo, agregar una figura de fondo, etc. La opción de clipart permite seleccionar una imagen de arte del catálogo contenido en el IDE, seleccionar el color de la imagen y de fondo, agregar una figura, etc. Por último la opción de texto permite escribir una palabra para utilizarla como icono, se puede establecer el tipo de fuente, el color de la palabra y de fondo, agregar una figura, etc. Una vez terminada la configuración del icono se procede a continuar presionando el botón Next. 7987 Figura 3.6 Creación de icono Fuente: Elaboración propia El siguiente paso en la configuración del proyecto consiste en crear el tipo de Actividad principal con el que se desarrollara la aplicación, como se muestra en la Figura 3.7. En la pantalla del asistente mostrada en la Figura 3.7 se observan tres tipos de actividad que se pueden seleccionar: Blank Activity, Fullscreen Activity y Master/Detail Flow. La opción Blank Activity crea una nueva actividad en blanco, con una barra de acciones y elementos de navegación opcionales como pueden ser pestañas o deslizamiento horizontal. La opción Fullscreen Activity crea una nueva actividad entrelaza la pantalla del sistema (estatus y barras de navegación) y la barra de acciones de acuerdo a la manipulación del usuario. Por último la opción Master/Detail Flow crea una interface la cual muestra una colección de objetos y la información de sus detalles. Una vez seleccionada la actividad deseada por el usuario se presiona el botón Next para proseguir con el asistente. 8088 Figura 3.7 Creación de actividad principal Fuente: Elaboración propia En el último paso del asistente de configuración se indica los datos de la actividad principal, que se eligió en el paso anterior, donde se establece el nombre de su clase Java asociada, el nombre de su layout.xml (la interfaz gráfica de la actividad) y el tipo de navegación que tendrá la aplicación tal como se observa en la Figura 3.8. Para terminar la configuración se pulsa el botón Finish y Eclipse creará de manera automática toda la estructura del proyecto y los elementos indispensables que debe contener incluyendo la configuración que establece el usuario en estos pasos. De esta manera es como se crea y configura una aplicación Android en el entorno de desarrollo Eclipse, ahora se explicara de qué manera se encuentra integrado y cómo funcionan las partes del proyecto. 8189 Figura 3.8 Nombre de la actividad y layout Fuente: Elaboración propia Estructura del proyecto El entorno de desarrollo creara el proyecto con una estructura integrada por varias carpetas y archivos tipo árbol similar a la de Java, la cual se puede observar en la Figura 3.9. En estas carpetas estarán todos los elementos que utilizara la aplicación tales como código de funcionamiento, librerías, actividades, elementos multimedia, etc. A continuación se detallan los elementos en las carpetas que integran la estructura del proyecto y se explican sus características así como también sus funciones principales(gómez, 2012). 8290 Figura 3.9 Directorio del proyecto Fuente: Elaboración Propia Carpeta /src/ Esta carpeta contiene todo el código fuente de la aplicación, código de la interfaz gráfica, clases auxiliares, etc. Inicialmente, Eclipse creará el código básico de la pantalla principal (Activity) de la aplicación definida en la configuración inicial del proyecto (MainActivity), bajo la estructura del paquete Java definido. Carpeta /gen/ Contiene una serie de elementos de código generados automáticamente al compilar el proyecto. Cada vez se genere el proyecto, la maquinaria de compilación de Android producirá una serie de archivos fuente Java dirigidos al control de los recursos de la aplicación. Dado que estos archivos se generan automáticamente tras cada compilación del proyecto es importante que no se modifiquen manualmente bajo ninguna circunstancia. Un elemento importante de esta carpeta es el archivo R.java ya que en este se define la clase R la cual contendrá en todo momento una serie de 8391 constantes con los ID de todos los recursos de la aplicación incluidos en la carpeta /res/, de forma que se pueda acceder fácilmente a estos recursos desde código a través de este dato Carpeta /assets/ Contiene todos los demás archivos auxiliares necesarios para la aplicación (cada uno en su propio paquete), por ejemplo ficheros de configuración, de datos, etc. La diferencia entre los recursos incluidos en la carpeta /res/raw/ y los incluidos en la carpeta /assets/ es que para los primeros se generará un ID en la clase R y se deberá acceder a ellos con los diferentes métodos de acceso a recursos. Para los segundos sin embargo no se generarán ID y se podrá acceder a ellos por su ruta como a cualquier otro fichero del sistema. Usaremos uno u otro según las necesidades de nuestra aplicación. Carpeta /bin/ Contiene los elementos compilados de la aplicación y otros archivos auxiliares. Aquí se encontrara el archivo con extensión.apk, que es el ejecutable de la aplicación que se instalará en el dispositivo. Carpeta /libs/ Contendrá las librerías auxiliares, generalmente en formato.jar que se utilicen en la aplicación Android. Carpeta /res/ Contiene todos los archivos de recursos necesarios para el proyecto: imágenes, vídeos, cadenas de texto, etc. Los diferentes tipos de recursos se distribuyen entre las siguientes subcarpetas: o /res/drawable/ Contiene las imágenes [y otros elementos gráficos] usados en por la aplicación. Para definir diferentes recursos dependiendo de la resolución y densidad de la pantalla del dispositivo se suele dividir en varias subcarpetas: /drawable-ldpi (densidad baja) /drawable-mdpi (densidad media) /drawable-hdpi (densidad alta) 8492 /drawable-xhdpi (densidad muy alta) o /res/layout/ Contiene los ficheros de definición XML de las diferentes pantallas de la interfaz gráfica. Para definir distintos layouts dependiendo de la orientación del dispositivo se puede dividir en dos subcarpetas: /layout (vertical) /layout-land (horizontal) o /res/anim/ Contienen la definición de las animaciones utilizadas por la aplicación. o /res/animator/ o /res/color/ Contiene ficheros XML de definición de colores según estado. o /res/menu/ Contiene la definición XML de los menús de la aplicación. o /res/xml/ Contiene otros ficheros XML de datos utilizados por la aplicación. o /res/raw/ Contiene recursos adicionales, normalmente en formato distinto a XML, que no se incluyan en el resto de carpetas de recursos. o /res/values/ Contiene otros ficheros XML de recursos de la aplicación, como por ejemplo cadenas de texto (strings.xml), estilos (styles.xml), colores (colors.xml), arrays de valores (arrays.xml), etc. Archivo AndroidManifest.xml Este es el archivo principal de la aplicación. Contiene la definición en XML de los aspectos principales de la aplicación los cuales se los comunicara al sistema, como por ejemplo declarar su identificación (nombre, versión, icono), sus componentes (pantallas, mensajes), los requerimientos de la aplicación, las librerías auxiliares utilizadas, o los permisos necesarios para su ejecución. 8593 3.4.3 Ejecutar el proyecto Una vez finalizado el desarrollo de la aplicación se puede ejecutar de dos maneras, mediante el emulador incluido en las herramientas o mediante un dispositivo físico con Android (Moya García & Invarato Menéndez, 2012). Emulador Para ejecutar un proyecto en el emulador primero se debe crear el dispositivo virtual en el que se trabajara mediante el Android Virtual Device Manager. Para acceder se debe desplegar en Eclipse el menú Window/AVDM como se muestra en la Figura Figura 3.10 Ventana del AVDM Fuente: Elaboración propia Después de acceder al AVD Manager se puede seleccionar un dispositivo virtual existente o crear uno nuevo. Esto permite probar la aplicación en distintos tipos de dispositivos con versiones de Android diferentes. 8694 Para crear un dispositivo virtual nuevo se selecciona la opción de new, posteriormente el usuario podrá determinar las características de hardware y software del dispositivo como se muestra en la Figura Se asigna el nombre de dispositivo así como su tipo y con que display cuenta, tipo de procesador, con que versión de Android funciona, cantidad de memoria RAM, cantidad de memoria interna, si cuenta también con memoria SD, si tiene cámara, etc. Figura 3.11 Nuevo dispositivo virtual Fuente: Elaboración propia Después de crear el dispositivo virtual, se selecciona en la ventana del AVD Manager y se presiona la opción Start para comenzar a ejecutar el emulador, esto se observa en las Figuras 3.12 y El emulador se encargara de correr el dispositivo creado con todas las características ingresadas por el usuario, mediante este se podrán realizar algunas funciones predeterminadas como si se estuviera en un dispositivo real. 8795 Figura 3.12 Inicio de dispositivo virtual Fuente: Elaboración Propia Figura3.13 Dispositivo virtual en ejecución Fuente: Elaboración Propia Una vez que se encuentre ejecutando el emulador se podrá correr la aplicación para comprobar su correcto funcionamiento. Para realizar esto se selecciona la opción Run en el menú de Eclipse y listo, en la Figura 3.14 se muestra la aplicación funcionando en el emulador. Smartphone Para ejecutar una aplicación, en un dispositivo físico o Smartphone, como primer paso se debe conecta mediante USB a la PC (En algunos casos se necesitaran drivers USB especiales para que la PC reconozca el modelo de Smartphone). Al estar conectado a la PC se tiene que activar en el Smartphone el modo de USB debugging como se observa en la Figura 3.15 (El método para activarlo varia con cada modelo, en las últimas versiones de Android la opción se encuentra disponible en Settings > Developer options), esto permite que el Smartphone se 8896 conecte con el SDK de Android para que pueda realizar modificaciones en el funcionamiento. Figura 3.14 Aplicación en ejecucion Fuente: Elaboración propia Figura 3.15 Activación método USB debugging Fuente: Elaboración propia. Al igual que en el emulador se selecciona en Eclipse la opción Run, se desplegara un menú en el que se podrán elegir los dispositivos conectados a la PC o los dispositivos virtuales en el IDE. 8997 Como se muestra en la figura 3.16 se selecciona el Smartphone en el que se desea trabajar y después el método en que va funcionar, en este caso como Android Aplication. El IDE se encargara de instalar la aplicación en el Smartphone y ejecutarla. Figura 3.16 Selección de dispositivos Fuente: Elaboración propia Listo realizando todos estos sencillos pasos el usuario podrá probar sus proyectos o aplicaciones en un Smartphone que tenga sistema operativo Android, como se puede observar en la Figura 3.17 donde se muestra la aplicación corriendo de manera correcta en el dispositivo conectado mediante el entorno de desarrollo eclipse. Cabe destacar que es muy importante que la aplicación que se desea ejecutar en el Smartphone este dedicada a la misma versión de Android que este posee para que funcione correctamente. 9098 Figura 3.17 Aplicación en el Smartphone Fuente: Elaboración propia 3.5 Aplicación Básica Se realizara una aplicación básica, con el objetivo de observar en práctica y explicar las generalidades principales que conforman el proceso de desarrollo y programación para aplicaciones con Android. El ejemplo a desarrollar estará basado en una calculadora que ejecute operaciones básicas (suma, resta, multiplicación y división) con dos números introducidos por el usuario mediante el Smartphone y que se despliegue el resultado de la operación en la pantalla de este (Villalobos, 2012). El Smartphone en el que se ejecutara la aplicación es un LG modelo E612f, que funciona con el Android versión Ice Cream Sandwich. Para realizar la aplicación se siguen los siguientes pasos: 9199 1. Se comienza creando el proyecto para la aplicación a la cual se llama: Calculadora Básica, se definirán los nombres del proyecto y de su paquete, el SDK mínimo, objetivo y para compilar con el que se trabajara. También se establecerán el icono de la aplicación, la actividad y layout principales, como se muestra en la figura Figura 3.18 Creando la aplicación Fuente: Elaboración propia 2. Después de tener creado el proyecto el siguiente paso será elaborar la interfaz gráfica de la aplicación. Esto se realiza accediendo al archivo principal del layout: activity_calculadora.xml que se encuentra en la carpeta /res/layout del proyecto. El código XML de la interfaz queda de la siguiente manera (Youtube, 2012): <RelativeLayout xmlns: android ="http://schemas. android.com/apk/res/ android " xmlns:tools="http://schemas. android.com/tools" 92100 android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".calculadoraactivity" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" /> <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerhorizontal="true" android:layout_margintop="25dp" android:ems="10" /> <Button style="? android:attr/buttonstylesmall" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centervertical="true" android:onclick="onclick" 93101 android:text="+" /> <Button style="? android:attr/buttonstylesmall" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centervertical="true" android:layout_marginleft="16dp" android:onclick="onclick" android:text="*" /> <Button style="? android:attr/buttonstylesmall" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centervertical="true" android:layout_marginleft="16dp" android:onclick="onclick" android:text="-" /> <Button style="? android:attr/buttonstylesmall" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centervertical="true" android:layout_marginleft="16dp" 94102 android:onclick="onclick" android:text="/" /> <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginbottom="22dp" android:ems="10" > <requestfocus /> </EditText> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margintop="32dp" android:text="resultado:" android:textappearance="? android:attr/textappearancelarge" /> </RelativeLayout> En el código se incluyen dos etiquetas o elementos TextView, el primero para mostrar las instrucciones de uso de la calculadora, el segundo para 95103 desplegar los resultados de las operaciones mediante el uso del ID que se le será asignado. Se utilizan dos campos de texto u objetos EditText para que el usuario ingrese los números para las operaciones con el teclado. También se colocan cuatro botones a los cuales se les asigna a cada uno un ID y un método OnClick con los cuales realizara la función al momento en que el usuario los presione, la Figura 3.19 muestra cómo quedan los elementos gráficos. Figura 3.19 Creando el Layout Fuente: Elaboración Propia 3. Una vez elaborada la interfaz gráfica se asignaran las funciones a los elementos, para realizar esto se trabajara en el archivo de la actividad principal CalculadoraActivity.java localizado en la carpeta /src. El código Java queda de la siguiente manera (Youtube,2012): package com. android.calculadorabasica; import android.os.bundle; 96104 import android.app.activity; import android.view.view; import android.view.view.onclicklistener; import android.widget.button; import android.widget.edittext; import android.widget.textview; public class CalculadoraActivity extends Activity protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_calculadora); final Button btn1=(button) findviewbyid(r.id.button1); final Button btn2=(button) findviewbyid(r.id.button2); final Button btn3=(button) findviewbyid(r.id.button3); final Button btn4=(button) findviewbyid(r.id.button4); final EditText ed1=(edittext) findviewbyid(r.id.edittext1); final EditText ed2=(edittext) findviewbyid(r.id.edittext2); final TextView tex2=(textview) findviewbyid(r.id.textview2); btn1.setonclicklistener(new OnClickListener() public void onclick(view v) { int a=integer.parseint(ed1.gettext().tostring()); int b=integer.parseint(ed2.gettext().tostring()); int suma=a+b; tex2.settext("la suma es: "+suma); } }); btn2.setonclicklistener(new OnClickListener() { 97105 public void onclick(view v) { int a=integer.parseint(ed1.gettext().tostring()); int b=integer.parseint(ed2.gettext().tostring()); int resta=a-b; tex2.settext("la resta es: "+resta); } btn3.setonclicklistener(new OnClickListener() public void onclick(view v) { }); } int a=integer.parseint(ed1.gettext().tostring()); int b=integer.parseint(ed2.gettext().tostring()); int multi=a*b; tex2.settext("la multiplicacion es: "+multi); btn4.setonclicklistener(new OnClickListener() public void onclick(view v) { }); } double a=integer.parseint(ed1.gettext().tostring()); double b=integer.parseint(ed2.gettext().tostring()); double div=a/b; tex2.settext("la division es: "+div); } 98106 } Lo primero que se realiza es llamar a los elementos que se pusieron en el layout mediante el método OnCreate dentro de la clase principal Activity. Mediante los ID llamamos a los cuatro botones para asignarles sus funciones respectivas, a los campos de texto para capturar los valores que ingrese el usuario y a la etiqueta para que despliegue el resultado de las operaciones. Después se implementara para cada botón el método OnClickListener con el cual se ejecutara el método OnClick cada vez que el usuario haga clic en alguno de los botones para realizar una operación. Dentro de cada método OnClick, se declaran dos variables a y b de tipo numérico entero, las cuales recibirán los datos que el usuario ingrese en los campos de texto de la interfaz gráfica mediante el método gettext. Después de acuerdo al botón se le asigna la operación correspondiente a las variables (suma, resta, multiplicación o división). Por ultimo mostraremos el resultado de la operación en cada botón en la etiqueta del layout mediante el método settext. El entorno de desarrollo importara la paquetería necesaria para el funcionamiento de la aplicación. 4. Una vez terminado el desarrollo de la aplicación se comprueba su correcto funcionamiento mediante el emulador del entorno de desarrollo con el método descrito en secciones anteriores. La aplicación deberá ser capaz de comenzar a ejecutarse sin problemas en el emulador, posteriormente el usuario ingresa números o cantidades en los campos de texto, presiona el botón de la operación deseada para que se haga el cálculo y después se presente en pantalla la frase de la operación elegida junto con el resultado numérico. A continuación se muestran los resultados de las pruebas realizadas. 99107 Figura 3.20 Calculadora Figura 3.21 Introducir números Figura 3.22 Suma Fuente: Elaboración propia Fuente: Elaboración propia Fuente: Elaboración propia Como se muestra en las figuras 3.20 a 3.26, el usuario ingresa los números desde el teclado virtual del emulador y después elige la operación que desea realizar. Figura 3.23 Nueva operación Figura 3.24 Resta Figura3.25 Multiplicación Fuente: Elaboración propia Fuente: Elaboración propia Fuente: Elaboración propia 100108 Figura 3.26 División Fuente: Elaboración propia 5. Una vez realizada la comprobación en el emulador, se conecta el Smartphone a la PC para instalar la aplicación mediante el entorno de desarrollo y después ejecutarla Figura 3.27 y Figura 3.27 Calculadora en Smartphone Fuente: Elaboración propia Figura 3.28 Introducir números en Smartphone Fuente: Elaboración propia 101109 Aquí se muestra la ejecución de las operaciones en la aplicación ya instalada en un Smartphone, como se observa de las figuras 3.29 a 3.32, el usuario introduce las cantidades y realiza la operación deseada. Figura 3.29 Suma en Smartphone Fuente: Elaboración propia Figura 3.30 Resta en Smartphone Fuente: Elaboración propia Figura 3.31 Multiplicación en Smartphone Fuente: Elaboración propia Figura 3.32 División en Smartphone Fuente: Elaboración propia 102110 Como se muestra en este capítulo, el desarrollo de una aplicación Android no es muy complicado para el programador que tenga conocimientos en el lenguaje Java. La aplicación de ejemplo se ejecutó correctamente tanto en el emulador como en el dispositivo asignado y realizo sus funciones como estaban establecidas. También se observa como el entorno de desarrollo Eclipse es una herramienta muy útil para desarrollar aplicaciones en Android, ya que en complemento con el plug in ADT, brinda al usuario una gran variedad de opciones para desarrollar e incluir en los proyectos. 103111 CAPITULO IV: CONTROL DE SENSORES EN ANDROID112 4.1 Sensores en Android Como se abordó en capítulos anteriores los sensores son componentes con los que el Smartphone interactúa con el medio ambiente obteniendo datos que pueden ser utilizados por diversas funciones o aplicaciones de este mismo. La plataforma de Android puede trabajar con tres categorías de sensores (Google, 2012): Sensores de movimiento: Estos miden las fuerzas de aceleración y rotación que se aplican al dispositivo en sus tres ejes. Esta categoría incluye al acelerómetro, sensor de gravedad, giroscopio y sensores de rotación vectorial. Sensores Ambientales: Estos sensores miden los parámetros ambientales como la presión del aire, la temperatura y presión, la iluminación y humedad. Esta categoría incluye los barómetros, fotómetros y termómetros. Sensores de posición: Estos miden la posición física del dispositivo. Aquí se incluyen los magnetómetros y sensores de posición. Para trabajar con los sensores la plataforma hace uso del marco para sensores (sensor framework), el cual provee diversas interfaces y clases que permiten al desarrollador realizar distintas actividades con ellos, como por ejemplo: determinar el tipo de sensores en el dispositivo, sus capacidades individuales, definir eventos que reporten los cambios en los sensores, etc (Google, 2012). 105113 La disponibilidad de los sensores varía de acuerdo a la versión de Android con la que se esté trabajando, ya que se han ido introduciendo más tipos conforme a las nuevas versiones que son liberadas al mercado. 4.2 Marco para sensores de Android El marco para sensores de Android (sensor framework) permite acceder a los distintos tipos de sensores de un dispositivo. Algunos de ellos son basados en hardware y otros basados en software. Los basados en hardware son los componentes que están físicamente construidos en el dispositivo. Estos obtienen sus datos mediante la medición directa de las propiedades del entorno tales como: temperatura, humedad, posición, etc (Google, 2012). Los sensores basados en software son aquellos que no son construidos físicamente pero que tratan de emular algunas de las funciones de ellos. Estos obtienen los datos a procesar mediante uno o varios de los sensores físicos. Un ejemplo de estos sensores son los de gravedad o aceleración lineal. Son pocos los Smartphone que tienen todos los tipos de sensores. Algunos pueden contar con acelerómetro y magnetómetro, pero pocos cuentan con barómetro y termómetro. En algunos casos un dispositivo puede contar con varios sensores del mismo tipo, como por ejemplo dos sensores de proximidad de diferente rango. El marco de sensores es parte del paquete de Android de trabajo con hardware (android.hardware), este incluye las siguientes clases (Google, 2012): SensorManager: Esta clase sirve para crear una instancia del servicio de sensores. Provee varios métodos para accesar y enlistar los sensores, registrar y eliminar events listeners para sensores, y obtener información de orientación. Esta clase también provee varias constantes de sensores que 106114 se usan para reportar la efectividad, ajustar la captación de datos y su calibración. Sensor: Esta clase se puede usar para crear instancias de un tipo de sensor en específico. Provee varios métodos que pueden determinar las capacidades de los sensores. SensorEvent: El sistema utiliza esta clase para crear un objeto evento, el cual provee información acerca del evento en el sensor. Este objeto incluye información como: los datos sin procesar, tipo de sensor que género el evento, la precisión de los datos y la fecha en que se generó el evento. SensorEventListener: Esta interface sirve para crear métodos de llamada los cuales reciben notificaciones (sensor events) cuando cambien la precisión o valores del sensor. Generalmente en las aplicaciones que trabajan con sensores, se hace uso de dos API especiales, las cuales realizan dos tareas básicas para estos (Google, 2012): Identificar los sensores y sus capacidades: Esto es importante para aplicaciones que en su ejecución hagan uso de la información captada y generada por los sensores. Monitorear los eventos de sensores: Esta acción permite adquirir la información obtenida por los sensores. Un evento ocurre cada vez que el sensor detecta un cambio en los parámetros que este midiendo. El evento provee cuatro piezas de información: nombre del sensor que género el evento, la fecha y hora en que se generó, la precisión del evento, y la información obtenida que género el evento. 4.3 Tipos de sensores La plataforma de desarrollo Android soporta los siguientes tipos de sensores: 107115 Sensor Tipo Descripción Desde la API Mide las fuerzas de aceleración en m/s² a TYPE_ACCELEROMETER Hardware las que se expone el 3 dispositivo en sus tres ejes (y, x y z), incluyendo la fuerza de gravedad. Se usa principalmente para monitorear el movimiento. Mide la temperatura del entorno en grados 14 TYPE_AMBIENT_TEMPERATURE Hardware Celsius. Monitorea la temperatura del aire. Mide la fuerza de gravedad en m/s² a la TYPE_GRAVITY Hardware/Software que se expone el 9 dispositivo en sus tres ejes. Mide la tasa de TYPE_GYROSCOPE Hardware rotación en rad/s 3 alrededor de los tres ejes del dispositivo. Mide el nivel de luz en el ambiente TYPE_LIGHT Hardware (iluminación) en lx. 3 Controla el brillo del display 108116 Mide las fuerzas de aceleración en m/s² a las que se expone el TYPE_LINEAR_ACCELERATION Hardware/Software dispositivo en sus tres 9 ejes (y, x y z), excluyendo la fuerza de gravedad. Monitorea la aceleración a lo largo de un eje Mide el campo TYPE_MAGNETIC_FIELD Hardware geomagnético del 3 ambiente para los tres ejes en μt. Crea una brújula. Mide los grados de TYPE_ORIENTATION Software rotación que hace el 3 dispositivo sobre sus tres ejes. Determina la posición del dispositivo. Mide la presión del TYPE_PRESSURE Hardware aire en el ambiente en 3 hpa o mbar. Monitorea los cambios de presión. 109117 Mide la proximidad de un objeto respecto a la pantalla del TYPE_PROXIMITY Hardware dispositivo. Determina la posición del 3 Smartphone durante una llamada Mide el porcentaje de TYPE_RELATIVE_HUMIDITY Hardware humedad relativa en el 14 ambiente. Mide la orientación del TYPE_ROTATION_VECTOR Software/Hardware dispositivo mediante 9 los vectores de rotación. Mide y monitorea la TYPE_TEMPERATURE Hardware temperatura del 3 dispositivo en grados Celsius. Tabla 4.1 Tipos y características de sensores (Google, 2012) 4.4 Aplicación para sensores Se creara una aplicación simple que trabaje con los sensores de un dispositivo, con esto se podrá observar cómo funcionan y de qué manera se desarrolla la programación para sensores en Android. La apliacion se llamara Sensor Explorer la cual tendra como proposito enlistar los sensores con los que cuenta el dispositivo en el que se esta ejecutando, obtener sus caracteristicas y los valores que monitorea, para que posteriormente el usuario 110118 elija uno de ellos desplegando asi en pantalla la informacion y lecturas obtenidas(ableson, 2012). La aplicación sera ejecutada en un Smartphone marca LG modelo E612f que trabaja con Android en la version Ice Cream Sandwich. Para crear la aplicación se seguiran los siguientes pasos: 1. Se creara un nuevo proyecto Android en el entorno de desarrollo Eclipse. Como se explico en el capitulo anterior se definiran el nombre del proyecto Sensor Explorer y de su paquete, el SDK minimo, objetivo y para compilacion con el que se trabajara. Tambien se asignara el icono de aplicación, nombre de la actividad y layout principales. 2. Una vez creado el nuevo proyecto, el primer paso ser implementar una interfaz grafica (GUI) basica con un par de espacios en donde se desplegara la informacion contextual y un menu de selección de tipo Spinner que permita al usuario elegir entre los distintos sensores que se encuentren en el dispositivo. El diseño incluira un LinearLayout con cuatro widgets: tres TextViews y un Spinner. Cada elemento cuenta con atributos que determinan los recursos que consume cada control en pantalla como los layout_width y layout_height. Los valores wrap_content establecen que el elemento se expandira para acomodar el contenido. El valor fill_parent determina que el widget ocupara todo el espacio disponible del elemento que lo contiene. Finalmente el atributo android:text determina el texto asignado por el usuario que se desplegara en pantalla y el android:id hace que el sistema de compilacion asigne un identificador unico a cada elemento con los cuales se podran referenciar y ponerles funciones desde el codigo Java. El codigo queda de la siguiente manera(ableson, 2012) : <LinearLayout xmlns: android ="http://schemas. android.com/apk/res/ android 111119 xmlns:tools="http://schemas. android.com/tools" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" > <TextView android :layout_width="fill_parent" android :layout_height="wrap_content" android /> <Spinner android :layout_width="wrap_content" android :layout_height="wrap_content" android /> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="sensor Info..." /> 112120 <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="sensor Output..." android /> </LinearLayout> 3. El siguiente paso es gestionar los elementos que integran la interfaz gráfica y establecer las funciones de la aplicación para que se realice la interacción con los sensores. Esto se implementara en el archivo SensorExplorer.java, el código queda de la siguiente manera (Ableson, 2012): package com.android.sensorexplorer; import android.os.bundle; import android.app.activity; import android.view.menu; import android.util.log; import java.util.list; import java.util.arraylist; import java.util.iterator; import android.view.view; 113121 import android.widget.adapterview; import android.widget.spinner; import android.widget.textview; import android.widget.arrayadapter; import android.widget.adapterview.onitemselectedlistener; import android.hardware.sensormanager; import android.hardware.sensoreventlistener; import android.hardware.sensorevent; import android.hardware.sensor; public class SensorExplorer extends Activity implements OnItemSelectedListener, SensorEventListener { final String tag="sensorexplorer"; private Spinner sensorchoices=null; private TextView sensorinfo=null; private TextView sensoroutput=null; private SensorManager smanager=null; private List<Sensor> availablesensors=null; private ArrayList<Integer> SensorTypes=null; private ArrayAdapter<String> sensoradapter=null; 114122 @Override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); sensorinfo=(textview) findviewbyid(r.id.sensorinfo); sensoroutput=(textview) findviewbyid(r.id.sensoroutput); sensorchoices=(spinner) findviewbyid(r.id.sensoroptions); sensorchoices.setprompt("elija un sensor"); smanager=(sensormanager) getsystemservice(sensor_service); SensorTypes = new ArrayList <Integer>(); availablesensors = smanager.getsensorlist(sensor.type_all); Iterator<Sensor> itsensors = availablesensors.iterator(); sensoradapter = new ArrayAdapter<String>(this, android.r.layout.simple_spinner_item); sensoradapter.setdropdownviewresource(android.r.layout.simple_spinne r_dropdown_item); while (itsensors.hasnext()){ Sensor s = itsensors.next(); "]"); Log.i(tag,"Found Sensor ["+ s.getname() +"] of type ["+ s.gettype()+ 115123 sensoradapter.add(s.getname()); SensorTypes.add(new Integer(s.getType())); } sensorchoices.setadapter(sensoradapter); sensorchoices.setonitemselectedlistener(this); sensorchoices.setselection(0); } public void onitemselected(adapterview<?>parent,view view,int position,long id){ Log.i(tag,"onItemSelected [" + position + "]"); String s = (String) parent.getitematposition(position); Log.i(tag,"item is [" + s + "]"); Log.i(tag,"type is ["+ SensorTypes.get(position) +"]"); setupsensor(sensortypes.get(position)); } public void onnothingselected(adapterview<?>parent){ Log.i(tag,"Nothing Selected"); } public void setupsensor(int sensortype){ Log.i(tag,"SetupSensor [" + sensortype + "]"); smanager.unregisterlistener(this); 116124 Sensor chosensensor = smanager.getdefaultsensor(sensortype); smanager.registerlistener(this,chosensensor, SensorManager.SENSOR_DELAY_NORMAL); StringBuilder sb = new StringBuilder(); sb.append(chosensensor.getname()+"\n"); sb.append("power draw: " + chosensensor.getpower() + "ma\n"); sb.append("resolution: "+chosensensor.getresolution() + "\n"); "\n"); sb.append("max. Range" + chosensensor.getmaximumrange() + sensorinfo.settext(sb.tostring()); } public void onsensorchanged(sensorevent event){ StringBuilder sb = new StringBuilder(); switch(event.sensor.gettype()){ case Sensor.TYPE_MAGNETIC_FIELD: sb.append("accuracy: " + event.accuracy + "\n"); "]\n"); "]\n"); "]\n"); sb.append("value 1 [" + Math.toDegrees(event.values[0]) + sb.append("value 2 [" + Math.toDegrees(event.values[1]) + sb.append("value 3 [" + Math.toDegrees(event.values[2]) + 117125 break; default: sb.append("accuracy: " + event.accuracy + "\n"); sb.append("value 1[" + event.values[0] + "]\n"); sb.append("value 2[" + event.values[1] + "]\n"); sb.append("value 3[" + event.values[2] + "]\n"); break; } sensoroutput.settext(sb.tostring()); } public void onaccuracychanged(sensor s, int accuracy){ public boolean oncreateoptionsmenu(menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getmenuinflater().inflate(r.menu.sensor_explorer, menu); return true; } } En el primer bloque se muestran los imports que necesitara la clase principal para poder funcionar con los elementos gráficos de la GUI, lógicos 118126 que se establecerán en la clase y físicos (los sensores del dispositivo). Posteriormente se declara la clase principal SensorExplorer a la cual se le extiende la clase Activity (la cual supone un formulario o pantalla en la interfaz del usuario de la aplicación), además se implementan dos interfaces más: OnItemSelectedListener (permite a la aplicación responder ante los cambios realizados por el usuario al utilizar el menú de selección de sensores en la interfaz gráfica) y SensorEventListener (Capta los eventos realizados o relacionados con los sensores del dispositivo) (Ableson, 2012). Luego se declaran las variables miembro de los tres widgets, que se actualizan durante el tiempo de ejecución (una para el menú de selección de sensor y dos para los datos de sensores). Los TextView sensorinfo para desplegar la información de los sensores y sensoroutput para mostrar las lecturas. smanager se usa para interactuar con el SENSOR_SERVICE y gestionar los sensores disponibles. El siguiente paso será configurar la GUI mediante el método OnCreate, las primeras líneas de código son establecidas por el SDK. Después se utiliza el método findviewbyid el cual permite localizar variables miembros y vincularlas a la interfaz gráfica, el listado obtiene las referencias del menú de selección (Spinner) y los TextView. Se configura el smanager para obtener el SENSOR_SERVICE del SDK y se invoca el método getsensorlist(sensor.typeall) para enumerar todos los sensores disponibles de todos los tipos. Mediante un ArrayAdapter llamado sensoradapter se despliegan en el menú de selección los datos de cada tipo de sensor detectado (Ableson, 2012). Una vez obtenida la lista de sensores, se configura el control de selección de sensor pasando la instancia de ArrayAdapter con los valores a mostrar, asignando esta clase como listener cuando se selecciona un elemento. Cada vez que se selecciona un sensor se invoca el método OnItemSelected, la mayoría de la implementación de este método lo único 119127 que hace es añadir información al archivo de registro para depurarla y mostrarla. El método onnothingselected es un NO-OP que se necesita para que el compilador de Java cumpla los requisitos de la interfaz OnItemSelectedListener. El método setupsensor es esencial para el funcionamiento de la aplicación ya que es en donde se realiza la interacción con los sensores. Realiza diversas acciones como llamar al unregisterlistener en SensorManager para dejar de escuchar los eventos de los sensores ya que puede haber otros eventos que estén siendo registrados y para el funcionamiento de esta aplicación solo se quiere un sensor a la vez. Obtiene una referencia al sensor seleccionado (chosensensor) mediante una llamada a getdefaultsensor pasándole el tipo de sensor. Establece la velocidad de interacción SENSOR_DELAY_NORMAL con el sensor mediante el registro de la instancia de la clase listener para el sensor escogido. Y finalmente recopila la información del sensor como su nombre de fábrica, tasa de consumo, resolución y rango, esta información se muestra en el TextView sensorinfo (Ableson, 2012). Después se implementan los métodos asociados con la interfaz SensorEventListener. El método onsensorchanged recibe una instancia de SensorEvent, este método construye una cadena que incluye la precisión del sensor y cada uno de los tres valores disponibles de la clase SensorEvent. Los datos son desplegados mediante el TextView sensoroutput los cuales van variando de acuerdo al monitoreo de los nuevos datos que lleguen desde el sensor seleccionado. El método onaccuracychaged no realiza acciones en esta aplicación pero sirve en caso de que sea necesaria la precisión de un sensor por arriba de un rango determinado (Ableson, 2012). 120128 Por último se declara el método onstop el cual mediante un unregisteredlistener detiene el registro de los eventos recibidos de los sensores cuando se termina de utilizar la aplicación. 4. Una vez terminado el desarrollo de la aplicación, como se muestra en la Figura 4.1, se ejecuta en el dispositivo mediante el entorno de desarrollo siguiendo el procedimiento descrito en el capítulo de programación en Android. La aplicación no se puede probar en el emulador ya que no tiene soporte para sensores. Figura 4.1 Selección de Smartphone Fuente: Elaboración propia A continuación se observan las pantallas de la aplicación funcionando en el dispositivo designado la cual obtendrá la lista de los sensores disponibles así como también de los valores e información obtenida mediante ellos. 121129 Figura 4.2 Sensores disponibles Fuente: Elaboración propia Figura 4.3 Acelerómetro Fuente: Elaboración propia Figura 4.4 Sensor de campos magnéticos Fuente: Elaboración propia 122130 Como se observa en las Figura 4.2 el Smartphone en el que se ejecutó la aplicación cuenta con 5 sensores: acelerómetro, de campo magnético, de orientación, de proximidad y de rotación. Figura 4.5 Sensor de orientación Fuente: Elaboración propia Figura 4.6 Sensor de proximidad Fuente: Elaboración propia Figura 4.7 Sensor de rotación Fuente: Elaboración propia 123 Mostrar más
Aprende a Programar Videojuegos con Android. Carmen María Ortega Gómez. Alejandro Carmona Martos. http://www.adminso.es
Aprende a Programar Videojuegos con Android Carmen María Ortega Gómez Alejandro Carmona Martos http:// Aprende a Programar videojuegos con Android Carmen María Ortega Gómez Alejandro Carmona Martos Tanto Más detalles 1.. Plataformas Móviles... 3. 1.1. ios y Apple... 4 1.2. Android y Google... 12 1.3. BlackBerry y RIM... 26 1.4. MeeGo y Nokia...
Índice 1.. Plataformas Móviles... 3 1.1. ios y Apple... 4 1.2. Android y Google... 12 1.3. BlackBerry y RIM... 26 1.4. MeeGo y Nokia... 29 2. ios vs Android... 32 3. Bibliografía... 35 EOI Escuela de Organización Más detalles UNIVERSIDAD TÉCNICA DEL NORTE
UNIVERSIDAD VERACRUZANA FACULTAD DE CONTADURÍA Y ADMINISTRACIÓN Calidad de Servicio para Sistemas Operativos Móviles: Caso Android. MONOGRAFIA Para obtener el título de: LICENCIADO EN SISTEMAS COMPUTACIONALES Más detalles UNIVERSIDAD JAUME I INGENIERÍA TÉCNICA EN INFORMÁTICA DE SISTEMAS CURSO 2010-2011 PROYECTOS INFORMÁTICOS DE SISTEMAS (IS31)
UNIVERSIDAD JAUME I INGENIERÍA TÉCNICA EN INFORMÁTICA DE SISTEMAS CURSO 2010-2011 PROYECTOS INFORMÁTICOS DE SISTEMAS (IS31) PROGRAMACIÓN CON LAS APIS DE FLICKR Y YOUTUBE EN DISPOSITIVOS ANDROID Proyecto Más detalles SISTEMA DE LOCALIZACIÓN DE TAXI BASADO EN ANDROID, PHP Y MYSQL
UNIVERSIDAD POLITÉCNICA DE CARTAGENA Departamento TEORÍA DE LA SEÑAL Y LAS COMUNICACIONES PROYECTO FIN DE CARERA INGENIERÍA TÉCNICA DE TELECOMUNICACIÓN SISTEMA DE LOCALIZACIÓN DE TAXI BASADO EN ANDROID, Más detalles UNIVERSIDAD VERACRUZANA M O N O G R A F Í A. Licenciado en Sistemas. Computacionales Administrativos. Jesús Vitelio Alejandre Lagunes
UNIVERSIDAD VERACRUZANA Facultad de Contaduría y Administración Seguridad en dispositivos móviles M O N O G R A F Í A Para obtener el Título de: Licenciado en Sistemas Computacionales Administrativos Presenta: Más detalles ESCUELA POLITÉCNICA NACIONAL
ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA DESARROLLO DE UNA APLICACIÓN QUE PERMITA LA CAPTURA, ALMACENAMIENTO, REPRODUCCIÓN, ADMINISTRACIÓN Y ENVÍO DE ARCHIVOS DE VIDEO, Más detalles Licenciado en Sistemas Computacionales Administrativos. Grecia Gonzalez Melgarejo
UNIVERSIDAD VERACRUZANA Facultad de Contaduría y Administración Software de desarrollo para aplicaciones móviles M O N O G R A F Í A Para obtener el Título de: Licenciado en Sistemas Computacionales Administrativos Más detalles Aplicación para dispositivos móviles Android: Guía de los edificios de la Universidad Politécnica de Cartagena
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA DE TELECOMUNICACIÓN UNIVERSIDAD POLITÉCNICA DE CARTAGENA Proyecto Fin de Carrera Aplicación para dispositivos móviles Android: Guía de los edificios de la Universidad Más detalles INGENIERÍA TÉCNICA EN INFORMÁTICA DE SISTEMAS DIARIO DE VIAJE. Realizado por ANTONIO GUILLÉN ÁVILA RAFAEL GARCÍA NARANJO
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA INFORMÁTICA INGENIERÍA TÉCNICA EN INFORMÁTICA DE SISTEMAS DIARIO DE VIAJE Realizado por ANTONIO GUILLÉN ÁVILA RAFAEL GARCÍA NARANJO Dirigido por Dr. JOSÉ RAMÓN PORTILLO Más detalles Análisis de tecnologías para aplicaciones en dispositivos móviles
1 Análisis de tecnologías para aplicaciones en dispositivos móviles Objetivos del capítulo 44 Describir la evolución, características y limitaciones de los dispositivos para el desarrollo de aplicaciones Más detalles DISEÑO E IMPLEMENTACIÓN DE UNA APLICACIÓN DISTRIBUIDA DE GESTIÓN DE INVENTARIO PARA DISPOSITIVOS MÓVILES
PROYECTO FIN DE CARRERA DISEÑO E IMPLEMENTACIÓN DE UNA APLICACIÓN DISTRIBUIDA DE GESTIÓN DE INVENTARIO PARA DISPOSITIVOS MÓVILES Autor: Víctor Pacheco Martín Tutor: Francisco Javier García Blas Leganés, Más detalles Entornos de programación móviles
Entornos de programación móviles Julián David Morillo Pozo PID_00176754 CC-BY-SA PID_00176754 Entornos de programación móviles Los textos e imágenes publicados en esta obra están sujetos excepto que se Más detalles Android?...De qué me hablan
Android?...De qué me hablan Android?... Are you talking about* 1 2 Carlos Alberto Vanegas** Fecha de recepción: junio de 2013 Fecha de aprobación: agosto de 2013 Resumen Actualmente el uso de dispositivos Más detalles FRAMEWORKS Y HERRAMIENTAS PARA EL DESARROLLO DE APLICACIONES ORIENTADAS A DISPOSITIVOS MOVILES
FRAMEWORKS Y HERRAMIENTAS PARA EL DESARROLLO DE APLICACIONES ORIENTADAS A DISPOSITIVOS MOVILES JOHANNA FERNANDA RENGIFO BRIÑEZ CÓDIGO: 42163675 CARLOS ALBERTO BETANCOURT PÉREZ CÓDIGO: 10017047 UNIVERSIDAD Más detalles Implementación de una base de datos para el control de acceso al LICIT utilizando un servidor y una aplicación Android.
Universidad de Costa Rica Facultad de Ingeniería Escuela de Ingeniería Eléctrica Implementación de una base de datos para el control de acceso al LICIT utilizando un servidor y una aplicación Android. Más detalles UNIVERSIDAD DE CUENCA RESUMEN
RESUMEN El uso masivo de los dispositivos móviles por parte de jóvenes estudiantes que cursan una carrera universitaria en la Facultad de Ingeniería de la Universidad de Cuenca, los convierte en una opción Más detalles Aplicación de Mensajería instantánea Android
UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE INFORMÁTICA GRADO EN INGENIERÍA INFORMÁTICA TECNOLOGÍA ESPECÍFICA DE INGENIERÍA DEL SOFTWARE TRABAJO FIN DE GRADO Aplicación de Mensajería instantánea Más detalles MAESTRÍA DE DISEÑO MULTIMEDIA
UNIVERSIDAD DEL AZUAY MAESTRÍA DE DISEÑO MULTIMEDIA APLICACIÓN INTERACTIVA PARA GESTIÓN DE ÓRDENES Y PEDIDOS EN RESTAURANTES TESIS PREVIA A LA OBTENCIÓN DEL TÍTULO EN LA MAESTRÍA DE DISEÑO MULTIMEDIA AUTOR: Más detalles FENG MOBILE. Acceso a Feng Office para dispositivos móviles. Annia Díaz - Vicente Castelló
FENG MOBILE Acceso a Feng Office para dispositivos móviles Annia Díaz - Vicente Castelló Instituto de Computación, Facultad de Ingeniería, Universidad de la República, Montevideo, Uruguay 2012 Tutor Eduardo Más detalles Barcelona, 18 de Enero de 2011
Memoria APLICACIÓN DE GESTION Y SEGUIMIENTO VIA GPS SOBRE DISPOSITIVO MOVIL I PLATAFORMA ANDROID PFC presentado para optar al título de Ingeniero Técnico Industrial especialidad Electrónica Industrial Más detalles DESARROLLO DE UNA APLICACIÓN MÓVIL ANDROID PARA CONTROL REMOTO DE UN SERVICIO WEB GRADO EN INGENIERÍA DE SISTEMAS AUDIOVISUALES TRABAJO FIN DE GRADO
UNIVERSIDAD CARLOS III DE MADRID ESCUELA POLITÉCNICA SUPERIOR GRADO EN INGENIERÍA DE SISTEMAS AUDIOVISUALES TRABAJO FIN DE GRADO PARA CONTROL REMOTO DE UN SERVICIO WEB Autor: María Lozano Pérez Tutor: Más detalles Diseño e implementación de una aplicación Android para recordatorios
Departamento de Informática PROYECTO FIN DE CARRERA Diseño e implementación de una aplicación Android para recordatorios Autor: Óscar Magro Segura Tutor: Alejandro Calderón Mateos Leganés, 3 de Octubre Más detalles INGENIERÍA INFORMÁTICA RECURSOS ANDROID BASADOS EN GEOLOCALIZACIÓN. Realizado por Francisco Javier Martín Otero
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA INFORMÁTICA INGENIERÍA INFORMÁTICA RECURSOS ANDROID BASADOS EN GEOLOCALIZACIÓN Realizado por Francisco Javier Martín Otero Dirigido por José Ramón Portillo Fernández Más detalles UNIVERSIDAD INTERNACIONAL DEL ECUADOR EXTENSIÓN GUAYAQUIL
UNIVERSIDAD INTERNACIONAL DEL ECUADOR EXTENSIÓN GUAYAQUIL Facultad de Ciencias y Tecnologías Aplicadas. Escuela de Informática y Multimedia. TESIS DE GRADO PARA LA OBTENCIÓN DEL TÍTULO DE INGENIERO EN Más detalles SISTEMAS OPERATIVOS MOVILES: FUNCIONALIDADES, EFECTIVIDAD Y APLICACIONES UTILES EN COLOMBIA.
SISTEMAS OPERATIVOS MOVILES: FUNCIONALIDADES, EFECTIVIDAD Y APLICACIONES UTILES EN COLOMBIA. SANLY APONTE GOMEZ CARLOS DAVILA RAMIREZ UNIVERSIDAD EAN FACULTAD DE INGENIERIA DE SISTEMAS TEKHLAR BOGOTA 2011 Más detalles DESARROLLO DE APLICACIONES PARA WINDOWS PHONE
Departamento de Telemática PROYECTO FIN DE CARRERA DESARROLLO DE APLICACIONES PARA WINDOWS PHONE Autor: Francisco José Castellanos de la Torre Tutor: Estrella María García Lozano Leganés, julio de 2013 Más detalles FACULTAD DE ARTES Y HUMANIDADES CARRERA DE INGENIERÍA EN SISTEMAS MULTIMEDIA TEMA: APLICACIÓN: 3T Terminal de transporte Terrestre
FACULTAD DE ARTES Y HUMANIDADES CARRERA DE INGENIERÍA EN SISTEMAS MULTIMEDIA TEMA: APLICACIÓN: 3T Terminal de transporte Terrestre Previo a la obtención del título de INGENIERO EN SISTEMAS MULTIMEDIA ELABORADO Más detalles Sistema de localización de bajo consumo para smartphones Android
Ingeniería técnica en informática de sistemas Sistema de localización de bajo consumo para smartphones Android Presentado por: Enrique Morán Valero Dirigido por: Raúl Montoliu Castellón de la Plana, Septiembre Más detalles 2016 © DocPlayer.es Política de privacidad | Condiciones del servicio | Feedback

References: resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución