Proyecto Fin de Carrera - Universidad de...

139
1 Equation Chapter 1 Section 1 Proyecto Fin de Carrera Ingeniería de Telecomunicación Uso de sensores ANT+ en aplicación de entrenamiento personalizado Autor: Juan F. Coronel Maraver Tutor: Teresa Ariza Gómez Departamento de Ingeniería Telemática Escuela Técnica Superior de Ingeniería Universidad de Sevilla Sevilla, 2017

Transcript of Proyecto Fin de Carrera - Universidad de...

Page 1: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

1

Equation Chapter 1 Section 1

Proyecto Fin de Carrera

Ingeniería de Telecomunicación

Uso de sensores ANT+ en aplicación de

entrenamiento personalizado

Autor: Juan F. Coronel Maraver

Tutor: Teresa Ariza Gómez

Departamento de Ingeniería Telemática Escuela

Técnica Superior de Ingeniería

Universidad de Sevilla

Sevilla, 2017

Page 2: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de
Page 3: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

3

Proyecto Fin de Carrera

Ingeniería de Telecomunicación

Uso de sensores ANT+ en aplicación de

entrenamiento personalizado

Autor:

Juan F. Coronel Maraver

Tutor:

Teresa Ariza Gómez

Profesor titular

Departamento de Ingeniería Telemática

Escuela Técnica Superior de Ingeniería

Universidad de Sevilla

Sevilla, 2017

Page 4: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

4

Page 5: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

5

Proyecto Fin de Carrera: Uso de sensores ANT+ en aplicación de entrenamiento personalizado

Autor: Juan F. Coronel Maraver

Tutor: Teresa Ariza Gómez

El tribunal nombrado para juzgar el Proyecto arriba indicado, compuesto por los siguientes miembros:

Presidente:

Vocales:

Secretario:

Acuerdan otorgarle la calificación de:

Sevilla, 2017

El Secretario del Tribunal

Page 6: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

6

Page 7: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

7

A mi novia, familia y amigos.

Page 8: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

8

Page 9: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

9

Índice

Índice 9

Índice de Tablas 11

Índice de Figuras 12

1 Introducción 15 1.1 Objetivos 15 1.2 Motivación 15 1.3 Punto de partida 16 1.4 Arquitectura de la Aplicación 16 1.5 Estructura de la Memoria 17

2 Tecnologías y entornos de trabajo 18 2.1 Android 18

2.1.1 ¿Qué es Android? 18 2.1.2 Arquitectura 18 2.1.3 Cuota de Mercado 20

2.2 Eclipse 20 2.3 Android SDK 22 2.4 Android ADT 23 2.5 ANT y ANT+ 25

2.5.1 Protocolo ANT 26 2.5.2 Simulación ANT+ 29 2.5.3 Desarrollo ANT+ 34

2.6 SQLite 34 2.7 GraphView 35 2.8 Git y Gitlab 36

2.8.1 Configurar Gitlab 37 2.9 Google Play Services 41

2.9.1 Creation de una API-KEY 42

3 Persistencia de datos 46 3.1 Estructura de la base de datos 46

3.1.1 IdRuta 46 3.1.2 Carrera 47 3.1.3 Bicicleta 47 3.1.4 Pulsómetro 48 3.1.5 GPS 49

3.2 Código y clases 49 3.2.1 AtletaReaderDbHelper.java 49 3.2.2 DataSource.java 49 3.2.3 CursorToModel.java 50

4 Estructura y código 52 4.1 Estructura del código de una aplicación Android 52

Page 10: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

10

4.2 Código 53 4.2.1 Carpeta src 53 4.2.2 Directorio res 60 4.2.3 Directorio lib 61 4.2.4 Android Manifest 62

5 Manual de Usuario 63 5.1 Manual de usuario 64

5.1.1 Carrera 65 5.1.2 Bicicleta 67 5.1.3 Pulsómetro 69 5.1.4 Gráfico 71 5.1.5 GPS 72

6 Conclusiones 75 6.1 Puntos de mejora 75

Bibliografía 76

Anexo A: Código Java y xml 78 test.DroidLogin.sqlite 78 test.DroidLogin.bicicleta 87 test.DroidLogin.carrera 96 test.DroidLogin.gps 101 test.DroidLogin.grafico 107 test.DroidLogin.pulsometro 112 test.DroidLogin.utils 121 Layout 122

Page 11: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

11

ÍNDICE DE TABLAS

Tabla 2-1: Últimas versiones de Eclipse 21

Page 12: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

12

ÍNDICE DE FIGURAS

Figura 1-1: Arquitectura de la aplicación 17

Figura 2-1: Arquitectura de Android 19

Figura 2-2: Cuota de Mercado de móviles 20

Figura 2-3: Descarga de eclipse 21

Figura 2-4: Aplicación de desarrollo Eclipse 22

Figura 2-5 : Instalación Paquetes SDK 23

Figura 2-6: Instalación de ADT en Eclipse 24

Figura 2-7: Asociación Eclipse, SDK y ADT 25

Figura 2-8: Topologías de Red 26

Figura 2-9: Nodos del protocolo ANT 27

Figura 2-10: Canales de comunicación 27

Figura 2-11: Formato del mensaje ANT 28

Figura 2-12: Emparejamientos 29

Figura 2-13: Esquema de uso de los dos USB ANT+ 29

Figura 2-14: Web de descargas de ANT+ 30

Figura 2-15: ANT Android Emulation Bridge Tool 30

Figura 2-16: Aplicación Android Emulation tool en modo de escucha 31

Figura 2-17: Elección del USB ANT+ 31

Figura 2-18: Elección del Perfil Simulant 31

Figura 2-19: Salida de mensajes Simulant 32

Figura 2-20: ANT Radio Service 32

Figura 2-21: ANT Plus Plugin 33

Figura 2-22: Configuración ANT Emulator 33

Figura 2-23: Estado conexión ANT Android Emulator Bridge 34

Figura 2-24: Librería ANT importada al proyecto 34

Figura 2-25: Icono de SQLite 35

Figura 2-26: Librería GraphView 36

Figura 2-27: Icono de Gitlab 36

Figura 2-28: Gitlab Nuevo proyecto. 37

Figura 2-29: Añadir Key SSH en Gitlab 38

Figura 2-30: EGit Eclipse Marketplace 39

Figura 2-31: Configurar clave SSH en Eclipse 39

Figura 2-32: Url del repositorio Gitlab 39

Page 13: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

13

Figura 2-33: Clonar repositorio Git 40

Figura 2-34: Compartir proyecto en Eclipse 40

Figura 2-35: Configuración del repositorio Git 40

Figura 2-36: Commit and Push 41

Figura 2-37: SDK Manager Google Play Services 41

Figura 2-38: Añadir librería Google Play Services al proyecto 42

Figura 2-39: Certificado de depuración 43

Figura 2-40: Creación de proyecto en la consola Google API 43

Figura 2-41: Habilitar Google Maps API 43

Figura 2-42: Creación API Key 1 44

Figura 2-43: Creación API Key 2 44

Figura 2-44: Creación API Key 3 44

Figura 2-45: API Key en el fichero AndroidManifest.xml 45

Figura 3-1: Ejemplo de registros en la tabla idRuta 47

Figura 3-2: Ejemplo de registros en la tabla carrera 47

Figura 3-3: Ejemplo de registros en la tabla bicicleta 48

Figura 3-4: Ejemplo de registros en la tabla pulsómetro 49

Figura 3-5: Ejemplo de registros en la tabla GPS 49

Figura 3-6: Código para creación de la tabla 50

Figura 3-7: Código para el guardado de registros en una de las tablas 50

Figura 3-8: Código para recoger los datos de una de las tablas 50

Figura 3-9: Código para el borrado de todos los registros de una de las tablas 50

Figura 3-10: Código del método get para la tabla carrera 51

Figura 3-11: Código del método insert para la tabla carrera 51

Figura 4-1: Activity Carrera 54

Figura 4-2: Código de conexión con el sensor 54

Figura 4-3: Código para establecer una alarma 55

Figura 4-4: Activity pulsómetro 56

Figura 4-5: Código para la carga de los combos 57

Figura 4-6: Código para añadir elementos al gráfico 58

Figura 4-7: Código del botón para acceder al mapa 58

Figura 4-8: Código para configurar la alarma dentro de la clase MyReceiver 59

Figura 4-9: Código de conversión de tiempo 60

Figura 4-10: Estructura del layout 61

Figura 4-11: Permisos necesarios para la aplicación 62

Figura 5-1: Pantalla después del login 64

Figura 5-2: Pantalla de selección del entrenamiento 64

Figura 5-3: Búsqueda del sensor para el modo carrera 65

Page 14: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

14

Figura 5-4: Guardar el sensor de carrera en la lista de favoritos 65

Figura 5-5: Pantalla modo carrera 66

Figura 5-6: Mensajes para la grabación de datos 66

Figura 5-7: Mensaje de aviso para activar el GPS 67

Figura 5-8: Búsqueda del sensor para el modo bicicleta 67

Figura 5-9: Guardar el sensor de bicicleta en la lista de favoritos 68

Figura 5-10: Pantalla modo bicicleta 68

Figura 5-11: Mensajes para la grabación de datos 69

Figura 5-12: Mensaje de aviso para activar el GPS 69

Figura 5-13: Pantalla modo pulsómetro 70

Figura 5-14: Mensajes para la grabación de datos 70

Figura 5-15: Mensaje de aviso para activar el GPS 71

Figura 5-16: Botón para acceder al gráfico 71

Figura 5-17: Pantalla para mostrar los gráficos 72

Figura 5-18: Botón para acceder a la pantalla que muestra el mapa 72

Figura 5-19: Pantalla de selección de ejercicio 73

Figura 5-20: Pantalla de mapa 74

Figura 5-21: Detalle de la ubicación 74

Page 15: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

15

1 INTRODUCCIÓN

l presente documento recoge toda la información del desarrollo llevado a cabo para el proyecto final de

carrera, consistente en añadir distintas funcionalidades a una aplicación de entrenamiento personal para

dispositivos Android. Principalmente se le sumará a la aplicación la posibilidad de recoger en tiempo

real y guardar la información de distintos sensores que usan la tecnología ANT+ y el GPS integrado en el

móvil.

1.1 Objetivos

El principal objetivo del proyecto es que el usuario pueda conocer “en directo” y guardar en el dispositivo

Android distintas informaciones útiles a la hora de la realización de un ejercicio físico. Así como la posibilidad

de poder consultarla en cualquier momento.

Para ello se le ha añadido a una aplicación Android de entrenamiento personalizado realizado por otro

compañero la posibilidad de:

Recoger y guardar información de un sensor ANT + de ritmo cardiaco.

Recoger y guardar información de un sensor ANT+ de paso y distancia.

Recoger y guardar información de un sensor ANT+ para el uso de la bicicleta.

Recoger y guardar la ubicación del atleta durante el ejercicio.

1.2 Motivación

A nivel personal, el objetivo del proyecto es poder profundizar en distintas tecnologías para la transferencia de

información entre dispositivos, mejorar y ampliar conocimientos a nivel de programación y aprender a realizar

proyectos de mayor magnitud a los realizados durante el transcurso de la carrera.

E

-

Page 16: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

Introducción

16

Siempre he tenido gran interés por todo lo relacionado con la programación por tanto hacer una aplicación

Android junto con el uso de la transferencia de información, que es la base de la Ingeniería de

Telecomunicaciones, me pareció una idea muy interesante.

Ya que el uso de los dispositivos móviles va en aumento, el realizar una aplicación Android me puede ser una

gran oportunidad de aprender una de las tecnologías de futuro, o ya presente, la cual puede abrir nuevas

oportunidades en el mundo laboral.

Respecto a ANT+, es una tecnología que va creciendo y podría tener gran importancia en el futuro debido a su

bajo consumo de energía, escalabilidad y eficiencia. Debido a que desconocía de su existencia el usarlo en el

proyecto fin de carrera es una buena forma de conocerla y aprender su funcionamiento.

1.3 Punto de partida

Como se ha indicado anteriormente, la finalidad del proyecto es añadir funcionalidades a una aplicación

Android de entrenamiento personal, la cual ha sido realizada por el compañero Antonio José Díaz Lora en el

departamento de Ingeniería Telemática.

Con ella el usuario podía realizar distintos ejercicios físicos de manera remota y autónoma siguiendo las

indicaciones mostradas en el móvil mediante explicaciones y videos.

1.4 Arquitectura de la Aplicación

Se va a definir la arquitectura de la aplicación teniendo sólo en cuenta las nuevas funcionalidades incluidas.

Podemos diferenciar tres partes fundamentales para el funcionamiento correcto de las nuevas funcionalidades

de la aplicación.

Sensores ANT+ y GPS: Encargados de recoger la información de los distintos sensores y transmitirla

hacia el móvil y cualquier otro dispositivo Android.

Dispositivo Android: Dispositivo en el cual va a estar instalada nuestra aplicación.

Base de datos SQLite: En ella se guarda la información necesaria. Este tipo de bases de datos se

almacena en la memoria local del dispositivo.

La siguiente figura representa cómo es básicamente la arquitectura de la aplicación realizada.

Page 17: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

17

Uso de sensores ANT+ en aplicación de entrenamiento personalizado

Figura 1-1: Arquitectura de la aplicación

1.5 Estructura de la Memoria

La memoria del Proyecto principalmente se divide en seis capítulos y un anexo. Se van a detallar a

continuación:

Capítulo 1- Introducción: Resumen del contenido del proyecto, objetivos, estructura de la memoria,

arquitectura....

Capítulo 2 - Tecnologías y entornos de trabajo: En este capítulo se explica las tecnologías que se han

usado para el desarrollo del proyecto así como la configuración del para poder realizarlo.

Capítulo 3 - Persistencia de datos: Se explica cómo se ha realizado el guardado de los datos, estructura

de la base de datos usada y las clases java usadas para ello.

Capítulo 4 - Estructura y código: En este capítulo se detallan las partes más importantes del código.

Capítulo 5 - Manual de usuario: Se indican todas las instrucciones que el usuario necesita para poder

usar la aplicación.

Capítulo 6 - Conclusiones

Anexo A : Código Java y xml

Page 18: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

18

2 TECNOLOGÍAS Y ENTORNOS DE TRABAJO

n este capítulo se va a explicar la configuración del entorno de trabajo que se ha utilizado para la

realización del proyecto. Se detallará cómo configurar el equipo para el correcto funcionamiento y se

realizará un breve resumen de las tecnologías usadas razonando el porqué de su utilización.

2.1 Android

2.1.1 ¿Qué es Android?

Android es una plataforma de desarrollo libre, y de código abierto. El núcleo del sistema está basado en un

Linux al que se le han hecho ciertas modificaciones para que pueda ejecutarse en teléfonos y terminales

móviles.

Las modificaciones se han realizado para adaptarlo a los menores recursos de los dispositivos móviles, que,

aunque cada vez son más potentes, no dejan de tener menos recursos que un ordenador de sobremesa. El

hecho de ser gratuito y de código abierto, hace que los fabricantes de móviles puedan usarlo en sus nuevos

terminales sin pagar licencias de uso, lo que abarata el precio final de venta al público y además pueden, sin

ningún impedimento legal, ajustar aspectos que no cuadren con las expectativas de los clientes ya que

cualquiera puede acceder a todo el código, modificarlo y distribuirlo nuevamente.

Android posee una gran cantidad de servicios disponibles (base de datos, lectores de códigos de barras, mapas

para el GPS) y todo esto sin tener que instalar librerías externas ni hacer configuraciones complejas. Los

terminales poseen también gran variedad de sensores que permiten tener conocimiento del entorno que les

rodea y así poder acceder a la información para saber la temperatura del dispositivo o su ubicación.

2.1.2 Arquitectura

Como se muestra en la figura 2-1, los componentes principales del sistema operativo de Android son los

siguientes:

E

-

Page 19: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

19

Uso de sensores ANT+ en aplicación de entrenamiento personalizado

Aplicaciones: las aplicaciones base incluyen un cliente de correo electrónico, programa de SMS,

calendario, mapas, navegador, contactos y otros. Todas las aplicaciones están escritas en lenguaje de

programación Java.

Marco de trabajo de aplicaciones: los desarrolladores tienen acceso completo a los mismos APIs

del framework usados por las aplicaciones base. La arquitectura está diseñada para simplificar la

reutilización de componentes; cualquier aplicación puede publicar sus capacidades y cualquier otra

aplicación puede luego hacer uso de esas capacidades (sujeto a reglas de seguridad del framework).

Este mismo mecanismo permite que los componentes sean reemplazados por el usuario.

Bibliotecas: Android incluye un conjunto de bibliotecas de C/C++ usadas por varios componentes del

sistema. Estas características se exponen a los desarrolladores a través del marco de trabajo de

aplicaciones de Android; algunas son: System C library (implementación biblioteca C estándar),

bibliotecas de medios, bibliotecas de gráficos, 3D y SQLite, entre otras.

Runtime de Android: Android incluye un set de bibliotecas base que proporcionan la mayor parte de

las funciones disponibles en las bibliotecas base del lenguaje Java. Cada aplicación Android corre su

propio proceso, con su propia instancia de la máquina virtual Dalvik. Dalvik ha sido escrito de forma

que un dispositivo puede correr múltiples máquinas virtuales de forma eficiente. Dalvik ejecutaba

hasta la versión 5.0 archivos en el formato Dalvik Executable (.dex), el cual está optimizado para

memoria mínima. La Máquina Virtual está basada en registros y corre clases compiladas por el

compilador de Java que han sido transformadas al formato.dex por la herramienta incluida "dx".

Desde la versión 5.0 utiliza el ART, que compila totalmente al momento de instalación de la

aplicación.

Núcleo Linux: Android depende de Linux para los servicios base del sistema como seguridad,

gestión de memoria, gestión de procesos, pila de red y modelo de controladores. El núcleo también

actúa como una capa de abstracción entre el hardware y el resto de la pila de software.

Figura 2-1: Arquitectura de Android

Page 20: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

Tecnologías y entornos de trabajo

20

2.1.3 Cuota de Mercado

Según el análisis de empresa Kantar Worldpanel la cuota de mercado de Android alcanzó en el periodo que va

de febrero a abril de 2016 su cuota de mercado más alta desde que se tienen datos, alcanzando los 93,9% de

los nuevos smartphones vendidos en dicho periodo al subir más de 5 puntos respecto al año anterior.

Actualmente en abril del 2017 la cuota de mercado se sitúa en el 92,0% Apple, por su parte, posee un 7,5% del

mercado y Windows prácticamente desaparece al conseguir un exiguo 0,6%.

Este dato, una cuota de mercado del 92% en abril del presente año, sumado a que Android es una plataforma

de código libre, y desde el punto de vista de un desarrollador, es más sencillo desarrollar una aplicación sin

necesidad de licencia al contrario que otros sistemas como IOS, hacen que se haya optado, entre muchas otras

razones comentadas anteriormente, por Android para el desarrollo de la aplicación.

Figura 2-2: Cuota de Mercado de móviles

2.2 Eclipse

Una vez que ya se ha optado por Android para el desarrollo de nuestra aplicación hay que elegir el programa

de desarrollo para programarlo. La principal razón de elegir Eclipse frente a otros programas ha sido el

conocimiento y experiencia previa.

Eclipse es una plataforma de software compuesto por un conjunto de herramientas de programación de código

abierto multiplataforma para desarrollar aplicaciones de cliente enriquecido.

De entre todas las versiones de Eclipse, se ha utilizado Eclipse Luna y más concretamente Eclipse IDE for

Java EE Developers.

Page 21: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

21

Uso de sensores ANT+ en aplicación de entrenamiento personalizado

Versión Fecha Versión de la plataforma

Neon 22/06/2016 4.6

Mars 24/06/2015 4.5

Luna 25/06/2014 4.4

Kepler 26/06/2013 4.3

Juno 27/06/2012 4.2

Tabla 2-1: Últimas versiones de Eclipse

Tras elegir la versión de eclipse a instalar, hay que dirigirse a su página web https://eclipse.org y descargar el

instalador, en nuestro caso se ha optado por “Eclipse IDE for Java Developers” como muestra la figura.

Figura 2-3: Descarga de eclipse

Ahora únicamente hay que ejecutar el instalador y ya tendríamos instalado eclipse en nuestro ordenador.

Page 22: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

Tecnologías y entornos de trabajo

22

2.3 Android SDK

Android SDK son las siglas de Android Software Development Kit. Es un kit de desarrollo con el que es

posible desde desarrollar aplicaciones hasta ejecutar un emulador del sistema android en la versión que se

desee. Las principales herramientas que posee son:

Depurador de código.

Biblioteca.

Simulador de teléfono basado en QEMU.

Documentación, ejemplos de código y tutoriales.

Para realizar la instalación inicialmente se descarga el SDK de Android en la siguiente dirección:

http://developer.android.com/sdk/index.html

Una vez que se ha descargado e instalado, se ejecuta el SDK Manager.En el cual, tras un tiempo de espera,

aparecerá una serie de paquetes a instalar, algunos paquetes ya aparecerán marcados por defecto. Aunque

existen versiones más modernas, se seleccionará Android 5.0.1 (API 21) porque es la que se ha decidido usar

en el proyecto debido a que el emulador de Android la ejecuta en el ordenador de una manera fluida.

Figura 2-4: Aplicación de desarrollo Eclipse

Page 23: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

23

Uso de sensores ANT+ en aplicación de entrenamiento personalizado

Figura 2-5 : Instalación Paquetes SDK

Tras pulsar en “Install N packages” habrá que aceptar todas las condiciones, pulsar ‘Install’ y tras un tiempo,

debido a que se tienen que descargar varios paquetes, Android SDK se habrá instalado.

2.4 Android ADT

Android posee un plugin personalizado para el IDE de Eclipse, llamado Android Development Tools (ADT).

Este plugin sirve de gran ayuda a la hora de programar en Android.

Como muestra la figura 2-6, para instalar Android ADT hay que seleccionar en el menú superior Help > Install

New Software y pulsar en el botón Add, poner un nombre y en url se escribe la siguiente dirección.

https://dl-ssl.google.com/android/eclipse/

Tras pulsar OK, aparecerá el software Developer Tools, se selecciona y se hace click en Next varias veces,

luego se acepta las condiciones, y se descargará e instalará el ADT para el Eclipse. Tras esto nos solicitará que

reniciemos el Eclipse, pulsamos “Restart Now” y Eclipse se reiniciará.

Page 24: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

Tecnologías y entornos de trabajo

24

Figura 2-6: Instalación de ADT en Eclipse

Una vez reiniciado el Eclipse nos aparecerá un mensaje en el cual nos solicitará que instalemos Android SDK,

pero ya se ha instalado previamente, por lo tanto, sólo hay que asociarlo de la forma que se aprecia en la

siguiente figura.

Page 25: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

25

Uso de sensores ANT+ en aplicación de entrenamiento personalizado

2.5 ANT y ANT+

ANT es un protocolo de red de sensores inalámbricos que funciona en la banda ISM de 2,4 GHz. Diseñado

para uso ultra bajo de energía, facilidad de uso, eficiencia y escalabilidad, ANT maneja fácilmente topologías

peer-to-peer, estrella, conectado en estrella, árbol y topologías de malla fija. Proporciona comunicaciones de

datos fiables, el funcionamiento en red flexible y adaptativa y la inmunidad de diafonía. El apilado del

protocolo ANT es extremadamente compacto, requiere un mínimo de recursos del microcontrolador y reduce

considerablemente los costes del sistema.

Proporciona un manejo sin preocupaciones de las capas física, de red y de transporte OSI. Además, incorpora

características clave de seguridad de bajo nivel que forman la base para las implementaciones de seguridad de

red sofisticada definidas por el usuario. Asegura un control de usuario adecuado, mientras que aligera

considerablemente la carga computacional en el suministro de una solución de red inalámbrica sencilla y

eficaz.

Dentro del modelo OSI, ANT es el protocolo que cubre las capas físicas, enlace de datos, red y transporte

(incluida la seguridad de bajo nivel) y ANT+ es la tecnología que da la funcionalidad de sesión, presentación y

aplicación. ANT está orientado al transporte de datos y ANT+ a la manipulación de los mismos facilitando la

interoperabilidad; ANT+ hace que se entiendan los dispositivos unidos en una red ANT.

Fue desarrollado por la compañía canadiense Dynastream Innovations Inc que fue comprada por Garmin en el

año 2006. Dicha compañía lidera el consorcio ANT+ Alliance que se encarga del desarrollo (especificaciones,

certificaciones, etc.) de la tecnología ANT+.

ANT + es un conjunto de definiciones que representan la información enviada a través de ANT. Estas

definiciones se llaman perfiles de dispositivo y por lo general están vinculados a un caso de uso específico. Por

Figura 2-7: Asociación Eclipse, SDK y ADT

Page 26: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

Tecnologías y entornos de trabajo

26

ejemplo, un monitor de ritmo cardíaco enviará información sobre el ritmo cardíaco que se define en el perfil

ANT + correspondiente para el monitor de ritmo cardíaco. Estos perfiles de dispositivos se comparten entre

todos los adaptadores ANT+, así permite a cualquier adaptador ANT + crear un monitor de ritmo cardíaco o

un receptor monitor de ritmo cardíaco que operará de manera intercambiable con los otros. Cuando un

dispositivo tiene la marca ANT + significa que ha sido certificado para interoperar con otros dispositivos de

marca ANT +.

2.5.1 Protocolo ANT

2.5.1.1 Topologías de Red

El protocolo ANT ha sido diseñado desde cero para soportar una gran variedad de topologías de red

escalables. Puede ser tan simple como una conexión unidireccional de dos nodos, o tan complejo como un

sistema de múltiples transceptores(Tx/Rx) con capacidad de comunicación completos de punto a multipunto.

Figura 2-8: Topologías de Red

2.5.1.2 Nodos

Cada nodo en una red ANT consiste en un motor de protocolo ANT y un controlador principal (MCU). El

motor ANT encapsula la complejidad del establecimiento y mantenimiento de las conexiones ANT y el

funcionamiento del canal dentro de su firmware. El controlador es por lo tanto libre para manejar los datos de

una aplicación con sólo una carga en el inicio de las comunicaciones ANT para otros nodos, esto lo hace a

través de una sencilla interfaz en serie entre el host y el motor ANT.

Page 27: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

27

Uso de sensores ANT+ en aplicación de entrenamiento personalizado

2.5.1.3 Canales de Comunicación

La comunicación entre nodos ANT se lleva a cabo de diferentes maneras dependiendo de varios factores, tipo

de canal, configuración, tipo de datos, dirección de la información. La mayoría de las implementaciones ANT

utilizan canales síncronos, independientes y bidireccionales. Cuando un nodo principal abre un canal síncrono,

el nodo maestro realiza una búsqueda para comprobar que su transmisión no interfiera con la transmisión de

otro dispositivo, y a continuación, transmite los mensajes en el período designado de canal. En otras palabras,

una vez que se abre el canal, un dispositivo maestro siempre transmite un mensaje en cada intervalo de tiempo

de canal (Tch).

Figura 2-10: Canales de comunicación

Al utilizar canales bidireccionales, el dispositivo maestro mantiene su receptor de radio por un corto tiempo

después de que haya transmitido cada mensaje. Esto permite que el esclavo, opcionalmente, enviar datos al

maestro inmediatamente después de que haya recibido un mensaje.

Los tipos de datos determinan la forma en que los datos serán enviados entre los dos nodos de un canal ANT.

Hay cuatro tipos de datos:

Difusión

Reconocimiento.

Ráfagas

Figura 2-9: Nodos del protocolo ANT

Page 28: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

Tecnologías y entornos de trabajo

28

Ráfagas avanzadas.

Cada vez que la aplicación host envía un mensaje de datos a ANT para la transmisión especifica el tipo de los

datos junto con los datos del mensaje. Los mensajes de datos se transfieren entre los nodos en una de dos

direcciones:

Dirección de avance (Master -> Esclavo)

Dirección Inversa (Esclavo -> maestro)

Todos los tipos de datos se pueden transmitir en ambas direcciones, excepto a través de canales de sólo

transmisión o recepción.

2.5.1.4 Estructura del mensaje

Un mensaje típico del protocolo ANT tiene el siguiente formato:

Figura 2-11: Formato del mensaje ANT

Cada mensaje comienza con un bit de sincronización y termina con un checksum. El bit menos significativo

es el que se envía primero.

Byte 0 (1 Byte): Sincronización.

Byte 1 (1 Byte): Indica la longitud del mensaje en número de bytes.

Byte 2 (1 Byte): Identificador del tipo de datos que se va a enviar.

0 inválido

[1,255] tipo de datos válidos.

Byte 3..N+2 (N Bytes) : Contenido del mensaje.

Byte N+3: CheckSum, sirve para detectar cambios accidentales en una secuencia de datos.

2.5.1.5 Emparejamientos

El acto de emparejamiento de dos dispositivos (maestro con esclavo) implica el establecimiento de una

relación entre dos nodos que desean comunicarse entre sí. Esta relación puede ser permanente,

semipermanente o transitorio.

Una operación de emparejamiento consiste en que un dispositivo esclavo adquiere el ID del canal del

dispositivo maestro. Si se desea vinculación permanente, el nodo esclavo debe guardar la identificación del

maestro en memoria. Este ID se utilizará entonces para abrir un canal con esta identificación en todas las

sesiones de comunicación posteriores.

En relación semipermanente, el apareamiento dura el tiempo que se mantiene el canal. Una vez que termina el

tiempo de espera, se pierde el emparejamiento.

Page 29: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

29

Uso de sensores ANT+ en aplicación de entrenamiento personalizado

En transitoria, el emparejamiento es temporal - durante el tiempo que se necesita para obtener algunos datos.

Si un maestro utiliza sólo la difusión de mensajes, o si se utiliza la función de canal compartido, varios

esclavos pueden vincular y comunicarse con el mismo maestro. A continuación, se puede ver un ejemplo de

tres sensores de temperatura que son maestros y una unidad base que funciona como esclavo.

Figura 2-12: Emparejamientos

2.5.2 Simulación ANT+

Para realizar el desarrollo de la aplicación Android y poder simular los distintos sensores ANT+ se han

empleado dos usb ANT+ y varias aplicaciones para Windows y Android que se detallarán a continuación.

2.5.2.1 USB ANT+

Como puede verse en la figura 2-13, se han usado dos USB ANT+, uno funciona como emisor, con él se

emula los sensores que se han añadido a la aplicación (pulsómetro, sensor para bicicleta y sensor para carrera)

y el otro que le otorga a nuestro ordenador la posibilidad de entender los sensores ANT+, y funciona como

receptor.

Figura 2-13: Esquema de uso de los dos USB ANT+

Page 30: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

Tecnologías y entornos de trabajo

30

2.5.2.2 Aplicaciones Windows

ANT Android Emulation Bridge Tool

Con esta aplicación se consigue que el simulador de Android tenga la funcionalidad de ANT+, así se

podrá depurar la aplicación desde el ordenador.

Para su instalación, se descarga desde la web oficial de ANT+. Véase la figura 2-14.

https://www.thisisant.com/developer/resources/downloads/

Figura 2-14: Web de descargas de ANT+

Una vez descargado e instalado, se conectan los dos USB ANT+, se ejecuta la aplicación y se obtiene

la siguiente pantalla.

Figura 2-15: ANT Android Emulation Bridge Tool

Page 31: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

31

Uso de sensores ANT+ en aplicación de entrenamiento personalizado

Se puede configurar el puerto por el cual se conectarán, en este caso mantendremos el que viene por

defecto, 9650. Luego se selecciona uno de los dos USB y se pulsa “Connect to USB”. Tras eso se

aprecia que la aplicación se mantiene escuchando hasta que detecte que se ha ejecutado la aplicación

correspondiente en el simulador Android, concretamente Ant Emulator Config, que se detallará

posteriormente cuando se hable de las aplicaciones Android necesarias.

Figura 2-16: Aplicación Android Emulation tool en modo de escucha

Simulant ANT+

Este software se utiliza para simular los distintos sensores ANT+. Al igual que la otra aplicación se

descarga desde la web oficial.

https://www.thisisant.com/developer/resources/downloads/

Como se aprecia en la siguiente imagen, una vez iniciada hay que elegir el USB que se va a usar, en

este caso sólo aparece uno, ya que el otro está ya conectado al Android Emulation Bridge.

Figura 2-17: Elección del USB ANT+

Se pulsa sobre “Add Simutator” y se elige el perfil que se desea simular. En este caso se ha simulado

el pulsómetro.

Figura 2-18: Elección del Perfil Simulant

Page 32: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

Tecnologías y entornos de trabajo

32

Una vez elegido, podremos ver las propiedades del script cargado por defecto, en este caso para el

pulsómetro. Estas propiedades pueden ser modificadas durante la ejecución. Tras pulsar en “Turn

On” se puede ver los mensajes ANT que se están enviando en la pestaña Output.

Figura 2-19: Salida de mensajes Simulant

2.5.2.3 Aplicaciones Android

ANT Radio Service

Se descarga desde Play Store de Android y sirve para añadir la funcionalidad ANT+ al simulador

Android. En caso de que se vaya a usar en un dispositivo que tiene la tecnología ANT+, este service

vendrá preinstalado en el teléfono.

Figura 2-20: ANT Radio Service

Page 33: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

33

Uso de sensores ANT+ en aplicación de entrenamiento personalizado

ANT Plus Plugin

Al igual que la aplicación anterior, es posible descargarla desde Play Store de Android y se usa para

gestionar los distintos dispositivos ANT+ vinculados al teléfono.

Figura 2-21: ANT Plus Plugin

ANT Emulator Configuration

Se usa para la comunicación entre ANT Android Emulation Bridge Tool de Windows con el

simulador Android. Se descarga desde la web ofcicial de ANT, una vez instalado en el simulador

Android se ejecuta y se configura con la IP de nuestro ordenador, así como con el puerto, que debe

coincidir con el puerto que se haya seleccionado en la aplicación Windows, en este caso el puerto

9050.

Figura 2-22: Configuración ANT Emulator

Tras pulsar “Reconnect” si se ha configurado correctamente se apreciará que se ha establecido la

conexión con la aplicación Windows, como se muestra en la imagen siguiente.

Page 34: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

Tecnologías y entornos de trabajo

34

Figura 2-23: Estado conexión ANT Android Emulator Bridge

2.5.3 Desarrollo ANT+

Para realizar el desarrollo de la aplicación Android se ha usado la API de ANT+ que proporciona el fabricante

oficial y se puede descargar en su página web.

https://www.thisisant.com/developer/resources/downloads/

Con esta API se pueden realizar distintas acciones necesarias para obtener la información de los dispositivos

como las que se detallan a continuación:

Buscar los dispositivos: Se realiza una búsqueda de los dispositivos ANT+ cercanos disponibles.

Petición de acceso al plugin de comunicaciones con el dispositivo seleccionado.

Suscribirse a eventos: para elegir qué datos se quieren recoger del dispositivo.

Monitorizar el estado de la conexión mientras se reciben los datos.

Liberar la conexión con el plugin.

Para incorporarlo en la aplicación Android hay que importar la librería de ANT+ correspondiente en el

proyecto.

Figura 2-24: Librería ANT importada al proyecto

2.6 SQLite

Es un motor de bases de datos de código abierto caracterizado principalmente por mantener el almacenamiento

de la información persistente de una forma sencilla.

Es distinto a otros sistemas de gestión de bases de datos como MySQL, SQL Server y Oracle DB, ya que

SQLite tiene las siguientes características:

Page 35: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

35

Uso de sensores ANT+ en aplicación de entrenamiento personalizado

No necesita el soporte de un servidor: Implementa un conjunto de librerías encargadas de la gestión

sin necesidad de ejecutar un proceso de administración de la información.

No requiere de configuración: no necesitan que se establezcan puertos, ni tamaños, tampoco

ubicaciones, etc.

El esquema se realiza mediante un fichero: Crea un archivo para el esquema completo de una base

de datos, lo que permite ahorrarse preocupaciones de seguridad, ya que los datos de las aplicaciones

Android no pueden ser accedidos por contextos externos.

Es de Código Abierto: Está disponible al dominio público de los desarrolladores al igual que sus

archivos de compilación e instrucciones de escalabilidad.

Figura 2-25: Icono de SQLite

Por estas razones es una de las mejores opciones para la persistencia de datos en dispositivos móviles, por eso

se ha decidido usar en el proyecto, ya que éstas características permiten un desarrollo sencillo, rápido y

amigable.

En el capítulo 3 se explicará más detalladamente la estructura de la base de datos SQLite que se ha usado para

la aplicación.

2.7 GraphView

Para realizar los distintos gráficos en la aplicación Android se ha empleado la librería GraphView disponible

en su página web.

www.android-graphview.org/

Se ha usado ésta concretamente ya que es de código abierto y dispone de bastantes ejemplos. Sus

características principales son:

Diferentes tipos de gráficos: líneas, puntos, barras que se pueden combinar entre sí.

Uso de varias series de datos en el mismo gráfico.

Actualización de los datos en tiempo real.

Leyendas: Es posible ajustar el ancho y la alineación vertical (superior, medio, inferior).

Formato personalizado para las etiquetas.

Desplazamiento y zoom: Se puede ampliar el zoom y desplazarse a lo largo del gráfico mediante un

movimiento táctil.

Para añadirlo al proyecto se ha agregado la librería correspondiente, en este caso la versión 4.1

Page 36: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

Tecnologías y entornos de trabajo

36

Figura 2-26: Librería GraphView

2.8 Git y Gitlab

Git es un software usado para el control de versiones no centralizado, usado para el mantenimiento de

versiones de aplicaciones con ficheros de código. Sus principales características son:

Eficiencia en proyectos grandes debido a su rapidez.

Gestión distribuida: los usuarios a parte de poseer la última versión de los archivos, poseen una

réplica del repositorio. Esto es muy útil en el caso de que haya problemas con el servidor, ya que se

pueden usar las copias de los clientes para restaurar el servidor.

Facilidad de uso: para usuarios poco experimentados.

Múltiples protocolos de publicación: Los almacenes de información pueden publicarse por HTTP,

FTP, rsync o mediante un protocolo nativo, ya sea a través de una conexión TCP/IP simple o a través

de cifrado SSH.

Por su parte Gitlab es un repositorio para la gestión de proyectos que nos ofrece una interfaz web bastante

amigable.

Figura 2-27: Icono de Gitlab

A continuación, se van a detallar algunas características principales:

Historial de modificaciones del proyecto: Se puede apreciar de manera muy simple quién ha

realizado la modificación, el fichero concreto, las diferencias con la versión anterior, así como la

fecha, entre otras informaciones. Muy útil cuando se trabaja en equipo.

Código del servidor fácilmente accesible remotamente.

Cómoda interfaz web: Posee una interfaz web muy amigable donde se pueden realizar gran cantidad

de acciones de manera muy intuitiva.

Comentarios e incidencias del proyecto: En la interfaz web se pueden abrir tiques para indicar

alguna incidencia con el código. Todo el equipo podría verlo y seguir el flujo del tique.

Gestión de grupos y proyectos: Si se trabaja en equipo, se pueden crear grupos, a los cuales se les

puede asignar privilegios comunes de una manera sencilla.

Por todas estas razones se ha decidido usar Git y Gitlab en el proyecto, ya que es una herramienta muy útil

para tener una copia de seguridad del código y llevar un control de los cambios. En el siguiente apartado se va

Page 37: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

37

Uso de sensores ANT+ en aplicación de entrenamiento personalizado

a detallar cómo configurar Gitlab en nuestro equipo.

2.8.1 Configurar Gitlab

2.8.1.1 Registro y creación del proyecto en la web de Gitlab

Inicialmente hay que registrarse en la web de Gitlab. Una vez que ya estamos registrados y logados hay que

crear un proyecto. Para ello se pulsa en “Projects” y después en “New project”.

Figura 2-28: Gitlab Nuevo proyecto.

Tras esto, se le da un nombre al proyecto, una descripción y un nivel de visibilidad, en este caso se ha elegido

privado y se pulsa en el botón “Create Project”

2.8.1.2 Creación de la clave SSH

El objetivo de todo esto es poder subir el código directamente desde el Eclipse. Para realizar esto se necesita

una clave SSH que identificará al ordenador que se va a usar. El protocolo SSH permite que el usuario pueda

conectarse al servidor remoto de manera segura sin necesidad de escribir cada vez el usuario y la contraseña.

Para crear una clave SSH hay que usar la línea de comandos de Windows y ejecutar la siguiente instrucción

cambiando el email por el de la persona que va a usarlo.

ssh-keygen -t rsa -C "[email protected]" -b 4096

Tras esto se habrá creado la clave en la carpeta .ssh dentro de la carpeta de usuario. La clave SSH se podrá

copiar ejecutando la siguiente orden cambiando userprofile por el nombre del usuario:

type %userprofile%\.ssh\id_rsa.pub | clip

Después de esto, en la web de Gitlab, hay que pegar la clave copiada en el campo “Key” de la pestaña “SSH

Page 38: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

Tecnologías y entornos de trabajo

38

Key” en “User Settings” y pulsar “Add key”.

Figura 2-29: Añadir Key SSH en Gitlab

En este momento ya se ha configurado la clave SSH en la web de Gitlab, a continuación, se va a indicar cómo

se configura la clave SSH en Eclipse.

2.8.1.3 Configurar Eclipse

Inicialmente hay que comprobar si Eclipse posee el plugin de Git llamado EGit. En caso de que no estuviera

instalado habrá que instalarlo desde el MarketPlace

Page 39: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

39

Uso de sensores ANT+ en aplicación de entrenamiento personalizado

Figura 2-30: EGit Eclipse Marketplace

Una vez que se ha instalado el plugin para Git hay que configurar la clave SSH, para ello hay que añadir la

ubicación de los ficheros de claves creados previamente en la pestaña de configuración SSH2 como se muestra

a continuación.

Figura 2-31: Configurar clave SSH en Eclipse

Se va a suponer que nuestro proyecto para la aplicación Android ya está creado en Eclipse. Ahora se clona el

repositorio de Gitlab en el ordenador. Se copia la url https del repositorio de la web de Gitlab y se realiza la

clonación del repositorio en la pestaña de Git de Eclipse como muestra las dos siguientes imágenes.

Figura 2-32: Url del repositorio Gitlab

Page 40: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

Tecnologías y entornos de trabajo

40

Figura 2-33: Clonar repositorio Git

El siguiente paso es entonces asociar el proyecto con el proyecto del repositorio creado en Gitlab. En Eclipse y

sobre el nombre del proyecto se pulsa el botón derecho y se elige “Team” -> “Share Project” y se configura el

repositorio como se nuestra a continuación.

Figura 2-35: Configuración del repositorio Git

Figura 2-34: Compartir proyecto en Eclipse

Page 41: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

41

Uso de sensores ANT+ en aplicación de entrenamiento personalizado

El último paso sería hacer un commit de nuestro proyecto para que todo se suba al repositorio. Se selecciona

“Team” -> “Commit”, se eligen todos los ficheros en la ventana de “Git Staging” y con el botón derecho se

pulsa sobre “Add to Index”. Tras pulsar en “Commit and Push” todos los ficheros se habrán subido al

repositorio.

Figura 2-36: Commit and Push

2.9 Google Play Services

En la aplicación se va a hacer uso del mapa de Google Maps para indicar el recorrido del atleta en caso de que

se haya marcado la opción de guardar la localización durante el ejercicio. Para poder usarlo hay que añadir

Google Play Services al proyecto.

Los pasos a seguir son los siguientes:

Abrir SDK Manager y comprobar que Google Play Services está instalado. En caso de que no esté

instalado, habrá que instalarlo.

Figura 2-37: SDK Manager Google Play Services

Integrar Google Play Services a la aplicación.

Google Play Services es un proyecto librería, por lo tanto, se va a importar al workspace.

Se busca la carpeta de ubicación del SDK. En Eclipse se puede usar “Windows”-> “Preferentes” ->

“Android”.

Page 42: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

Tecnologías y entornos de trabajo

42

Una vez en la carpeta de SDK se copia la carpeta /extras/google/google_play_services/libproject/ y se

pega en el workspace.

Tras esto se importa como un proyecto Android al Workspace. “File” -> “Import” -> “Android” ->

“Existing Android Code into Workspace”.

El último paso es referenciar la librería Google play Services a nuestra aplicación. Para ello se

selecciona el proyecto con el botón derecho -> “Properties” -> “Android” y en la sección de abajo

donde pone “library” se añade la librería de Google Play Services.

Figura 2-38: Añadir librería Google Play Services al proyecto

2.9.1 Creation de una API-KEY

Una vez que se ha importado la librería al proyecto se necesita una clave para que la API de Google Maps

responda las peticiones de nuestra aplicación.

Inicialmente se tiene que buscar el archivo de depuración de depósito de claves que se crea la primera vez que

se compila el proyecto, normalmente se genera en la ruta “C:\Users\your_user_name\.android\”.

Ahora hay que visualizar la huella digital del certificado de depuración ejecutando el comando:

keytool -list -v -keystore [STORE FILENAME] -alias [KEY NAME] -storepass

[STORE PASSWORD] -keypass [KEY PASSWORD]

en la siguiente ruta “C:\Program Files (x86)\Java\jdk[VERSION]\bin\keytool.exe”.

Se debería obtener un resultado similar a lo que indica la imagen, donde la línea que empieza por SHA1 es la

huella digital.

Page 43: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

43

Uso de sensores ANT+ en aplicación de entrenamiento personalizado

Figura 2-39: Certificado de depuración

Una vez que ya se tiene la huella es necesario crear un proyecto en la consola de la API de Google. Para ello se

accede a la siguiente url

https://console.developers.google.com/

Se pulsa en “Create Project”, en la siguiente venta se le asigna un nombre y se pulsa en “Create”.

Figura 2-40: Creación de proyecto en la consola Google API

A continuación, se elige “Google Maps Android API” y se pulsa “ENABLE”.

Figura 2-41: Habilitar Google Maps API

En este momento se ha creado un proyecto Google Maps Android API v2, pero no se podrá usar hasta que no

se creen las credenciales.

Page 44: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

Tecnologías y entornos de trabajo

44

El siguiente paso es pulsar sobre “Credentials”, después sobre “Create Credentials” y API key.

Figura 2-42: Creación API Key 1

Ahora aparecerá la API Key y se seleccionará “RESTRICT KEY”.

Figura 2-43: Creación API Key 2

Lo último que quedaría sería elegir “Android apps” y añadir el nombre del paquete de nuestra aplicación

Android y la huella digital que se obtuvo anteriormente.

Figura 2-44: Creación API Key 3

Page 45: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

45

Uso de sensores ANT+ en aplicación de entrenamiento personalizado

Ya estaría todo configurado en la parte de la consola de Google API. El último paso sería añadir en el fichero

AndroidManifest la API key.

Figura 2-45: API Key en el fichero AndroidManifest.xml

Page 46: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

46

3 PERSISTENCIA DE DATOS

n este capítulo se va a explicar y detallar cómo se ha realizado la persistencia de los datos en la

aplicación Android. Como ya se comentó en los capítulos anteriores se ha usado SQLite como

tecnología para el almacenamiento de datos, ya que se ha considerado que es la más adecuada.

3.1 Estructura de la base de datos

Para guardar los distintos datos que requiere la aplicación se han creado las 5 tablas siguientes:

3.1.1 IdRuta

En esta tabla se inserta un registro cada vez que se crea una ruta o ejercicio nuevo. Primero se consulta cuál es

el último id almacenado para el tipo de ruta correspondiente y se inserta el siguiente id.

Los campos que tiene la tabla son:

_ID: es un entero autoincremental y primary key, se va incrementando cada vez que insertamos un

registro en la tabla.

IDRUTA: es un entero que identifica la ruta dentro de un tipo. Por ejemplo, si hay dos rutas de

bicicleta, una tendrá el idruta = 1 y la otra el idruta = 2.

TIPO: campo de tipo String que indica el tipo de la ruta que se ha insertado. Sus valores posibles

serán carrera, bicicleta y pulsómetro.

FECHA: este campo de tipo Date contendrá la fecha en la cual se ha insertado.

GPS: es un campo de tipo boolean e indica si se han guardado las coordenadas GPS de la ruta

correspondiente. Los valores posibles son “1” si tiene coordenadas GPS o “0” si no se han guardado.

A continuación, se muestran registros de la tabla idRuta.

E

-

Page 47: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

47

Uso de sensores ANT+ en aplicación de entrenamiento personalizado

Figura 3-1: Ejemplo de registros en la tabla idRuta

Como se puede apreciar, hay 4 registros guardados, dos de bicicleta, uno de carrera y otro de pulsómetro. El

campo _id indica el orden en el que se han insertado en la tabla, idRuta el identificador para el tipo de ruta y el

último campo si se han guardado las ubicaciones, en este caso sólo para el primer ejercicio de bicicleta se han

guardado.

3.1.2 Carrera

Esta tabla contendrá toda la información relacionada con el modo carrera. Si se ha elegido que se guarde en la

base de datos se insertará un registro cada 60 segundos.

Los campos que tiene la tabla son los siguientes:

_ID: es un entero autoincremental y primary key, se va incrementando cada vez que insertamos un

registro en la tabla.

VELOCIDAD: campo de tipo entero que almacena la velocidad instantánea en m/s que devuelve el

sensor ANT+.

DISTANCIA: campo de tipo entero que contendrá la distancia recorrida hasta el momento. Se

almacena en metros.

PASOS: campo de tipo entero que indica el número de pasos dados en el instante que se recoge el

dato del sensor.

TIEMPO: campo de tipo entero que indica el tiempo empleado en realizar la ruta o ejercicio.

IDRUTA: es un entero que identifica la ruta dentro de un tipo, en este caso dentro del tipo carrera.

ORDEN: entero que representa el orden con el que se han guardado los datos.

FECHA: este campo contendrá la fecha en la cual se ha insertado el dato.

.

Como se muestra en la siguiente imagen, se han insertado 3 registros de la tabla carrera, estos registros

corresponden con el almacenamiento de datos de datos de velocidad, tiempo, distancia y pasos para la carrera

1, con fecha 23 de agosto de 2016 y con el orden que indica el campo correspondiente.

Figura 3-2: Ejemplo de registros en la tabla carrera

3.1.3 Bicicleta

También se insertará un registro cada 60 segundos si se ha elegido la opción correspondiente, contendrá toda

la información necesaria para el modo bicicleta.

Los campos siguientes son los que tiene la tabla:

_ID: es un entero autoincremental y primary key, se va incrementando cada vez que insertamos un

registro en la tabla.

VELOCIDAD: campo de tipo entero que almacena la velocidad instantánea en m/s que devuelve el

Page 48: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

Persistencia de datos

48

sensor ANT+.

DISTANCIA: campo de tipo entero que contendrá la distancia recorrida hasta el momento con la

bicicleta. Se almacena en metros.

CADENCIA: campo de tipo entero que indica la cadencia de pedaleo que se tiene en el instante que

se recoge el dato del sensor.

TIEMPO: campo de tipo entero que indica el tiempo empleado en realizar la ruta o ejercicio.

ID_RUTA: es un entero que identifica la ruta dentro de un tipo, en este caso dentro del tipo bicicleta..

ORDEN: entero que representa el orden con el que se han guardado los datos.

FECHA: este campo contendrá la fecha en la cual se ha insertado el dato.

A continuación, se muestra cómo se ha insertado la información en la tabla bicicleta. Como se puede ver la

tabla bicicleta contiene 8 registros para dos rutas distintas idRuta=1 e idRuta=2. El primer ejercicio se realizó

el día 9 de agosto del 2016 y el otro el día 23 de agosto. También se puede apreciar el tiempo, la velocidad y la

distancia en cada instante.

Figura 3-3: Ejemplo de registros en la tabla bicicleta

3.1.4 Pulsómetro

Es la tabla para los datos del pulsómetro, se insertará toda la información relacionada con el pulso del atleta

que se obtiene del sensor ANT+. El intervalo de tiempo entre una inserción y otra será de 60 segundos.

Los campos que tiene la tabla son:

_ID: es un entero autoincremental y primary key, se va incrementando cada vez que insertamos un

registro en la tabla.

PULSO: indica en números enteros el pulso actual del atleta

PULSO MEDIO: entero que muestra el pulso medio del atleta a lo largo de todo el ejercicio.

LATIDOS: número de latidos del atleta.

TIEMPO: campo de tipo entero que indica el tiempo empleado en realizar la ruta o ejercicio.

ID_RUTA: es un entero que identifica la ruta dentro de un tipo, en este caso dentro del tipo

pulsómetro.

ORDEN: entero que representa el orden con el que se han guardado los datos.

FECHA: este campo contendrá la fecha en la cual se ha insertado el dato.

En los 3 registros que se muestran a continuación de la tabla pulsómetro, puede verse que el pulso del atleta se

ha mantenido constante en 72 pulsaciones por minuto durante los tres primeros minutos del ejercicio.

Page 49: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

49

Uso de sensores ANT+ en aplicación de entrenamiento personalizado

Figura 3-4: Ejemplo de registros en la tabla pulsómetro

3.1.5 GPS

Es la tabla que contendrá los datos de la ubicación GPS del atleta durante un ejercicio. La toma de datos se

realizará cada 60 segundos y se insertará en la tabla la siguiente información:

_ID: es un entero autoincremental y primary key, se va incrementando cada vez que insertamos un

registro en la tabla.

IDENTIFICADOR: es un entero que identifica el identificador de la ruta.

RUTA: campo de tipo String que indica el tipo de la ruta que se ha insertado. Sus valores posibles

serán carrera, bicicleta y pulsómetro.

FECHA: este campo contendrá la fecha en la cual se ha insertado.

LATITUD: valor latitud de la ubicación del atleta.

LONGITUD: valor longitud de la ubicación del atleta.

ORDEN: orden en el que se han tomado los datos.

Como se puede ver en la siguiente imagen, en la tabla GPS se han guardado las dos primeras coordenadas de

un ejercicio de bicicleta con identificador 1.

Figura 3-5: Ejemplo de registros en la tabla GPS

3.2 Código y clases

Se han creado tres clases para la creación, gestión y comunicación con la base de datos SQLite

3.2.1 AtletaReaderDbHelper.java

Esta clase contiene los métodos para la inicialización de la base datos ya que extiende la clase

SQLiteOpenHelper. Se ha sobreescrito el método onCreate el cual ejecutará las querys para la creación de las

distintas tablas. Estas querys están definidas en la clase DataSource.java.

3.2.2 DataSource.java

Dentro de esta clase se han definido todos los métodos necesarios para la gestión de las tablas. A continuación,

se van a detallar todos los métodos y query usados para las tablas:

Creación: para cada tabla se ha creado una variable de tipo String la cual contendrá la query a

ejecutar para la creación de la tabla. La query comienza con el comando “create table” tras esto se

pone el nombre de la tabla y el nombre y tipo de cada columna.

Page 50: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

Persistencia de datos

50

Figura 3-6: Código para creación de la tabla

Guardado de registros: el método que inserta los valores en la base de datos recibe un objeto, en este

caso del tipo Carrera, del cual recoge los datos y lo inserta en la base de datos a través del método

insert de la clase AtletaReadearDbHelper, al cual se le ha de pasar el nombre de la tabla y un objeto

ContentValues que contendrá todos los valores necesarios.

Figura 3-7: Código para el guardado de registros en una de las tablas

Recoger todos los registros: se usa el método rawQuery, devolverá un cursor con todos los registros

para la tabla solicitada.

Figura 3-8: Código para recoger los datos de una de las tablas

Borrado de registros

Figura 3-9: Código para el borrado de todos los registros de una de las tablas

3.2.3 CursorToModel.java

Esta clase es la encargada de pasar los datos obtenidos tanto del sensor como de la base de datos al modelo de

datos creado. Cada tabla posee una clase java en la que se recogen los datos. Por ejemplo, la tabla carrera

posee una clase llamada Carrera.java que contendrá los datos correspondientes.

Page 51: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

51

Uso de sensores ANT+ en aplicación de entrenamiento personalizado

Para todas las tablas tenemos dos métodos, uno para recoger datos y otro para insertar datos.

Métodos get: se le pasan una serie de parámetros necesarios para el filtrado de la consulta y tras

realizar la consulta en la base de datos devuelven una lista de objetos.

Figura 3-10: Código del método get para la tabla carrera

Métodos insert: se le pasa toda la información obtenida por el sensor, crea el objeto correspondiente,

le establece los valores (mediante métodos set) y llama al método para realizar el insert.

Figura 3-11: Código del método insert para la tabla carrera

Page 52: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

52

4 ESTRUCTURA Y CÓDIGO

n este capítulo se va a explicar el código y la estructura de la aplicación. Se hará un recorrido por los

paquetes y se irá explicando cada clase contenida en ellos, resaltando las partes del código más

importantes de cada uno.

4.1 Estructura del código de una aplicación Android

La estructura de la aplicación Android está compuesta principalmente del código, librerías, vistas, recursos y el

Android Manifest. A continuación, se va a detallar cada parte:

Directorio src: Aquí está ubicada toda la lógica de la aplicación cuya programación está realizada en

java. Dentro de ella se han definido distintos paquetes para diferenciar las pantallas y la funcionalidad.

Directorio res: Dentro de este directorio se encuentran los ficheros de recursos necesarios para la

aplicación, imágenes, estilos… divididos en varias subcarpetas:

o Values: suele contener los ficheros xml para definir las constantes y estilos.

o Layout: aquí se encuentran los ficheros xml para definir la parte visual de las distintas

pantallas de la aplicación.

o Drawable: están alojadas las imágenes, divididas en subcarpetas dependiendo del tamaño y

la resolución de la misma.

Directorio bin: Contiene los ficheros que genera la propia aplicación al traducir de *.java a *.class y

luego a los *.dex que usa Android.

Directorio gen: Dentro de él se encuentra el fichero R.class que posee todos los identificadores de los

recursos usados en la aplicación.

Directorio lib: Contiene las librerías exportadas que se necesitan en la aplicación.

E

-

Page 53: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

53

Uso de sensores ANT+ en aplicación de entrenamiento personalizado

Android Manifest: es el fichero de configuración de la aplicación, se usa para definir todos los

permisos que necesita, así como para definir todas las actividades que se han creado.

4.2 Código

A continuación, se van a detallar las partes más importantes del código de la aplicación. En caso de que se

necesite más detalle del código se podrá consultar el Anexo A.

4.2.1 Carpeta src

4.2.1.1 Paquete test.DroidLogin.sqlite

Dentro de este paquete se han creado 3 clases necesarias para el uso de la base de datos. Todo el detalle

relacionado con estas clases está definido en el capítulo 3, donde se explica la base de datos.

4.2.1.2 Paquete test.DroidLogin.carrera

Contiene dos clases, una es el modelo para guardar los datos(Carrera.java) y la otra es donde están todos los

métodos y variables necesarias para el correcto funcionamiento de la pantalla del modo

Carrera(ActivityCarrera.java).

ActivityCarrera: El objetivo de esta pantalla es recoger la información del sensor ANT+ (Stride

Based Speed & Distance), mostrar la información y realizar si fuera necesario el guardado de los datos

en la base de datos, tanto de los datos del sensor como la ubicación GPS.

Para la realización de cada pantalla en Android se debe crear lo que se denomina Activity (actividad),

por lo tanto, la clase ActivityCarrera va a extender de la clase Activity de Android.

Un Activity es una clase donde se muestran Views(vistas) para generar la interfaz de usuario y donde

se responden a eventos que se realicen en ella. La parte donde está definida la interfaz de usuario es un

fichero xml ubicado en la carpeta RES y donde se responden a los eventos de la clase java ubicada en

la carpeta SRC.

Page 54: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

Estructura y código

54

Figura 4-1: Activity Carrera

Volviendo a la clase ActivityCarrera, inicialmente en el método onCreate se definen las variables,

botones, cajas de textos, hilos, checkbox... de los cuales se van a destacar los siguientes:

Hilo t: este hilo se va a usar para cambiar cada 10 segundos el dato mostrado en la parte principal de la

pantalla. Los datos que se mostrarán serán velocidad, distancia, tiempo y pasos.

Hilo t2: como se ha comentado anteriormente, se han creado varios checkbox, uno de ellos es para

indicar que se desea guardar los datos del sensor. Este hilo comprueba cada 60 segundos si se ha

marcado el checkbox, y si es así se inserta la información en la base de datos. En caso de que sea el

primer dato guardado para ese ejercicio insertará también un registro en la tabla idRuta para añadir ese

nuevo ejercicio a la lista de ejercicios guardados.

IpluginAccessResultReceiver <AntPlusStrideSdmPcc>: Este objeto es el encargado de recoger la

información del sensor ANT+, una vez que se ha recibido información del sensor el método

onResultReceived comprueba el código recibido, si no es correcto se mostrará un mensaje indicando

el error, y si es correcto se llama a subscribeToEvents donde se realiza la suscripción de los datos que

se desea recoger. En este caso se han elegido velocidad, distancia, pasos, tiempo.

Una vez que ya se han definido todos los componentes necesarios se debe realizar la conexión con el

sensor, esta acción se hace mediante el método requestAccess del objeto AntPlusStrideSdmPcc como

se muestra a continuación.

Figura 4-2: Código de conexión con el sensor

La clase ActivityCarrera también contiene otros métodos entre los cuales cabe destacar

establecerAlarmaClick el cual será llamado cuando se active el checkbox para guardar los datos de

GPS. Con este método conseguimos programar una alarma que ejecutará una acción transcurridos 60

segundos.

Para realizar esta tarea periódica se usa el componente de Android AlarmManager y el

BroadcastReceiver. Como se muestra a continuación se define la alarma a la cual se le indica, entre

Page 55: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

55

Uso de sensores ANT+ en aplicación de entrenamiento personalizado

otras cosas, que ejecute la clase MyReceiver cuando se cumplan los 60 segundos, en ella se guardará

la ubicación actual del atleta. En los puntos posteriores se detallará la clase MyReceiver más

detenidamente.

Figura 4-3: Código para establecer una alarma

Carrera: esta es la clase que se utiliza para guardar los datos que se van a recoger o que se van a

insertar en la tabla carrera de la base de datos. Por lo tanto, tiene definidas las variables y los métodos

getters y setters de todos los datos necesarios (id, velocidad, distancia, pasos, tiempo, fecha, idRuta,

orden).

4.2.1.3 Paquete test.DroidLogin.bicicleta

Dentro de este paquete se encuentran dos clases ActivityBicicleta y Bicicleta que se van a detallar a

continuación:

ActivityBicicleta: esta clase es similar a la descrita anteriormente(ActivityCarrera). Con la diferencia

que se conecta al sensor ANT+ (Bike Speed & Cadence) y que en vez de mostrar los pasos muestra la

cadencia del pedaleo.

Bicicleta: es el modelo para la tabla bicicleta de la base de datos.

4.2.1.4 Paquete test.DroidLogin.pulsometro

Este paquete similar a los anteriores posee dos clases, una que será el modelo para la tabla correspondiente en

la base de datos y otra clase que contendrá los métodos necesarios para la pantalla que muestra el pulso del

atleta.

ActivityPulsometro: Como se muestra en la figura 4-4, con esta clase se consigue mostrar en tiempo

real el pulso del atleta en un gráfico. Para ello extiende la clase Activity y se crean todos los objetos y

variables necesarios, siendo los más interesantes de comentar el objeto para el gráfico y el hilo para

insertar los datos y el componente para recoger los datos del sensor.

Gráfico: como se indicó en el capítulo 2, para el gráfico se ha usado la librería GraphView. Una vez

creado el objeto se configura, primero se asocia al objeto de la parte visual(layout), se le asignan los

tamaños de los ejes y el color.

Para añadirle los valores, se crea el objeto series, el cual se le irá actualizando el valor cada vez que se

reciba información del sensor. Ya que el sensor envía información cada corto periodo de tiempo, se

actualizará la información del gráfico cada 10 datos. Una vez que se alcancen los 100 valores

añadidos al gráfico se borrará y se comenzará desde el principio.

Hilo t2: este hilo se usa para insertar la información en la base de datos en caso de que se haya

marcado el checkbox de guardado de datos. Su funcionamiento es similar al comentado en los puntos

anteriores.

Page 56: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

Estructura y código

56

IpluginAccessResultReceiver<AntPlusHeartRatePcc>: Es el componente con el que se consigue

recoger la información del pulsómetro ANT+, similar al de las pantallas anteriores. Inicialmente se

comprueba el código recibido, si es incorrecto se mostrará un mensaje indicando el error y si es

correcto se llamará a la función para suscribir los datos (subscribeToEvents).

Activity_AsyncScanPulsometro: Esta actividad es la encargada de conectarse al pulsómetro ANT, no

se va a detallar ya que se ha obtenido de la API de ANT+.

Pulsómetro. Esta clase posee las variables y los métodos getters y setters de todos los datos

necesarios para recoger o insertar información en la base de datos. Es el modelo de la tabla

pulsómetro.

Figura 4-4: Activity pulsómetro

4.2.1.5 Paquete test.DroidLogin.grafico

Contiene dos clases, el modelo de la tabla idRuta y la clase java para la pantalla de Gráfico.

ActivityGrafico: Con esta actividad se muestra en un gráfico distintos datos de los ejercicios

realizados por el atleta. Para ello se han definido inicialmente tres combos(spinners): intervalo,

ejercicios y datos. El combo intervalo tendrá varios valores cargados, tras seleccionar uno de ellos se

cargará el combo de ejercicios con los ejercicios que se tienen datos en la base de datos para ese

intervalo de tiempo y el tipo correspondiente. El último combo se cargará con valores en función del

tipo de ejercicio que se esté mostrando (bicicleta, carrera, pulsómetro). A continuación, se muestra el

método en el que se realiza estas acciones de los combos.

Page 57: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

57

Uso de sensores ANT+ en aplicación de entrenamiento personalizado

Figura 4-5: Código para la carga de los combos

Para actualizar los valores en el gráfico se usa el botón “Actualizar Gráfico” una vez que se pulsa el

botón se recogen los valores de los combos y se busca en la base de datos la información, la cual se

añade a la serie del gráfico.

Page 58: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

Estructura y código

58

Figura 4-6: Código para añadir elementos al gráfico

IdRuta: Es la clase que contiene las variables y los métodos getters y setters para recoger los datos de

la tabla idRuta.

4.2.1.6 Paquete test.DroidLogin.gps

Este paquete contiene todo lo necesario para recoger los datos GPS, así como mostrarlos en un mapa de

Google Maps. Se van a detallar a continuación todas las clases usadas.

ActivityGPS: Esta clase es usada para el funcionamiento de la pantalla GPS, en la cual podremos

elegir el ejercicio del cual queremos ver las ubicaciones. Contiene dos combos, uno de intervalo y otro

de ejercicios de los cuales hay datos de GPS guardados en la base de datos, y un botón para acceder a

la siguiente pantalla que mostrará las ubicaciones en un mapa.

Al pulsar el botón se recoge las listas de ubicaciones y se le pasa a la siguiente actividad que mostrará

el mapa.

Figura 4-7: Código del botón para acceder al mapa

Page 59: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

59

Uso de sensores ANT+ en aplicación de entrenamiento personalizado

ActivityMapa: Básicamente, lo que se consigue con esta actividad es mostrar una lista de marcadores

en un mapa usando la API de Google Maps. Se crea un objeto GoogleMap al cual se le van añadiendo

los marcadores obtenidos de la actividad anterior.

GPSTracker: Esta clase es usada para detectar si está activado el GPS o no, y para recoger la

ubicación GPS.

MyReceiver: Como se comentó cuando se explicó la clase ActivityCarrera, se programa una alarma

para que se ejecute la clase MyReceiver 60 segundos y recogerá e insertará la información de la

ubicación en la base de datos. Una vez realizado esto, se programa de nuevo la alarma actualizando

los datos que son necesarios, en caso de que no hubiera que actualizar los datos no haría falta

actualizar la alarma.

Figura 4-8: Código para configurar la alarma dentro de la clase MyReceiver

4.2.1.7 Paquete test.DroidLogin.utils

El paquete contiene la clase Utils, la cual tiene varios métodos que serán usados para distintas acciones

comunes en toda la aplicación.

En este caso se usan para la conversión de tiempo, velocidad, distancia… Por ejemplo, al método

conversorTiempo se le pasa un entero con el número de segundos y devuelve un String con el tiempo en horas

minutos y segundos, el cual será el que se usa para mostrar el tiempo en varias partes de la aplicación.

Page 60: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

Estructura y código

60

Figura 4-9: Código de conversión de tiempo

4.2.2 Directorio res

Como se ha comentado anteriormente este directorio posee los recursos para la aplicación, entre ellos los más

importantes son los layouts, que es el componente que representa el diseño de la interfaz de usuario de

componentes gráficos, como son las Activities.

Ya que todos los layouts creados son similares se va a explicar uno de ellos de manera detallada y esto será

extensible a los demás.

Antes de empezar a detallar los layouts es conveniente explicar qué son los Views o ViewGroups ya que todos

los layouts están formados de ellos.

View: Una view es un objeto cuya clase es android.view.View. Es una estructura de datos cuyas

propiedades contienen los datos de la capa, la información específica del área rectangular de la

pantalla y permite establecer el layout.

Viewgroups: su clase es android.view.Viewgroup, es un objeto especial de view cuya función es

contener y controlar la lista de views y de otros viewgroups. Los viewgroups te permiten añadir

estructuras a la interfaz y acumular complejos elementos en la pantalla que son diseccionados por una

sola entidad.

Los views y viewgroups deben estar contenidos en los layouts, los cuales contienen otros elementos presentes

en una vista. Dentro de cada uno de los layouts se ponen los elementos necesarios, para estructurar la

pantalla de la manera deseada.

Dependiendo del posicionamiento en la pantalla existen varios tipos de layout:

LinearLayout: sus elementos hijos pueden ser otros layouts así como views y viewgroups, los alinea

en una única dirección, horizontal (por defecto) o vertical.

RelativeLayout: los elementos están colocados en posiciones relativas a los otros.

AbsoluteLayout: la ubicación de los elementos se realiza en posiciones absolutas donde la posición

inicial es la parte superior izquierda de la pantalla.

TableLayout: es usado para poner los elementos en forma de tabla, dentro del cual se usa el elemento

TableRow para definir cada fila.

FrameLayout: Es un marcador de posición que puede usarse para mostrar una única vista.

ScrollView: Es un caso particular del FrameLayout, permite el desplazamiento de la pantalla cuando

hay elementos que ocupan más del espacio físico de la misma.

Page 61: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

61

Uso de sensores ANT+ en aplicación de entrenamiento personalizado

El nombre del fichero es activity_carrera.xml y corresponde con la actividad ActivityCarrera.

Inicialmente se tiene un elemento raíz, ScrollView dentro del cual se incluye el elemento LinearLayout de

orientación vertical y dentro de éste 4 LinearLayouts con el que se conseguirá disponer de 4 filas de elementos.

Cada una de estas filas dispone a su vez de otros elementos hijos para conseguir la disposición de elementos

deseada como se muestra a continuación.

Figura 4-10: Estructura del layout

Dentro de cada elemento hay que definir las características de los mismos, para ello se usan los atributos y

parámetros. Se van a detallar los más importantes que se han usado:

Layout_width: define el ancho del view.

Layout_height: define la altura del view

Background: es usado para indicar el fondo usado en esa pantalla.

Orientation: indica la orientación del layout, por ejemplo, en el LinearLayout puede ser horizontal o

vertical.

Id: representa un identificador único para cada elemento. Lo que permite obtener una referencia de

cada objeto de forma específica. Este identificador se usa para referenciar cada componente en la clase

java en caso de que se quiera modificarlo durante la ejecución de la aplicación.

4.2.3 Directorio lib

Esta carpeta contiene las librerías necesarias para el correcto funcionamiento de la aplicación. Las librerías

son:

Librería general de Android.

GraphView: librería usada para los gráficos.

ANT+: librería para ANT+.

Google Play Services: es usada para mostrar el mapa de Google Maps.

Page 62: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

Estructura y código

62

4.2.4 Android Manifest

Este fichero xml contiene las configuraciones para los permisos necesarios en la aplicación, así como la

definición de todas las actividades y otros componen.

Figura 4-11: Permisos necesarios para la aplicación

Los permisos requeridos para el correcto funcionamiento de la aplicación son:

INTERNET: permite a la aplicación acceso a internet.

VIBRATE: es posible hacer vibrar al dispositivo.

ACCESS_NETWORK_STATE: usado para conocer el estado de la conexión.

ACCESS_FINE_LOCATION: con este permiso se puede obtener la ubicación del dispositivo

READ_GSERVICES: usado para poder ver el mapa de Google maps dentro de nuestra aplicación.

WRITE_EXTERNAL_STORAGE: permiso necesario para poder guardar datos de la aplicación en

la base de datos SQLite

WAKE_LOCK: permiso necesario para mantener “despierto al dispositivo y así obtener la ubicación

cada 60 segundos.

Page 63: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

63

5 MANUAL DE USUARIO

n este capítulo se va a explicar la nueva funcionalidad para la aplicación Android. Para ello, el usuario

debe contar con un dispositivo Android con la posibilidad de conectarse a los sensores ANT+ y con

antena GPS. En esta dirección web se muestra una lista de dispositivos que soportan la conexión con

sensores ANT+:

https://www.thisisant.com/directory/

La mayoría de los dispositivos Android ya disponen de antena GPS para su localización, por lo tanto, no se va

a indicar un listado de compatibles.

A parte del dispositivo Android el usuario debe poseer al menos uno de los tres sensores ANT+ que se puede

utilizar a partir de ahora en la aplicación:

Sensor de ritmo cardíaco o pulsómetro.

Sensor de velocidad y cadencia para bicicleta.

Sensor de velocidad y distancia para el modo carrera.

Otro de los requerimientos necesarios es que el dispositivo Android tenga instalada dos aplicaciones:

ANT+ Plugins Service: Esta aplicación es la que permite la comunicación con el sensor y debe estar

preinstalada por el fabricante si el dispositivo tiene la posibilidad de conectarse con los sensores

ANT+. En caso de que no esté se puede instalar desde la siguiente dirección:

https://play.google.com/store/apps/details?id=com.dsi.ant.plugins.antplus&hl=es

ANT+ Plugin Manager Launcher: Sirve para gestionar los dispositivos ANT+ que se han conectado.

Se pueden guardar, asignar un nombre, seleccionar una como predefinida. O en caso de que ya no se

use un dispositivo borrarlos. Se encuentra en la siguiente dirección:

https://play.google.com/store/apps/details?id=com.dsi.ant.plugins.antplus.managerlauncher&hl=es

E

-

Page 64: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

Manual de Usuario

64

5.1 Manual de usuario

Como ya se ha comentado en otros puntos, este proyecto es una ampliación de una aplicación creada por otro

compañero, por lo tanto, en este manual sólo se va a explicar la parte con las nuevas funcionalidades.

Una vez que el usuario ha iniciado sesión en la aplicación le aparecerá la siguiente pantalla.

Figura 5-1: Pantalla después del login

En ella se podrá elegir distintas opciones entre las cuales nos interesa el botón Entrenar. Una vez pulsado

veremos que nos aparecen cinco opciones, las tres últimas son las que nos conciernen en este proyecto, carrera,

bicicleta y pulsómetro.

Figura 5-2: Pantalla de selección del entrenamiento

Page 65: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

65

Uso de sensores ANT+ en aplicación de entrenamiento personalizado

5.1.1 Carrera

A esta pantalla se accede pulsando el botón correspondiente en la pantalla previa. Inicialmente se muestra una

pantalla la cual buscará el dispositivo ANT+ cercano. En caso de que en el primer intento no lo encuentre, se

puede pulsar el botón “Search Again” para que realice una nueva búsqueda.

Figura 5-3: Búsqueda del sensor para el modo carrera

Una vez encontrado aparecerá el identificador del sensor, tras pulsar sobre él se mostrará la opción para poder

guardarlo como dispositivo poniéndole un nombre. La próxima vez que se realice la búsqueda aparecerá su

nombre en vez del identificador. En el caso de ejemplo se ha guardado como Carrera.

Figura 5-4: Guardar el sensor de carrera en la lista de favoritos

Una vez que se ha guardado se mostrará la pantalla para el modo Carrera. En ella aparecerá en tiempo real la

información obtenida por el sensor. A continuación, se va a explicar cada elemento de la pantalla:

Page 66: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

Manual de Usuario

66

Figura 5-5: Pantalla modo carrera

1. El dato y valor en esta zona de la pantalla irá cambiando cada diez segundos para mostrar uno por uno el

valor de la velocidad, distancia, tiempo y pasos realizados hasta el momento.

2. Velocidad actual en Km/h.

3. Tiempo acumulado en horas, minutos y segundos.

4. Distancia recorrida hasta el momento en kilómetros y metros.

5. Número de pasos realizados.

6. Checkbox para guardar los datos en la base de datos.

Si durante el ejercicio se desea guardar la información para poder consultarla en cualquier momento se deberá

pulsar sobre checkbox correspondiente y aparecerá un mensaje indicando que se comienza a guardar la

información.

Figura 5-6: Mensajes para la grabación de datos

En el caso que se desee pausar sólo habrá que pulsar de nuevo el mismo checkbox y se mostrará también un

mensaje indicando que se pausa la grabación de datos.

7. Checkbox para guardar la ubicación en la base de datos.

Si se marca el checkbox, comenzará el guardado de las coordenadas GPS cada sesenta segundos para su

posterior consulta. Para ello el GPS debe estar activado en el dispositivo, si no aparecerá el siguiente mensaje

Page 67: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

67

Uso de sensores ANT+ en aplicación de entrenamiento personalizado

para activarlo.

Figura 5-7: Mensaje de aviso para activar el GPS

8. Botón para acceder a la pantalla de gráficos.

Cuando se pulsa este botón se accede a la pantalla en la cual se pueden ver los datos.

9. Botón para acceder a la pantalla de mapas.

Cuando se pulsa este botón se accede a la pantalla que muestra las posiciones en la cual ha estado ubicado el

atleta durante el ejercicio.

5.1.2 Bicicleta

Para acceder a esta pantalla hay que pulsar el botón de Bicicleta mostrado en la ilustración 5- 2. Igual que en el

caso anterior se mostrará una pantalla para buscar el dispositivo ANT+, en este caso será el sensor de bicicleta,

y se podrá guardar con el nombre que deseemos.

Figura 5-8: Búsqueda del sensor para el modo bicicleta

Page 68: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

Manual de Usuario

68

Figura 5-9: Guardar el sensor de bicicleta en la lista de favoritos

Figura 5-10: Pantalla modo bicicleta

Una vez que se ha seleccionado el sensor aparecerá en tiempo real la información obtenida por el sensor de

velocidad y cadencia de la bicicleta. A continuación, se va a explicar cada elemento de la pantalla:

1. El dato y valor en esta zona de la pantalla irá cambiando cada diez segundos para mostrar uno por uno el

valor de la velocidad, distancia, tiempo acumulado y la cadencia de pedaleo realizados hasta el momento.

2. Velocidad actual en Km/h.

Page 69: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

69

Uso de sensores ANT+ en aplicación de entrenamiento personalizado

3. Tiempo acumulado en horas, minutos y segundos.

4. Distancia recorrida hasta el momento en kilómetros y metros.

5. Cadencia de pedaleo.

6. Checkbox para guardar los datos en la base de datos.

Si durante el ejercicio se desea guardar la información para poder consultarla en cualquier momento se deberá

pulsar sobre checkbox correspondiente y aparecerá un mensaje indicando que se comienza a guardar la

información.

Figura 5-11: Mensajes para la grabación de datos

En el caso que se desee pausar sólo habrá que pulsar de nuevo el mismo checkbox y se mostrará también un

mensaje indicando que se pausa la grabación de datos.

7. Checkbox para guardar la ubicación en la base de datos.

Si se marca el checkbox, comenzará el guardado de las coordenadas GPS cada sesenta segundos para su

posterior consulta. Para ello el GPS debe estar activado en el dispositivo, si no aparecerá el siguiente mensaje

para activarlo.

8. Botón para acceder a la pantalla de gráficos.

Cuando se pulsa este botón se accede a la pantalla en la cual se pueden ver los datos.

9. Botón para acceder a la pantalla de mapas.

Cuando se pulsa este botón se accede a la pantalla que muestra las posiciones en la cual ha estado ubicado el

atleta durante el ejercicio.

5.1.3 Pulsómetro

A esta pantalla se accede pulsando el botón correspondiente en la pantalla previa. Inicialmente se muestra una

Figura 5-12: Mensaje de aviso para activar el GPS

Page 70: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

Manual de Usuario

70

pantalla la cual buscará el dispositivo ANT+ cercano.

Una vez encontrado aparecerá el identificador del sensor, tras pulsar sobre él accederemos a la pantalla donde

se muestra la información del pulsómetro en tiempo real.

A continuación, se va a explicar cada elemento de la pantalla:

Figura 5-13: Pantalla modo pulsómetro

1. Muestra un gráfico con las últimas pulsaciones y se le va añadiendo la pulsación actual cada segundo.

2. Pulso actual.

3. Tiempo durante el que se está midiendo el pulso.

4. Pulso medio.

5. Número de veces que se ha medido la pulsación.

6. Checkbox para guardar los datos en la base de datos.

Si durante el ejercicio se desea guardar la información para poder consultarla en cualquier momento se deberá

pulsar sobre checkbox y aparecerá un mensaje indicando que se comienza a guardar la información.

En el caso que se desee pausar sólo habrá que pulsar de nuevo el mismo checkbox y se mostrará también un

mensaje indicando que se pausa la grabación de datos.

Figura 5-14: Mensajes para la grabación de datos

Page 71: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

71

Uso de sensores ANT+ en aplicación de entrenamiento personalizado

7. Checkbox para guardar la ubicación en la base de datos.

Si se marca el checkbox, comenzará el guardado de las coordenadas GPS cada sesenta segundos para su

posterior consulta

Para ello el GPS debe estar activado en el dispositivo, si no aparecerá el siguiente mensaje para activarlo.

8. Botón para acceder a la pantalla de gráficos.

Cuando se pulsa este botón se accede a la pantalla en la cual se pueden ver los datos.

9. Botón para acceder a la pantalla de mapas.

Cuando se pulsa este botón se accede a la pantalla que muestra las posiciones en la cual ha estado ubicado el

atleta durante el ejercicio.

5.1.4 Gráfico

A esta pantalla se accede pulsando el botón gráfico de cada una de las pantallas que se han detallado

anteriormente (carrera, bicicleta, pulsómetro).

Figura 5-16: Botón para acceder al gráfico

El objetivo es mostrar la información obtenida de los ejercicios en un gráfico.

Figura 5-15: Mensaje de aviso para activar el GPS

Page 72: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

Manual de Usuario

72

Figura 5-17: Pantalla para mostrar los gráficos

Las distintas partes son:

1. Intervalo: se podrá seleccionar el rango de tiempo por el cual quiere que se busque los ejercicios para

mostrarlos en el gráfico.

2. Ejercicios: este combo mostrará el listado de ejercicios guardados en memoria según el intervalo de tiempo

elegido.

3. Datos a mostrar: en función de la pantalla por la que se ha accedido a los gráficos se podrá elegir una serie

de valores para representarlos en el gráfico. Sólo se podrá seleccionar y por lo tanto mostrar uno de ellos.

4. Botón 'Actualizar gráficos': una vez que se han elegido los combos anteriores se pulsará el botón para cargar

la información en el gráfico.

5. Gráfico: Contiene la información que se desea mostrar.

5.1.5 GPS

5.1.5.1 Pantalla de selección de ejercicio

Para acceder a la pantalla de mapa hay que pulsar el botón correspondiente en una de las pantallas carrera,

bicicleta o pulsómetro.

Figura 5-18: Botón para acceder a la pantalla que muestra el mapa

Page 73: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

73

Uso de sensores ANT+ en aplicación de entrenamiento personalizado

Una vez pulsado nos aparecerá pantalla de selección de ejercicio, en la cual habrá que elegir el ejercicio que

queremos que se muestre en el mapa. A continuación, se pasa a detallar las partes de esta pantalla:

1. Intervalo: Indica el rango de tiempo por el cual se buscarán los ejercicios que luego se van a mostrar en el

mapa.

2. Ejercicios: Se mostrará en este combo el listado de ejercicios guardados en memoria según el intervalo de

tiempo elegido.

3. Botón 'Mostrar Mapa': tras pulsar el botón la aplicación se dirigirá a la pantalla en la cual se mostrará un

mapa con la información de la ubicación durante el ejercicio.

Figura 5-19: Pantalla de selección de ejercicio

5.1.5.2 Pantalla de mapa

Tras seleccionar el ejercicio del cual se quiere obtener la ubicación y pulsar el botón 'Mostrar Mapa' aparecerá

un mapa de Google Maps en el que se podrá ver la posición en la que se encontraba el atleta en cada momento

del ejercicio como un marcador.

Page 74: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

Manual de Usuario

74

Figura 5-20: Pantalla de mapa

La información que se muestra en el marcador será primero el tipo de ejercicio, seguido por el número del

ejercicio, fecha y orden de la ubicación.

Figura 5-21: Detalle de la ubicación

Page 75: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

75

6 CONCLUSIONES

omo se puede apreciar en el presente proyecto, se ha realizado una ampliación de una aplicación

Android de entrenamiento personalizado con la posibilidad de recoger información de distintos sensores

ANT+ y del GPS. Se le ha añadido valor a la dicha aplicación ya que el usuario puede ahora conocer en

tiempo real su pulsación, su velocidad, distancia recorrida, étc… al realizar su ejercicio, así como guardar la

información para consultarla en el futuro o ver en un gráfico la evolución de su ejercicio. La aplicación ahora

puede ser más atractiva para los usuarios ya que el rango de posibilidades es más amplio.

A nivel personal y revisando los objetivos propuestos al comienzo del proyecto, veo que realizar el proyecto

me ha servido para mejorar mis cualidades con la programación de aplicaciones para dispositivos móviles, y

por consiguiente para otros lenguajes de programación similiares como Java, conocer con más detalle la

tecnología ANT+, así como otras tecnologías para el guardado de información en móviles como SQLite…

6.1 Puntos de mejora

Realizando los últimos cambios en el proyecto me vinieron a la mente distintas funcionalidades que podría ser

interesantes añadirlas a la aplicación. A parte de que es posible añadirle la posibilidad de recoger información

de otros sensores ANT+, también se le podría añadir la posibilidad de exportar los datos guardados en el

teléfono, ya sea para conservarlos o para compartirlos con otros usuarios.

Otras de las cosas que sería interesante incluir en futuras versiones es la posibilidad de usar simultáneamente

varios sensores ANT+, ya que actualmente sólo es posible usar al mismo tiempo el GPS y uno de los sensores

ANT+.

C

-

Page 76: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

76

BIBLIOGRAFÍA

[1] Descubriendo Gitlab - https://inlab.fib.upc.edu/es/blog/descubriendo-gitlab

[2] Video Youtube Gitlab CE tutorial - https://www.youtube.com/watch?v=0z28J0RfaJM

[3] Desarrollo de aplicaciones para Android - Joan Ribas Lequerica Editorial Anaya

[4] Página oficial de ANT + - https://www.thisisant.com

[5] Distintas consultas a la web https://stackoverflow.com/

[6] Web oficial de Android - https://developer.android.com/

[7] Add google play services to your project - https://suslovjb.wordpress.com/2013/09/01/how-to-add-google-

play-services-sdk-to-your-project-part-1/

[8] Tutorial de sqlite - http://www.hermosaprogramacion.com/2014/10/android-sqlite-bases-de-datos/

[9] Gestión de alarmas - http://www.carlos-garcia.es/tutorial/android-alarmas-alarmmanager

[10] SQLite - web oficial https://www.sqlite.org/cli.html

[11] Map android api https://developers.google.com/maps/documentation/android-api/

[12]https://developer.xamarin.com/guides/android/platform_features/maps_and_location/maps/obtaining_a_g

oogle_maps_api_key/

[13] https://developers.google.com/places/android-api/signup?hl=es-419

[14] Proyecto Fin de Carrera Aplicación Android para la rehabilitación física de usuario usando MySQL,

PHP y codificación JSON. Antonio J. Díaz Lora.

Page 77: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

77

Uso de sensores ANT+ en aplicación de entrenamiento personalizado

Page 78: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

78

ANEXO A: CÓDIGO JAVA Y XML

test.DroidLogin.sqlite

AtletaReaderDBHelper.java

Page 79: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

79

Uso de sensores ANT+ en aplicación de entrenamiento personalizado

CursorToModel.java

Page 80: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

Anexo A: Código Java y xml

80

Page 81: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

81

Uso de sensores ANT+ en aplicación de entrenamiento personalizado

Page 82: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

Anexo A: Código Java y xml

82

Page 83: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

83

Uso de sensores ANT+ en aplicación de entrenamiento personalizado

DataSource.java

Page 84: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

Anexo A: Código Java y xml

84

Page 85: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

85

Uso de sensores ANT+ en aplicación de entrenamiento personalizado

Page 86: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

Anexo A: Código Java y xml

86

Page 87: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

87

Uso de sensores ANT+ en aplicación de entrenamiento personalizado

test.DroidLogin.bicicleta

ActivityBicicleta.java

Page 88: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

Anexo A: Código Java y xml

88

Page 89: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

89

Uso de sensores ANT+ en aplicación de entrenamiento personalizado

Page 90: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

Anexo A: Código Java y xml

90

Page 91: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

91

Uso de sensores ANT+ en aplicación de entrenamiento personalizado

Page 92: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

Anexo A: Código Java y xml

92

Page 93: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

93

Uso de sensores ANT+ en aplicación de entrenamiento personalizado

Page 94: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

Anexo A: Código Java y xml

94

Bicicleta.java

Page 95: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

95

Uso de sensores ANT+ en aplicación de entrenamiento personalizado

Page 96: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

Anexo A: Código Java y xml

96

test.DroidLogin.carrera

ActivityCarrera.java

Page 97: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

97

Uso de sensores ANT+ en aplicación de entrenamiento personalizado

Page 98: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

Anexo A: Código Java y xml

98

Page 99: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

99

Uso de sensores ANT+ en aplicación de entrenamiento personalizado

Page 100: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

Anexo A: Código Java y xml

100

Page 101: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

101

Uso de sensores ANT+ en aplicación de entrenamiento personalizado

Carrera.java

test.DroidLogin.gps

ActivityGPS.java

Page 102: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

Anexo A: Código Java y xml

102

Page 103: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

103

Uso de sensores ANT+ en aplicación de entrenamiento personalizado

ActivityMapa.java

Page 104: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

Anexo A: Código Java y xml

104

GPS.java

a

Page 105: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

105

Uso de sensores ANT+ en aplicación de entrenamiento personalizado

GPSTracker.java

Page 106: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

Anexo A: Código Java y xml

106

MyReceiver.java

Page 107: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

107

Uso de sensores ANT+ en aplicación de entrenamiento personalizado

test.DroidLogin.grafico

ActivityGrafico.java

Page 108: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

Anexo A: Código Java y xml

108

Page 109: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

109

Uso de sensores ANT+ en aplicación de entrenamiento personalizado

Page 110: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

Anexo A: Código Java y xml

110

Page 111: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

111

Uso de sensores ANT+ en aplicación de entrenamiento personalizado

IdRuta.java

Page 112: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

Anexo A: Código Java y xml

112

test.DroidLogin.pulsometro

Activity_AsyncScanPulsometro.java

Page 113: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

113

Uso de sensores ANT+ en aplicación de entrenamiento personalizado

Page 114: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

Anexo A: Código Java y xml

114

Page 115: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

115

Uso de sensores ANT+ en aplicación de entrenamiento personalizado

ActivityPulsometro.java

Page 116: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

Anexo A: Código Java y xml

116

Page 117: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

117

Uso de sensores ANT+ en aplicación de entrenamiento personalizado

Page 118: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

Anexo A: Código Java y xml

118

Page 119: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

119

Uso de sensores ANT+ en aplicación de entrenamiento personalizado

Page 120: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

Anexo A: Código Java y xml

120

Pulsometro.java

Page 121: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

121

Uso de sensores ANT+ en aplicación de entrenamiento personalizado

test.DroidLogin.utils

Utils.java

Page 122: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

Anexo A: Código Java y xml

122

Layout

Activity_async_scan.xml

Page 123: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

123

Uso de sensores ANT+ en aplicación de entrenamiento personalizado

Activity_bicicleta.xml

Page 124: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

Anexo A: Código Java y xml

124

Page 125: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

125

Uso de sensores ANT+ en aplicación de entrenamiento personalizado

Page 126: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

Anexo A: Código Java y xml

126

Activity_carrera.xml

Page 127: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

127

Uso de sensores ANT+ en aplicación de entrenamiento personalizado

Page 128: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

Anexo A: Código Java y xml

128

Page 129: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

129

Uso de sensores ANT+ en aplicación de entrenamiento personalizado

Activity_gps.xml

Page 130: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

Anexo A: Código Java y xml

130

Activity_grafico.xml

Page 131: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

131

Uso de sensores ANT+ en aplicación de entrenamiento personalizado

Activity_map.xml

Activity_multidevice_filter.xml

Page 132: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

Anexo A: Código Java y xml

132

Activity_multidevice_scan.xml

Page 133: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

133

Uso de sensores ANT+ en aplicación de entrenamiento personalizado

Activity_pulsometro.xml

Page 134: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

Anexo A: Código Java y xml

134

Page 135: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

135

Uso de sensores ANT+ en aplicación de entrenamiento personalizado

Page 136: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

Anexo A: Código Java y xml

136

Layout_multidevice_searchresult.xml

Page 137: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

137

Uso de sensores ANT+ en aplicación de entrenamiento personalizado

AndroidManifest.xml

Page 138: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

Anexo A: Código Java y xml

138

Page 139: Proyecto Fin de Carrera - Universidad de Sevillabibing.us.es/proyectos/abreproy/12390/fichero/Juan+Coronel+Maraver+-+2017.pdfPara ello se le ha añadido a una aplicación Android de

139

Uso de sensores ANT+ en aplicación de entrenamiento personalizado

String.xml