UNIVERSIDAD TECNOLÓGICA EQUINOCCIAL
FACULTAD DE CIENCIAS DE LA INGENIERÍA
CARRERA DE INGENIERÍA INFORMÁTICA Y CIENCIAS
DE LA COMPUTACIÓN
APLICACIÓN PARA LA AUTOCONFIGURACIÓN DE
DISPOSITIVOS MÓVILES ANDROID BASADA EN LA
INFORMACIÓN DE CONTEXTO.
TRABAJO PREVIO A LA OBTENCIÓN DEL TÍTULO
DE INGENIERA EN INFORMÁTICA Y CIENCIAS DE LA COMPUTACIÓN
ANDREA FERNANDA LOAYZA VÁSQUEZ
DIRECTOR: Dr. DIEGO ORDOÑEZ CAMACHO
DECLARACIÓN
Yo ANDREA FERNANDA LOAYZA VASQUEZ, declaro que el trabajo aquí descrito es de mi autoría; que no ha sido previamente presentado para ningún grado o calificación profesional; y, que he consultado las referencias bibliográficas que se incluyen en este documento.
La Universidad Tecnológica Equinoccial puede hacer uso de los derechos correspondientes a este trabajo, según lo establecido por la Ley de Propiedad Intelectual, por su Reglamento y por la normativa institucional vigente.
_________________________ Andrea Loayza
CERTIFICACIÓN
Certifico que el presente trabajo que lleva por título Aplicación para la autoconfiguración de dispositivos móviles Android basada en la información de contexto, que, para aspirar al título de Ingeniera en Informática y Ciencias de la Computación fue desarrollado por Andrea Loayza, bajo mi dirección y supervisión, en la Facultad de Ciencias de la Ingeniería; y cumple con las condiciones requeridas por el reglamento de Trabajos de Titulación artículos 18 y 25.
___________________
Dr. Diego Ordoñez Camacho
DIRECTOR DEL TRABAJO
i
ÍNDICE DE CONTENIDOS
PÁGINA
RESUMEN vi
ABSTRACT vii
1 INTRODUCCIÓN 1
2 MARCO TEÓRICO 4
2.1 ¿Qué es un dispositivo móvil? 4 2.2 Tipos de dispositivos móviles 5 2.3 Sistemas operativos para móviles 6 2.4 La Arquitectura de Android 11 2.5 Herramientas de Desarrollo de Android 13 2.6 Sensores y tecnologías en los Smartphones 14 2.7 ¿Qué es el contexto? 16 2.8 ¿Qué es context-awareness? 17 2.9 ¿Qué es la computación ubicua? 18 2.10 Herramientas y librerías para desarrollo de aplicaciones context
aware 19
2.11 Estudios sobre aplicaciones context aware 20 2.12 Aplicaciones en el mercado para automatizar tareas en el
dispositivo móvil 25
2.13 Metodología Scrum 27
3 METODOLOGÍA 31
3.1 Análisis de Requerimientos 31 3.2 Diseño y Desarrollo 32
3.3 Implementación 32
3.4 Pruebas 32
ii 4.1 Análisis de requisitos 33
4.1.1 Requisitos funcionales 34 4.1.2 Requisitos no funcionales 38 4.1.3 Requisitos de Hardware 38 4.1.4 Requisitos de Software 39 4.2 Diseño y desarrollo de la aplicación 39 4.2.1 Diagrama del flujo de navegación 46 4.2.2 Análisis de los componentes de desarrollo 49
4.3 Implementación 54
4.4 Pruebas 57
4.5 Manejo de la aplicación 62
5 CONCLUSIONES Y RECOMENDACIONES 73
5.1 Conclusiones 73
5.2 Recomendaciones 74
iii
ÍNDICE DE FIGURAS
PÁGINA
Figura 1. Caso de uso del dispositivo móvil y el desencadenante 34
Figura 2. Caso de uso para desencadenar la acción con el tiempo 35
Figura 3. Caso de uso para desencadenar la acción con el sonido 35 Figura 4. Caso de uso para desencadenar la acción con la localización 36
Figura 5. Caso de uso para desencadenar la acción con el movimiento 36 Figura 6. Caso de uso para desencadenar la acción con la proximidad 37 Figura 7. Caso de uso para desencadenar la acción con la batería. 38 Figura 8. Estructura de la carpeta src 40
Figura 9. Distribución de las clases 41
Figura 10. Diagrama de la clase Batería 42 Figura 11. Diagrama de la clase Proximidad 43 Figura 12. Diagrama de la clase Localización 43
Figura 13. Diagrama de la clase Sonido 44
Figura 14. Diagrama de la clase Movimiento 45
Figura 15. Diagrama de la clase Tiempo 46
Figura 16. Flujo de navegación de localización, movimiento, batería 47
Figura 17. Flujo de navegación de tiempo, sonido y proximidad 48
Figura 18. Comandos telnet para el nivel de la batería 57 Figura 19. Ingreso de coordenadas en el simulador de eclipse 58 Figura 20. Comandos para cambiar la fecha y hora en el emulador 59
Figura 21. Pantalla principal de la aplicación 62
Figura 22. Pantalla del botón batería 63
Figura 23. Pantalla Notificación carga 63 Figura 24. Pantalla para apagar Wi-fi 64
Figura 25. Pantalla para reducir brillo 65
iv
Figura 27. Pantalla botón enviar mensaje 66
Figura 28. Pantalla botón encender wi-fi 67
Figura 29. Pantalla botón movimiento 68
Figura 30. Pantalla para escoger la aplicación 68
Figura 31. Pantalla botón proximidad 69
Figura 32. Pantalla botón tiempo 69
Figura 33. Pantalla botón recordar evento 70
Figura 34. Pantalla botón enviar mensaje 71
Figura 35. Pantalla botón teléfono silencioso 71
v
ÍNDICE DE TABLAS
PÁGINA
Tabla 1. Definición de las tareas a automatizarse 33
Tabla 2. Sensores y constantes 53
Tabla 3. Prueba con la localización 59
Tabla 4. Prueba con el movimiento 60
Tabla 5. Prueba con la batería 60
Tabla 6. Prueba con el sonido 61
vi
RESUMEN
Este trabajo tiene como finalidad el desarrollo de una aplicación sensible al contexto, que permita configurar el comportamiento del teléfono para que realice ciertas actividades como subir el volumen del timbre, recordar eventos, abrir aplicaciones con el movimiento, entre otras.
El objetivo es el de facilitar el uso de un dispositivo móvil configurándolo de tal forma que parezca que tiene un comportamiento inteligente, adaptándose a las condiciones del entorno y preferencias del usuario.
vii
ABSTRACT
The purpose of this work is the development of a context-aware application that allows configuring the behavior of the phone to perform certain activities such as raising the ringer volume, recall events, open applications with movement, among others.
The objective is to facilitate the use of a mobile device by configuring it in such a way that it appears as if it has an intelligent behavior, adapting itself to environment conditions and user preferences.
1
1 INTRODUCCIÓN
Los teléfonos móviles en la época actual son una necesidad. Se han convertido en parte de la vida diaria de las personas, porque permiten la comunicación en cualquier lugar del mundo. Según el Ministerio de Telecomunicaciones MINTEL y el Instituto Nacional de Estadísticas y Censos, en el Ecuador el 78,8 % de las personas posee telefonía celular. (Instituto Nacional de Estadísticas y Censos, 2012).
Actualmente el uso de Smartphones o teléfonos inteligentes ha tenido un gran crecimiento, ya que se ha incrementado el número de usuarios que utilizan estos dispositivos. “El 8,4% de los ecuatorianos (522.640) utiliza este dispositivo que, entre otros beneficios, facilita el acceso a Internet móvil y a redes sociales”. (Córdova, 2012)
Teniendo en cuenta el uso masivo de celulares, es importante tomar en consideración las necesidades que tienen los usuarios y la forma en cómo interactúan con las aplicaciones que existen en el mercado, la funcionalidad y servicios que les ofrecen para poder crear una aplicación que se adapte a las necesidades de cada uno y ofrezca una mejor experiencia de uso.
Diariamente las personas realizan determinadas rutinas y procedimientos con su celular como por ejemplo ponerlo en silencio, reducir el volumen multimedia o desactivar el Wi-Fi dependiendo del lugar donde se encuentren. El realizar estos procedimientos se puede convertir en un proceso muy repetitivo y cuando no se lo realiza puede provocar baja de batería del teléfono o que se active en ocasiones inapropiadas
Se desea proporcionar a los usuarios mejores herramientas para gestionar el estado de sus teléfonos, herramientas que requieran menos de su atención y puedan hacer más cosas de forma automática.
2 Según Uchiyamada (2007) en su artículo “Context Aware”, las aplicaciones que son dependientes del contexto se han ido desarrollando desde 1992. Una de las primeras aplicaciones fue la aplicación de oficina llamada Active-Badge que era un sistema de localización en entorno de oficina. (AT&T Laboratories Cambridge, 2005)
Se ha buscado la manera de que una aplicación pueda determinar las circunstancias del usuario o del contexto, para que esta información pueda ser utilizada y así cambiar el comportamiento del teléfono en formas más útiles. Un teléfono consciente del contexto podría cambiar automáticamente el perfil cuando el usuario entra en un restaurante, se sienta en el asiento del conductor de un auto, etc. En el caso de la gestión de teléfono, casi toda la complejidad radica en la detección y determinación de contexto. Una vez que se conoce el contexto, unas reglas muy simples pueden producir un comportamiento que parece inteligente. (DeVaul, 2012)
La sensibilidad al contexto requiere la detección y la deducción para determinar el contexto del usuario. Tanto los sensores y las técnicas de deducción deben ser elegidas cuidadosamente con el fin de hacer el mejor uso de la tecnología existente y la limitada potencia de cálculo disponible en un dispositivo portátil. El sistema Android posee una gran variedad de aplicaciones que se basan en el contexto como es la aplicación “Smartactions” que permite automatizar un gran número de tareas estableciendo condiciones en el celular. (Motorola Mobility LLC, 2013) Otra aplicación es “Tasker” de automatización de tareas, que permite hacerlo con 200 tareas. (Palm OS, 2009)
Muchos celulares se pueden personalizar para realizar automáticamente tareas, lo que ahorra tiempo y brinda la libertad para disfrutar de otras actividades.
3 El uso creciente de dispositivos móviles ha provocado la realización de nuevas aplicaciones que los usuarios usarán para su beneficio.
La posibilidad de automatizar acciones en el dispositivo móvil permite que cada vez sea más fácil el uso de estos dispositivos inteligentes, ya que permiten recordar eventos y también la posibilidad de que se realicen ciertas tareas automáticamente.
Si se analiza las aplicaciones existentes en el mercado como por ejemplo en la tienda de Android o Apple Store y lo que ofrecen al usuario se puede apreciar que no existe una aplicación que no tenga costo, que sea fácil de utilizar y que ofrezca todos los beneficios y funcionalidades de utilización que se desearía. Muchas de las aplicaciones tienen diferentes formas de personalización y las interfaces son diferentes por lo que se desea crear una aplicación con una interfaz intuitiva y la mayor cantidad de opciones de configuración.
El objetivo de este trabajo es el de desarrollar una aplicación que permita la autoconfiguración de los Smartphones Android, estableciendo una serie de condiciones en donde se pueda elegir varios tipos de contexto como la hora, el día o la ubicación tomando en cuenta que tarea desea realizar el usuario y que quiere conseguir, para de esta forma poder hacer uso de los sensores del teléfono y puedan recoger información del entorno como es la señal Wifi o Bluetooth. Se va utilizar por ejemplo el micrófono del teléfono para recoger el ruido de la habitación, el sensor de luz para el ahorro de energía, el GPS para la localización, entre otros.
Para lograr el desarrollo de la aplicación se debe realizar un análisis de las características de los dispositivos móviles actuales, capacidades y limitaciones de los mismos, que permitan su interacción con el entorno.
4
2 MARCO TEÓRICO
2.1 ¿Qué es un dispositivo móvil?
Un dispositivo móvil es un aparato de pequeño tamaño también conocido como handheld. Son pequeñas computadoras de mano que poseen capacidades de procesamiento, tienen memoria limitada y que se caracterizan por su facilidad de uso.
Algunos tipos de dispositivos móviles son los teléfonos inteligentes, las agendas electrónicas de bolsillo, los reproductores de audio portátil, las videoconsolas portátiles, entre otros.
Se utilizan los dispositivos móviles diariamente cuando se usan los celulares para la comunicación con amigos, los PDAs para manejar la agenda o el Ipod para escuchar música y jugar juegos.
En el 2005 debido a la gran cantidad de funcionalidad y características que tiene un dispositivo móvil T38 y DuPont Global Mobility Innovation Team propusieron la siguiente clasificación de los mismos:
Dispositivo móvil de datos limitado (Limited Data Mobile Device): dispositivos que tienen una pantalla pequeña, principalmente basada en pantalla de tipo texto con servicios de datos generalmente limitados a SMS y acceso WAP. Un ejemplo de este tipo de dispositivos son los teléfonos móviles.
Dispositivo móvil de datos básico (Basic Data Mobile Device): dispositivos que tienen una pantalla de mediano tamaño, (entre 30 x 120 y 240 x 240 píxeles), menú o navegación basada en íconos por medio de un cursor, y que ofrecen correo electrónico, lista de direcciones, SMS, y un navegador web básico. Un ejemplo de este tipo de dispositivos son los BlackBerry y los teléfonos inteligentes.
5 tipo stylus, y que ofrecen las mismas características que el dispositivo móvil de datos básicos más aplicaciones nativas como aplicaciones de Microsoft Office Mobile (Word, Excel, PowerPoint) y aplicaciones corporativas usuales, en versión móvil, como Sap, portales intranet, etc.
2.2 Tipos de dispositivos móviles
Reproductores Multimedia: Son dispositivos que permiten reproducir sonido e imágenes en diferentes formatos y se caracterizan por ser de pequeño tamaño. Un ejemplo de este tipo de dispositivos son los reproductores mp3.
Consolas Portátiles: Son dispositivos electrónicos que proporcionan al usuario una plataforma de juego. Un ejemplo de este tipo de dispositivos es el PlayStation Portable de Sony.
PDAs (del inglés Personal Digital Assistant (asistente digital personal): Son organizadores personales o agendas electrónicas de bolsillo diseñadas con un sistema de reconocimiento de escritura.
Estos dispositivos, pueden realizar muchas de las funciones que hace una computadora de escritorio (ver películas, crear documentos, juegos, correo electrónico, navegar por Internet, reproducir archivos de audio, etc.) pero con la ventaja de ser portátil.
Tablet: Es un tipo de computador portátil de mayor tamaño que un PDA o un teléfono inteligente integrado con una pantalla táctil.
La Tablet funciona como una computadora pero orientada mas a la lectura de contenidos y la navegación web.
Teléfonos móviles: El teléfono móvil es un dispositivo inalámbrico electrónico basado en la tecnología de ondas de radio, que tiene la misma funcionalidad que cualquier teléfono de línea fija.
6 gramos, a los actuales más compactos y con mayores prestaciones de servicio. (O’Regan , 2009)
“Smartphones” o teléfonos inteligentes: Un “smartphone” o teléfono inteligente es un dispositivo electrónico que funciona como un teléfono móvil con características similares a las de un ordenador personal.
Poseen pantallas táctiles, sistema operativo, conectividad a internet, cámara integrada, administración de contactos, etc.
Los smartphones representan un gran avance respecto a los teléfonos móviles tradicionales, su reducido tamaño conlleva limitaciones de hardware que los diferencian de las computadoras de escritorio. Entre las limitaciones se encuentran pantallas más pequeñas, menor capacidad de procesamiento, restricciones de memoria RAM (Random Access Memory), y la necesidad de adaptar el consumo de energía a la capacidad de una pequeña batería.
Debido a estas limitaciones, los desarrolladores deben tener presentes las características a la hora de desarrollar software para los mismos.
2.3 Sistemas operativos para móviles
Un Sistema Operativo (SO) es un conjunto de programas que provee una interfaz entre los usuarios de la computadora y los recursos de la computadora. (Gill P.S, 2006)
Un SO móvil es un sistema operativo que controla un dispositivo móvil. Los Sistemas Operativos móviles son bastante más simples que un sistema Windows o Linux de una PC y están más orientados a la conectividad inalámbrica, los formatos multimedia para móviles y las diferentes maneras de introducir información en ellos.
7
1.- iOS (anteriormente denominado iPhone OS) es un sistema operativo móvil de Apple. Originalmente desarrollado para el iPhone, siendo después usado en dispositivos como el iPod Touch, iPad. Apple, Inc. no permite la instalación de iOS en hardware de terceros.
Sobre este SO no se pueden instalar aplicaciones sin la supervisión de Apple; sin embargo, existen aplicaciones hechas por terceros que pueden instalarse extraoficialmente mediante jailbreak.
La última versión es IOS 6.0.1.
Características y especificaciones actuales:
Diseño del dispositivo: Interfaz de usuario intuitiva, basada en una pantalla multitáctil y un conjunto de componentes hardware internos (acelerómetros y giroscopios) que permiten interactuar con el S.O. realizando gestos comunes como mover el aparato para deshacer o rehacer, rotarlo para girar la imagen, deslizar el dedo para moverse por los diferente menús y aplicaciones, etc.
Una pantalla principal llamada “SpringBoard” donde están ubicados los iconos de las aplicaciones.
Almacenamiento: Base de datos SqLite
Conectividad: Soporte para videoconferencia.
Mensajería: Servicio de mensajes cortos, MMS, iMessage mensajería instantánea.
Navegador web: Navegador web Safari desarrollado por Apple Inc.
Soporte Multimedia: Soporta la mayoría de los formatos multimedia estándar.
Streaming: Posee soporte para streaming.
Soporte para hardware adicional: como cámara de fotos, de video, pantallas táctiles, GPS.
8
2.- BlackBerry OS.- es un sistema operativo móvil desarrollado por Research In Motion para sus dispositivos BlackBerry. El sistema permite multitarea y tiene soporte para diferentes métodos de entrada adoptados por RIM para su uso en computadoras de mano, particularmente la trackwheel, trackball, touchpad y pantallas táctiles.
Blackberry 7.1 es la última versión estable hasta el momento. Características y especificaciones actuales:
Conectividad: Soporte para Wifi.
Mensajería: Gestor de correo electrónico y agenda compatible con Microsoft Exchange Server, Lotus Notes y Novell GroupWise.
Navegador web: Navegador con tecnología WebKit.
Integración con redes sociales (facebook, twitter, myspace) y clientes de mensajería instantánea (blackberry Messenger y Windows Live)
Soporte para lectura de código de barras 1D/2D
Escrito en java, C++
3.- Symbian OS.- Symbian es un sistema operativo que fue producto de la alianza de varias empresas de telefonía móvil, entre las que se encuentran Nokia, Sony Mobile Communications, Psion, Samsung, Siemens, Arima, Benq, Fujitsu, Lenovo, LG, Motorola, Mitsubishi Electric, Panasonic, Sharp, etc. Sus orígenes provienen de su antepasado EPOC32, utilizado en PDA's y Handhelds de PSION.
El objetivo de Symbian fue crear un sistema operativo para terminales móviles que pudiera competir con el de Palm o el Windows Mobile 6.X de Microsoft y ahora Android de Google Inc, iOS de Apple Inc. y BlackBerry de RIM.
9 Los desarrolladores que obtienen la licencia correspondiente para trabajar con Symbian implementan sus propias interfaces de usuario y conjuntos de aplicaciones según las necesidades de sus propios dispositivos.
Características y especificaciones actuales:
Posibilidad de habilitar múltiples conexiones.
Soporte de cualquier tipo de hardware gracias a la implementación de la capa HCI (Host ControlIer Interface API).
Está basado en un micro kernel, es decir, una mínima porción del sistema tiene privilegios de kernel, el resto se ejecuta con privilegios de usuario, en modo de servidores.
Conectividad: Permite la conectividad con diferentes dispositivos a través de Bluetooth.
4.- Windows Phone.- Es un sistema operativo móvil desarrollado por Microsoft, como sucesor de la plataforma Windows Mobile.
El 29 de octubre de 2012 se lanzó al mercado Windows Phone 8 solo para nuevos dispositivos, debido a un cambio completo en el núcleo del sistema que lo hace incompatible con dispositivos basados en la versión anterior. Esta versión incluye nuevas funciones que de acuerdo a Microsoft lo harán competitivo con sistemas operativos como iOS de Apple o Android de Google. Características y especificaciones actuales:
Interfaz gráfica intuitiva, con ventanas vivas.
Pantalla táctil
Integración con redes sociales
Soporte para los formatos multimedia más comunes.
Soporte para Xbox Live
Conectividad: Bluetooth, Wi-Fi
Mensajería: SMS, MMS
10
Soporte para streaming.
Soporte para hardware adicional de terceros como cámara de fotos, de video, pantallas táctiles, GPS.
5.- Android.- Es un sistema operativo móvil basado en Linux, que junto con aplicaciones middleware está enfocado para ser utilizado en dispositivos móviles como teléfonos inteligentes, tabletas y otros dispositivos. Es desarrollado por la Open Handset Alliance, la cual es liderada por Google. Android tiene una gran comunidad de desarrolladores escribiendo aplicaciones para extender la funcionalidad de los dispositivos. Android Market es la tienda de aplicaciones en línea administrada por Google. Los programas están escritos en el lenguaje de programación Java.
Android posee una serie de características y cualidades entre las cuales están: Plataforma abierta: Es una plataforma de desarrollo libre basada en Linux de código abierto.
Portabilidad: Las aplicaciones finales son desarrolladas en Java lo que asegura que podrá ser ejecutado en dispositivos presentes y futuros.
Arquitectura basada en componentes inspirados en Internet: El diseño de la interfaz de usuario se hace en xml, lo que permite que la misma aplicación se ejecute en un netbook o en un móvil.
Alto nivel de seguridad: Los programas se encuentran aislados uno de otro gracias al concepto de ejecución dentro de una caja que incorpora la máquina virtual.
Alta calidad de imágenes y sonido: Animaciones inspiradas en Flash, gráficos en tres dimensiones basados en OpenGL.
Existen varias versiones del sistema operativo de Android que reciben el nombre de postres en inglés, la última versión es Android 4.2 Jelly Bean.
11
Diseño del dispositivo: Plataforma adaptable a pantallas más grandes, VGA, librería de gráficos 2D, librería de gráficos 3D basada en las especificaciones de la OpenGL ES 2.O.
Almacenamiento: Base de datos SQLite
Conectividad: Android soporta las siguientes tecnologías de conectividad: GSM/EDGE, IDEN, CDMA, EV-DO, UMTS, Bluetooth, Wi-Fi, LTE, and WiMAX.
Mensajería: SMS, MMS y la Android Cloud to Device Messaging Framework (C2DM)
Navegador web: El navegador web basado en Google Chrome.
Soporte de Java: El código Java se compila en el ejecutable Dalvik y corre en la Máquina Virtual Dalvik. Dalvik es máquina virtual especializada diseñada específicamente para Android y optimizada para dipositivos móviles que funcionan con batería y que tienen memoria y procesador limitados.
Soporte Multimedia: Soporta la mayoría de los formatos multimedia estándar.
Streaming: Posee soporte para streaming.
Soporte para hardware adicional como cámara de fotos, de video, pantallas táctiles, GPS.
Tethering: Soporte para tethering el cual permite al teléfono ser usado como un punto de acceso para permitir a un computador portátil usar la conexión 3G.
2.4 La Arquitectura de Android
La arquitectura interna de Android está formada por cuatro capas: Capa 1:
12 Capa 2:
Runtime de Android: Android incorpora un set de librerías que aportan la mayor parte de las funcionalidades disponibles en las librerías base del lenguaje de programación Java. La Máquina Virtual Dalvik está basada en registros, y corre clases compiladas por el compilador de Java que anteriormente han sido transformadas al formato .dex (Dalvik Executable).
Librerías nativas: Android incluye en su base de datos un set de librerías C/C++ que son expuestas a todos los desarrolladores a través del framework de las aplicaciones Android System C library, librerías de medios, librerías de gráficos, 3D, SQlite, etc.
Capa 3:
Entorno de Aplicación: Todos los desarrolladores de aplicaciones Android, tienen acceso total al código fuente usado en las aplicaciones base. Esto ha sido diseñado de esta forma, para que no se generen cientos de componentes de aplicaciones distintas, que respondan a la misma acción, dando la posibilidad de que los programas sean modificados o reemplazados por cualquier usuario sin tener que empezar a programar sus aplicaciones desde el principio.
Capa 4:
Aplicaciones: Todas las aplicaciones han de correr en la máquina virtual Dalvik para garantizar la seguridad del sistema. Las aplicaciones Android están escritas en Java.
La plataforma Android proporciona diferentes componentes para programar lo que se espera haga la aplicación, posee cuatro elementos básicos:
13 Una aplicación Android puede contener varias Activity, una de ellas marcada como principal.
Intent (Intención): Mecanismo para el paso de mensajes, declara la intención de realizar una acción.
Este tipo de componente es el que utiliza Android para moverse de una pantalla a otra. Se puede entender como aquello que la aplicación desea hacer. Cuando se lanza un Intent el sistema busca qué Activity es capaz de dar respuesta a ese Intent y elige la más adecuada.
Service (Servicios): Es una tarea que se ejecuta durante periodos prolongados y en un segundo plano de la aplicación. No cuenta con una interfaz por lo que el usuario no interactúa de forma directa con este componente.
Content Provider (Proveedor de Contendido): Es un almacén de información provisto desde una API mediante el cual, el usuario y la aplicación pueden acceder al contenido sin necesidad de conocer los detalles del almacenamiento.
2.5 Herramientas de Desarrollo de Android
Para desarrollar programas en Android se lo hace en el lenguaje de programación Java y el conjunto de herramientas de desarrollo SDK (Software Development Kit), pero hay otras opciones disponibles.
Android SDK: Es el kit de desarrollo de Google para su sistema operativo Android que incluye todos los componentes necesarios para desarrollar, probar y depurar las aplicaciones.
Se puede integrar con entornos de desarrollo como Eclipse (a través del plugin ADT) o con NetBeans.
14 de datos (SQLite), la comunicación con distintos componentes como la cámara, el GPS, el acelerómetro, etc.
También incluye un emulador con el cual es posible reproducir la apariencia y comportamiento de la aplicación en un dispositivo real. Todas las aplicaciones Android se ejecutan dentro de la máquina virtual Dalvik.
El emulador de android no tiene soporte para algunas características de hardware como el multi-touch o los sensores por lo que para probar el funcionamiento de estos es necesario utilizar un dispositivo físico.
2.6 Sensores y tecnologías en los Smartphones
Sensores de movimiento
Son usados para medir las fuerzas de aceleración y rotación en los 3 ejes.
Acelerómetro: Es un dispositivo dentro del móvil que mide la aceleración, también el ángulo de inclinación, rotación, vibración, y la gravedad.
Puede cambiar automáticamente la orientación de la pantalla del dispositivo a horizontal o vertical.
Giroscópico: El sensor giroscópico permite medir el giro, monitorear y controlar las posiciones del dispositivo como la dirección, el movimiento y la rotación. Se lo utiliza para medir la velocidad de giro.
Sensores de posición
Estos se utilizan para medir la posición física del dispositivo.
Sensor de orientación: Detecta la orientación de un dispositivo. Se lo utiliza en aplicaciones de realidad aumentada.
15
Sensor de campo magnético: Sirve para medir la fuerza y la dirección de los campos magnéticos.
Se utiliza para brújula, detector de metales o corrientes eléctricas.
Sensor de proximidad: Sirve para medir la distancia y detectar objetos o señales que se encuentran cerca del sensor a menos de 5 cm.
Funciona emitiendo una luz infrarroja que mide con el sensor de luz.
Sensores de ambiente
Estos se utilizan para medir los cambios ambientales, tales como temperatura, humedad, entre otros.
Sensor de presión: Sirve detectando la presión atmosférica. La utilización es en altímetro o barómetro. Funciona con una piezorresistencia.
Sensor de temperatura: Sirve para detectar la temperatura interna del dispositivo. Sirve para prevenir fallas en caso de sobrecalentamiento del dispositivo.
Sensor de luz: Este sensor detecta la iluminación y puede medir la intensidad de la luz. Se utiliza para ajustar el brillo de la pantalla.
Funciona con una fotorresistencia que hace que cambie en función de la luz recibida.
GPS (Sistema de posicionamiento global): Permite determinar con precisión de pocos metros la posición de un objeto o una persona en cualquier lugar del mundo.
Wi-Fi: Es una tecnología que utiliza ondas de radio y permite conectarse e intercambiar información de manera inalámbrica con un dispositivo electrónico.
16
Micrófono: Es un sensor que convierte el sonido en una señal eléctrica y puede ser usado para grabar y reproducir sonidos.
2.7 ¿Qué es el contexto?
Dey, Abowd y Wood (1999) definieron el contexto como el “estado físico, emocional o informacional del usuario”. Se pueden destacar otras definiciones como la de Zetie (2002), quien describió el contexto en aplicaciones de software como el “conocimiento sobre los objetivos, las tareas, las intenciones, la historia y las preferencias del usuario que el programa actualiza constantemente para optimizar su aplicación”. (Bel Enguix, G, 2008)
El contexto está compuesto por una serie de eventos como el lugar y el tiempo que ayudan a la comprensión de un mensaje.
Las situaciones que forman cada tipo de contexto son generalmente muy específicas y aunque pueden repetirse en otros momentos o lugares, es casi imposible que todas ellas se presenten del mismo modo y que generen exactamente los mismos resultados.
El contexto es cualquier información que se puede utilizar para determinar la situación de una entidad. Una entidad es una persona, lugar u objeto que se considera relevante para la interacción entre un usuario y una aplicación, incluyendo el usuario y la aplicación por sí mismos.
Casi toda la información disponible define al contexto algunos ejemplos son: identidad, información espacial, información temporal, información del entorno, situación social, recursos disponibles cercanos, medidas psicológicas, actividades, agendas, etc. (Molina, 2008)
17
Who (“quién”, Identity Awareness).- Se puede señalar perfiles de usuario y la medida en la que el contexto los diferencia para lograr un comportamiento adecuado.
What (“qué”, Task Awareness).- Se centra en lo que el usuario está haciendo, qué tarea realiza y que quiere conseguir. Constituye por tanto los servicios que el sistema le ofrece.
Where (“dónde”, Location Awareness).- Conocimiento de la localización física, es decir ubicación de personas y objetos que realizarán las tareas.
When (“cuando”, Time Awareness).- Adquisición y mantenimiento de información sobre tiempo y fecha, horarios estáticos y dinamismo de la agenda de cada usuario.
Why (“por qué” del comportamiento de un dispositivo).- Para conseguir comunicar fácilmente con la computadora en la realización de tareas cotidianas, a ser posible, de manera implícita, es decir, sin intervención por parte del usuario.
2.8 ¿Qué es context-awareness?
En computación context awareness se enfoca a la idea de que las computadoras pueden percibir y reaccionar en función de su entorno. Los dispositivos pueden tener información sobre las circunstancias en las que son capaces de operar y basados en reglas, o un estímulo inteligente reaccionar en consecuencia. El término contexto awareness en la computación ubicua se introdujo por Schilit (1994).
18 aplicación en función del contexto reconocido (por ejemplo, acciones de activación en función del contexto). Como la actividad del usuario y la ubicación es fundamental para muchas aplicaciones, context awareness se ha centrado más en profundidad en las áreas de investigación de reconocimiento de la ubicación y el reconocimiento de la actividad. (Dey, 2000).
Context awareness se utiliza para diseñar interfaces de usuario más innovadoras, y también se utiliza como parte de la computación ubicua.
Un sistema es context aware si puede extraer, interpretar y usar la información del contexto y adaptar a su funcionalidad al actual contexto en uso.
Los sistemas context aware pueden ser:
•Sistema Adaptativo: estos aprenden las preferencias de sus usuarios y los ajustan.
•Sistema de Respuesta: estos anticipan las necesidades del usuario en un ambiente variable.
•Sistema Proactivo: estos son orientados a un objetivo, capaz de tomar iniciativa, no solo de reaccionar al ambiente.
•Sistemas Autónomas: estos pueden actuar independientemente sin interferencia humana.
2.9 ¿Qué es la computación ubicua?
El término de computación ubicua (ubicomp) fue creado por Mark Weisser en 1988 en Xerox Parc, cuando trabajaba para el Computer Science Laboratory. Lo que Weisser visiono es el proceso por el cual los ordenadores pueden integrarse al entorno de la persona y ser usados en la vida diaria hasta volverse casi invisibles.
19 Interfaces naturales: Interfaces que soportando técnicas de interacción a través del uso de formas más naturales de expresión como el habla, los gestos, la escritura
Context Awareness: Las aplicaciones ubicomp se espera que utilicen todas las técnicas de computación y tecnología existente tomando en cuenta el contexto como la localización, información personal y reconocimiento de objetos.
Captura automática de experiencias en vivo: Las aplicaciones frecuentemente proveen la facilidad al usuario de grabar elementos de sus experiencias como fotos y videos.
En los últimos años el concepto de ubicomp ha ido desarrollándose con tecnologías como Wi-fi o Wimax que han extendido las redes de computación por todo el mundo sin necesidad de cables, así también como el desarrollo de la nanotecnología que es el estudio y desarrollo de sistemas a una escala menor que un micrómetro.
Se puede presenciar este avance al adquirir un teléfono inteligente y acceder a una enorme cantidad de información en Internet en cuestión de segundos, en poco tiempo todo tendrá un sensor o un ordenador dentro.
2.10 Herramientas y librerías para desarrollo de aplicaciones
context aware
El desarrollo de aplicaciones sensibles al contexto necesita considerar un conjunto diferente de sensores, eventos y acciones que en el caso de aplicaciones clásicas orientadas al negocio, estos elementos requieren la implementación de ciertos patrones específicos en el código, los cuales incrementan la complejidad al programar este tipo de sistemas.
20 que toman en cuenta información proveniente de los sensores, considerándola como eventos externos desencadenadores de acciones.
Du & Wang (2008) apuntan a la programación automática de aplicaciones, y para este efecto proponen un framework específicamente orientado a la generación de aplicaciones sensibles al contexto. Este entorno permite usar un conjunto de especificaciones con las cuales se puede definir la conducta de las aplicaciones mediante la generación de reglas que pueden atarse a un conjunto de acciones dependientes del contexto. A partir de estas especificaciones el modelo del framework genera automáticamente la aplicación.
La generación de librerías específicas, orientadas al manejo de ciertas tareas sensible al contexto que puedan ser incluidas en una aplicación para facilitar su desarrollo es también una preocupación en este campo. BeTelGeuse (Nurmi, Kukkonen, Lagerspetz, Suomela, & Floréen, 2007) y TreasurePhone (Seifert, De Luca, Conradi, & Hussmann, 2010) son dos ejemplos interesantes de esta línea de investigación.
BeTelGeuse permite recuperar información de contexto mediante la detección y conexión con dispositivos Bluetooth. Es una aplicación de soporte que facilita la construcción de aplicaciones más específicas que la utilicen como soporte en el proceso de hallazgo y reconocimiento de recursos.
2.11 Estudios sobre aplicaciones context aware
Existen varios estudios y documentos referentes a las aplicaciones context aware y su uso en la creación de aplicaciones interactivas, servicios web, sistemas de información y aplicaciones multimedia.
21 elemento distractor en circunstancias donde la total atención del usuario debe enfocarse en ciertas actividades. Si bien los dispositivos móviles cuentan en su gran mayoría con opciones para desactivar los avisos, muchas veces el usuario olvida utilizarlas, lo que puede generar molestias a quienes se encuentran en las cercanías y al mismo usuario.
Un campo activo de investigación, dentro del área de los sistemas sensibles al contexto, es buscar los mecanismos adecuados para automáticamente detectar en qué circunstancias el usuario debería ser avisado y en cuáles no. A continuación se presenta algunos trabajos representativos.
Uno de los pioneros en esta línea es SenSay (Siewiorek et al., 2003) que hace uso de un conjunto de sensores para luz, movimiento y sonido, distribuidos alrededor del cuerpo del usuario. La información recibida por los sensores durante los últimos minutos se analiza y sopesa para evitar bruscos y muy frecuentes cambios de estado. Finalmente el sistema puede tomar la decisión de cambiar a uno de cuatro estados posibles: no interrumpir, en espera, activo, y por defecto. Cada uno de estos estados implementa una serie de acciones predefinidas como por ejemplo deshabilitar el timbre y activar el vibrador. Adicionalmente cuenta con la capacidad de avisar a quien llama del estado actual del usuario.
Ho e Intille (2005) exploran las posibilidades de utilizar los dispositivos móviles para enviar información al usuario de manera proactiva, al mismo tiempo minimizando las interrupciones mientras realiza otro tipo de tareas. Mediante el uso de un dispositivo con varios acelerómetros para detectar el desplazamiento y el cambio de postura, se midió de manera experimental la receptividad del usuario a los mensajes enviados en las transacciones de una actividad a otra, comparado a mensajes enviados a momentos aleatorios. Se comprobó que los mensajes recibidos entre actividades eran mejor recibidos al no causar, entre otras cosas, sobrecarga de información.
22 en un ambiente inteligente, recibiendo información de contexto de los sensores del entorno, así como de los sensores en el dispositivo. La información recibida del entorno y del dispositivo se combina con el sistema de reconocimiento vocal utilizando una red Bayesiana. Se reporta un 41% de reducción de errores en la configuración, si se compara con un sistema que no aprovechase la información de contexto. Springer, Wustmann, Braun, Dargie y Berge (2008) también estudian el proceso de captura del contexto, abstracción y toma de decisiones en un escenario inteligente, tomando como caso de estudio una sala de reuniones.
Un sistema de navegación para peatones es propuesto por Yamabe, Takahashi y Nakajima (2008), el cual busca disminuir la sobrecarga sensorial a la que se somete al usuario, efectivizando la información enviada. El problema de sobrecarga sensorial se complica mientras el usuario se encuentra en movimiento ya que reduce la atención que presta al dispositivo. Esto obliga a que la información de importancia llegue al usuario incluso con la mínima atención de su parte.
Driver & Clarke (2008) utilizan la información del contexto para superar las limitaciones de las agendas estáticas tradicionales. La aplicación propuesta reordena dinámicamente la agenda, basándose en la información de contexto que va emergiendo.
CAMeL, context-aware mobile learning, es un prototipo para investigar cómo aprovechar el contexto para proponer información y actividades de aprendizaje específicas y orientadas al momento y entorno mediante el dispositivo móvil (Thüs et al., 2012).
23 La aplicación de Ketabdar y Yüksel (2010)utiliza la información de los movimientos que está realizando el usuario, junto al análisis del sonido ambiental, para así distinguir diversos contextos en los que el usuario se puede encontrar, y modificar la alerta de llamadas (timbre, vibrador u otros) acorde a la situación.
El estar siempre conectado a las redes sociales puede generar considerables niveles de estrés en muchos usuarios. Sambasivan, Ventä, Mäntyjärvi, Isomursu y Häkkilä (2009) estudian los problemas que puede provocar esta conexión permanente y cómo, mediante aplicaciones sensibles al contexto, reducir la intrusión e inclusive el estrés que esto genera, manteniendo al mismo tiempo un alto nivel de sociabilidad en las redes.
En Japón, el Human Activity Sensing Consortium (Kawaguchi et al., 2011) busca generar una gran base de datos con información de las actividades del ser humano, obtenida mediante acelerómetros. El objetivo final es apoyar a la nueva generación de computadores enfocados en su servicio directo en contacto con el ser humano.
Ouchi y Doi inicialmente proponen una aplicación que detecta en tiempo real la actividad que realiza la persona utilizando el acelerómetro, reportando un 95% de exactitud. Cuando la aplicación detecta que la condición es "trabajando", hace una clasificación adicional con el sensor acústico para sub clasificarla en otras siete categorías de trabajo, reportando un 85% de éxito en esta clasificación (2011). En una segunda etapa distinguen entre actividades bajo techo y externas mediante el uso de dos motores de detección diferente, los cuales se intercambian dependiendo de información tomada del GPS. Las actividades internas pueden ser descansando, caminando, aspirando, lavándose los dientes entre otras. Las actividades externas reconocen el tipo de movimiento: reposo, caminado, corriendo y en un vehículo (2012).
24 ActiveSpeech (Everitt, Harada, Bilmes, & Landay, 2007) es un entrenador deportivo electrónico que integra cuatro partes: un sistema de reconocimiento de etiquetas RFID instaladas en equipamiento de gimnasio, un sistema de reconocimiento vocal de acciones, y el sistema inteligente de entrenamiento. ActiveSpeech intenta que el usuario lleve registro de sus actividades en el gimnasio sin necesidad de interrumpir su ejercicio para manipular su registro. El usuario brinda comandos vocales indicando la actividad que realiza, y el sistema se ayuda de las etiquetas RFID, parte del contexto, para desambiguar las instrucciones al conocer el equipo con el que se trabaja.
En la misma línea, Pernek, Hummel y Kokol (2013) utilizan el acelerómetro de los dispositivos móviles para capturar información sobre el ejercicio que el usuario está realizando. Esta información se procesa y se brinda como retroalimentación al usuario para que pueda mejorar su entrenamiento de resistencia. Un ejemplo de esta información es indicar al usuario cuántas repeticiones han sido correctamente efectuadas.
El estudio realizado por Kimura, Ebisui, Funabashi, Yoshii y Nakajima (2011) intenta averiguar si los sensores instalados en un dispositivo móvil pueden ser suficientes como para poder generar aplicaciones persuasivas, donde se busca incitar o inhibir al usuario frente a ciertas conductas. Aplicaciones de este tipo existen, sin embargo utilizan hardware específico de difícil manipulación, que suele desanimar a nuevos, probables usuarios.
Una variación interesante a la detección de las actividades que se realizan en el momento presente, es la predicción de actividades sobre la base del contexto actual, sumado probablemente a información histórica recopilada por el sistema.
25 del dispositivo. Adicionalmente, la correlación entre actividades y configuración es alta cuando se considera cada usuario individualmente, sin embargo en el estudio no se encontró consistencia al tratar de establecer correlaciones entre diferentes usuarios.
El estudio realizado por Khan (2011) busca predecir los deseos del usuario con respecto a las llamadas, mensajes o mails entrantes, dependiendo del entorno en el que se encuentre. Para esto en primer lugar recopiló información tomada de los sensores de luz, temperatura y sonido. Luego hizo uso de algoritmos de machine learning, mediante los cuales reporta haber clasificado correctamente las diferentes instancias.
Miller (2013) revisa un conjunto de aplicaciones predictivas que anticipan lo que el usuario desea, como por ejemplo búsqueda predictiva y asistentes personales robotizados. En este tipo de aplicaciones, tales como Google Now, Cue, reQall, Donna, Tempo AI, MindMeld y Evernote, el contexto, ubicación, hora, día de la semana e historial de actividad se convierten en el patrón de búsqueda, el cual se ejecuta automáticamente, y de manera proactiva brinda resultados y recomendaciones.
Finalmente, EmotionSense (Sayid, 2013) va todavía más allá en el campo de la detección y de la predicción. EmotionSense realiza un seguimiento de llamadas y patrones en los mensajes de texto y trata de averiguar lo que la persona siente. La aplicación se apoya de preguntas efectuadas al usuario ocasionalmente para averiguar sus emociones en el momento. Mediante el uso de los sensores en el dispositivo móvil ata toda esta información para discriminar los picos emotivos mostrando cuándo el usuario se encuentra, por ejemplo, más estresado. Uno de los objetivos de esta aplicación es ayudar al usuario a mejorar su estado de bienestar
26 Existen actualmente en el mercado algunas aplicaciones que permiten la automatización de tareas en el teléfono basándose en ciertos criterios que el usuario determina. Algunas de esas aplicaciones son:
Tasker.-Es una aplicación para Android que realiza acciones basado en contextos (hora, lugar, fecha) utilizando perfiles definidos por el usuario. (Palm OS ,2009)
Pros: Permite hacerlo con sobre 200 tareas, aunque no todas ellas se pueden automatizar en todos los modelos de equipos Android.
Contras: Su costo es de US$6.49.
AutomateIt.-Es una aplicación de Android en la que se puede definir reglas y acciones que se realizarán automáticamente en el dispositivo Android. (SmarterApps Ltd, 2012)
Pros: Tiene una versión gratuita.
Contras: Dispone de una versión de pago cuyo costo es de US$ 1.56.
Atooma.-Es una aplicación gratuita para Android de automatización que permite fijar eventos condicionales (IF), que automáticamente hagan que ocurran acciones (DO), basadas en momento del día, localización, alguna aplicación favorita, recibo de mensajes, nivel de carga de batería y sensores de movimiento del equipo, entre otros.(Atooma Inc, 2012)
Pros: Lo que más diferencia a esta aplicación del resto es su apariencia. Contras: Es muy básica y le falta funcionalidad.
Llama.- Esta es una aplicación gratuita para Android que determina la localización por medio de las antenas o células de las compañías proveedoras de servicio, no por medio del GPS. Por lo demás permite crear tareas, perfiles de sonido (para que al llegar a un sitio determinado el celular suene o no), abrir una aplicación de audio al conectar audífonos. (KebabApps, 2011)
27 Contras: La aplicación le falta desarrollarse ya que no detecta bien la localización.
ON{X}.- Es una aplicación de Microsoft que se puede descargar gratuitamente desde Google Play, la cual ayuda a automatizar tareas en el terminal Android. Esta aplicación todavía se encuentra en fase de desarrollo y trabaja en conjunto con el sitio web de ON{X} que es donde se desarrollan las reglas que son las que permiten automatizar las tareas.(Microsoft , 2012)
Pros: Es gratuita
Contras: Esta todavía en fase de desarrollo.
2.13 Metodología Scrum
Scrum es un método que fue desarrollado por Ken Schwaber, Jeff Sutherland y Mike Beedle. Está especialmente indicada para proyectos con un rápido cambio de requisitos.
La palabra SCRUM procede de la terminología del juego de rugby, donde SCRUM se define como el acto de preparar el avance del equipo en unidad pasando la pelota entre uno y otro jugador.
Los siguientes conceptos fueron tomados del libro de Blankenship, Bussa y Millet (2011).
La metodología Scrum consiste en un enfoque iterativo para el desarrollo de software que utiliza principios ágiles y el manifiesto ágil.
El manifiesto ágil trata de proveer mejores maneras de desarrollar software, fue escrito en febrero del 2001 por un grupo de 17 críticos de los modelos del desarrollo de software y usuarios de métodos ágiles.
28 1.-Valorar más a los individuos y su interacción que a los procesos y las herramientas.
2.-Valorar más el software que funciona que la documentación exhaustiva. 3.-Valorar más la colaboración con el cliente que la negociación contractual. 4.-Valorar más la respuesta al cambio que el seguimiento de un plan.
De estos cuatro valores, se desarrollaron doce principios para el manifiesto ágil que son:
1.-La satisfacción del cliente a través de la entrega rápida y continua de paquetes de software útiles y de valor.
2.-Nuevos requisitos son bienvenidos incluso en la etapa final del desarrollo. 3.-Entrega con frecuencia de software que funcione, preferentemente en semanas en vez de meses.
4.-El software que funciona es la prueba fehaciente de que se puede medir el progreso del proyecto.
5.-Desarrollo sostenible, capaz de mantener un ritmo constante.
6.-Trabajo cercano de forma cotidiana entre las personas de negocio y desarrollares.
7.-La conversación cara a cara es la mejor forma de comunicación.
8.-Los proyectos están construidos en torno de personas motivadas, a los cuales se les tiene que dar la confianza necesaria para que realicen la tarea. 9.-Atención continúa a la excelencia técnica y al buen diseño.
10.-Simplicidad.
11.-Equipos que se auto organizan.
12.-Adaptación regular a las circunstancias cambiantes.
El manifestó ágil provee una forma de examinar los métodos ágiles y entender la base en la que están construidos.
29 El equipo Scrum está formado por los siguientes roles:
Product Owner. Jefe del producto. Encargado de hablar con el cliente y sacar los requisitos del sistema así como sus prioridades.
ScrumMaster. Director de proyecto. Encargado de que se cumplan las entregas.
Team. Incluye a los desarrolladores, testers, diseñadores, analistas, etc.
Externos. Su rol es distinto, es aportar información y datos importantes al proyecto pero desde un punto de vista desde fuera, no implicados en el desarrollo.
Las prácticas que Scrum propone son:
Se realizan ciclos o iteraciones de duración fija llamadas Sprints, que tienen una duración preestablecida de 2 y 4 semanas
En cada nuevo Sprint se va ajustando la funcionalidad ya construida y se añaden nuevas prestaciones. El objetivo es generar un incremento visible, utilizable y entregable.
Al inicio de cada Sprint se realiza una Planning Meeting, durante la cual se revisa el Backlog de proyectos que es el conjunto de requisitos denominados historias descritos en un lenguaje no técnico y priorizados por valor de negocio. En esta reunión el Product Owner identifica los proyectos que quiere resolver y los describe al equipo. Entonces, el equipo determina cuáles de estos proyectos pueden ser comprometidos para el Sprint.
Durante el transcurso del Sprint no se puede modificar el alcance del mismo, es decir, se intentará mantener congelados los requisitos hasta que el mismo finalice.
30 con algún impedimento que no le permita avanzar de acuerdo a lo comprometido.
Al final del Sprint, se realiza una reunión de retrospectiva durante la cual el equipo comparte libremente opiniones sobre las cosas que salieron bien y las cosas que deben evitarse en el futuro.
Las fases de la metodología Scrum son similares al ciclo de vida del modelo en cascada entre las cuales están:
Análisis de requisitos
Diseño y desarrollo
Implementación
Pruebas
En la fase de análisis de requisitos se hace un estudio de las restricciones físicas que se puedan tener al desarrollar la aplicación. Esto se lo realiza para asegurar que el desarrollo de la aplicación sea posible y no exista problema en la implementación. Se especifica también las funcionalidades de toda la aplicación.
La fase de diseño y desarrollo permitirá la implementación de los requerimientos en forma efectiva.
En la fase de implementación se desarrollan las funcionalidades necesarias, de acuerdo a los requisitos analizados y el diseño planteado.
31
3 METODOLOGÍA
Para el desarrollo del proyecto se utilizó Scrum, que es una metodología ágil de desarrollo.
Para implementar esta metodología se crea una serie de bloques de tiempo o pequeños pasos llamados sprints.
Cada sprint puede ser visto como un mini proyecto en cascada, esto es porque en cada sprint se haría lo que normalmente se realizaría en un proyecto en cascada solo que en pequeña escala.
En cada paso se toma una característica de un requerimiento, se diseña esa característica basándose en los requerimientos, se programa y se prueba basándose en el diseño de la aplicación. A diferencia del diseño en cascada no se realiza todo de una vez.
La meta de cada sprint es la de crear un avance del producto final que resuelva un problema en particular y que sea posible de entregar, no trata de crear toda la aplicación en su totalidad.
Haciendo las cosas en pequeña escala los problemas tienen una menor probabilidad de aparecer cerca del final del proyecto, es por eso que la metodología Scrum trata exponer esos problemas más rápido.
Más que un proceso completo de desarrollo o una metodología en sí misma, Scrum es un marco de trabajo, por lo que utilizando las fases del ciclo en cascada se desarrolló cada característica de la aplicación, produciendo un ejecutable por cada requisito hasta completar toda la aplicación.
Etapas del proceso de desarrollo
3.1 Análisis de Requerimientos
32 Para esto se siguieron los siguientes pasos:
-La definición de los requisitos funcionales a través de casos de uso. -Definición de requisitos no funcionales.
-Definición requisitos de hardware. -Definición requisitos de software.
3.2 Diseño y Desarrollo
Se generó el modelo de datos para que la solución cumpla con los requerimientos definidos. El diseño generado trata de contemplar las posibles modificaciones futuras, crecimiento de la solución y la incorporación de nuevas funcionalidades.
Los pasos a seguir fueron:
-Definición de la arquitectura a utilizar. -Diseño diagrama de clases
-Diseño diagrama de navegación.
-Análisis de los componentes utilizados en el desarrollo de la aplicación
3.3 Implementación
Se construyó la solución del entregable (Sprint), cumpliendo con las definiciones y especificaciones anteriormente expuestas.
3.4 Pruebas
33
4 RESULTADOS Y DISCUSIÓN
4.1 Análisis de requisitos
Para detectar las funcionalidades que tiene la aplicación se tomó como referencia las aplicaciones que existen en el mercado en las tiendas Apple Store y Goole Play que realizan funciones parecidas, para de esta manera desarrollar una aplicación que sea fácil de usar y posea un diseño simplificado.
La aplicación hace uso de los sensores del teléfono para realizar acciones, para esto el usuario selecciona un desencadenante para que realice cierta actividad.
Se utilizo diferentes tipos de contexto (nivel de ruido, localización, tiempo, estado del dispositivo, movimiento) para desencadenar actividades, pero no se desarrollo la aplicación para que exista interacción entre las reglas para los distintos tipos de contexto.
Basándose en los sensores y capacidades del teléfono se puede utilizar una variedad de desencadenantes, como por ejemplo: tiempo, sonido, localización, movimiento, proximidad y batería.
Tabla 1. Definición de las tareas a automatizarse
Categoría Acción Desencadenante
Volumen Subir o bajar Sonido o Tiempo
Luminosidad de la pantalla Subir o bajar Batería
Mensaje de texto Enviar Localización o Tiempo
Aplicación Abrir o cerrar Movimiento
Notificación de porcentaje Mostrar Batería
Wi-fi Encender o apagar Localización o Batería
Recordatorio Mostrar Tiempo
34
4.1.1 Requisitos funcionales
Para el desarrollo de la aplicación se utilizan desencadenantes que son los requisitos que permiten a la aplicación funcionar y realizar actividades.
En la Figura 1 se muestra como el dispositivo móvil utiliza un desencadenante para realizar la acción
Figura 1. Caso de uso del dispositivo móvil y el desencadenante
Tiempo: Usando como desencadenante el tiempo que viene dado por la hora y el día se puede realizar acciones como pueden ser:
Mostrar una notificación en el dispositivo en la cual se pueda escribir un mensaje para recordar y nos dé la opción de seleccionar la fecha y la hora en la cual se quiera aparezca el mensaje.
Se pueda seleccionar un día y una hora en la cual el dispositivo móvil no emita ningún sonido.
35
Figura 2. Caso de uso para desencadenar la acción con el tiempo.
Sonido: Captando las variaciones del sonido si es alto o bajo se pueden realizar acciones como:
Enviar un mensaje de texto a una persona seleccionando el número y escribiendo un mensaje que se desee aparezca cuando se detecte un lugar ruidoso y se pierda una llamada.
Subir el volumen del timbre del teléfono si se detecta mucho ruido en el ambiente.
Figura 3. Caso de uso para desencadenar la acción con el sonido.
Localización: Utilizando el GPS para detectar la localización se pueden realizar acciones como pueden ser:
36 Encender el Wi-fi al detectar la cercanía de un lugar donde existe cobertura.
Figura 4. Caso de uso para desencadenar la acción con la localización
Movimiento: Utilizando el acelerómetro del dispositivo móvil se pueden realizar acciones como:
Detectar el movimiento del teléfono y abrir aplicaciones para las cuales se desea un rápido acceso.
37
Proximidad: Utilizando el sensor de proximidad se puede realizar acciones como:
Detectar si el teléfono lo tiene el usuario y contestar una llamada de forma automática.
Figura 6. Caso de uso para desencadenar la acción con la proximidad
Batería: Detectando el porcentaje de batería del teléfono con el fin de ahorrar energía se pueden realizar acciones como:
Apagar el Wifi cuando la batería del teléfono tenga cierto porcentaje que el usuario considere bajo y prenderlo cuando el porcentaje este alto.
Mostrar una notificación del porcentaje de batería para saber si se necesita cargar el dispositivo móvil.
38
Figura 7. Caso de uso para desencadenar la acción con la batería.
4.1.2 Requisitos no funcionales
Portabilidad
El sistema ofrece compatibilidad con otras plataformas Android desde la versión 3.0. Esto es debido que al utilizar una versión inferior la aplicación debería tener un diseño diferente y utilizar componentes creados por código.
Disponibilidad
Estará disponible el 100% del tiempo, esto se obtiene instalando la aplicación dentro del dispositivo móvil como una aplicación nativa.
Se realizó una aplicación nativa para poder tener control sobre los sensores del dispositivo, que de otra forma no sería posible.
4.1.3 Requisitos de Hardware
39 Es por eso que los requisitos de hardware que debe tener la aplicación para poder utilizarla de manera correcta son:
GPS
Sensor de proximidad
Acelerómetro
Wi-Fi
Pantalla táctil
Algunos dispositivos móviles carecen de GPS, sensor de proximidad, Wi-fi o acelerómetro, por lo que la aplicación podrá ser instalada en esos dispositivos pero no funcionaran las actividades que utilicen estos sensores.
Hay que tener en cuenta que por ser información capturada por los sensores del dispositivo pueden darse desconexiones o fallas de hardware que pueden hacer la información no disponible. Además la información obtenida puede no ser suficientemente buena lo que provoca que sea inutilizable o inexacta.
4.1.4 Requisitos de Software
Los requisitos de software para que funcione la aplicación son: Sistema operativo: Android 3.0
4.2 Diseño y desarrollo de la aplicación
Después de haber realizado un análisis de los requisitos y establecer las funcionalidades de la aplicación, se procede con el diseño y desarrollo de la misma.
40 La estructura que tiene el directorio de la aplicación es la mostrada en la Figura 8.
Figura 8. Estructura de la carpeta src
41
P
rese
n
ta
ción
L
ó
g
ica
d
e
l
n
e
g
o
cio
Figura 9. Distribución de las clases
En los siguientes diagramas de clases se puede ver cómo está compuesta cada clase y como se relacionan entre sí.
42
Figura 10. Diagrama de la clase Batería
43
Figura 11. Diagrama de la clase Proximidad
En la Figura 12 se puede apreciar el diagrama de la clase localización, está compuesto por cuatro clases, la clase principal, la clase de interfaz de usuario y las clases que realizan el control de la localización y envío de mensaje.
44 En la Figura 13 se puede apreciar el diagrama de la clase sonido, está compuesto por cinco clases, la clase principal, la clase de interfaz de usuario y las clases que realizan la captura del sonido y permiten subir el volumen del timbre.
Figura 13. Diagrama de la clase Sonido
45
Figura 14. Diagrama de la clase Movimiento
46
Figura 15. Diagrama de la clase Tiempo
4.2.1 Diagrama del flujo de navegación
47
48 En la Figura 17 se muestra el flujo de navegación de los botones tiempo, sonido y proximidad. Las flechas indican la ventana que aparece al hacer click en el correspondiente botón.
49
4.2.2 Análisis de los componentes de desarrollo
Service:
Es un componente que trabaja en segundo plano y que no es visible para el usuario.
Una aplicación puede iniciar un service y continuar funcionando en el background aunque el usuario cambie o cierre la aplicación.
Para la creación de un service este se debe declarar en el manifest en caso de no declararlo este no funcionara si se ejecuta.
Una actividad puede comenzar un service con el método startService() y parar el servicio con el método stopService().
Cuando el service se inicia, se llama al método onCreate(). A continuación el método onStartCommand() es llamado con el dato Intent proporcionado por nuestra Activity.
La instrucción Service.START_NOT_STICKY es utilizada si el sistema elimina el servicio y si el método onStartCommand() ha finalizado, no vuelve a crear el servicio. Es la opción que se debe utilizar para evitar el funcionamiento de un servicio cuando no es necesario.
AsyncTask: