1. Introducción
1.1. Motivación
1.2. Objetivos
1.3. Estructura de la Tesina
2. Marco Teórico
2.1. Introducción a la Ciencia Ciudadana
2.2. Clasificación de los Proyectos de Ciencia Ciudadana
2.3. Proyectos de Recolección
2.4. El método científico
2.5. Protocolo de recolección de muestras en proyectos de ciencia ciudadana
2.6. Ciencia ciudadana y dispositivos móviles
3. Frameworks para proyectos de ciencia ciudadana
3.1. Frameworks
3.1.1. Tipos de Frameworks
3.1.1.1. Frameworks de caja blanca
3.1.1.2. Frameworks de caja negra
3.2. Estado del arte
3.2.1. Sensr
3.2.2. Project Noah
3.2.3. EpiCollect
3.2.4. CitSci
3.2.5. Spotteron
3.2.6. Zooniverse
3.2.7. Conclusión
4. El entorno de Android
4.1. Activities
4.2. Fragments
4.3. Services
4.4. BroadcastReceivers
5. Samplers: Framework Android
5.1. Propuesta general
5.1.1. Descripción del problema
5.1.2. Alcance de la solución propuesta
5.1.3. Descripción de la solución propuesta: Samplers
5.2. Estructura e implementación del framework
5.2.1. Workflow, Step, StepFragment, StepResult, Sample
5.2.1.1. Workflow: el protocolo de recolección de las muestras
5.2.1.2. Step: el paso
5.2.1.3. StepFragment: la vista y controlador del Step
5.2.1.4. StepResult: el resultado de la ejecución de un Step
5.2.1.5. Sample: la Muestra
5.2.2. TakeSampleActivity
5.2.3. Persistencia local
5.2.4. Envío de muestras a servidor web
5.2.5. Identificación
5.2.6. Otras Activities de la app generada por Sampler
5.2.6.1. SamplersMainActivity
5.2.6.2. SamplesListActivity
5.2.6.3. HelpActivity
5.3. Configuración del framework
5.3.1. Archivo de configuración
5.3.2. Usando las clases
6. Instanciación y uso del framework
6.1. Instanciación manual
6.2. Instanciación usando el generador de clases de Gradle
6.3. Secciones del archivo
6.3.1. El objeto project
6.3.2. El objeto application
6.3.3. El objeto workflow
6.4. Mostrar Ayuda
6.4.1. Ayuda general
6.4.2. Ayuda puntual para cada Step
6.5. Usando identificación
6.5.1. Configurar identificación con el generador de clases de Gradle
6.5.2. Configurar identificación manualmente
6.5.3. Usando un método de identificación propio
6.5.3.1. Definiendo un Login Fragment propio
6.5.3.2. Definiendo una clase User propia
6.6. Los diferentes Steps y sus resultados (StepResult)
6.6.1. PhotoStep: Tomar una foto
6.6.1.1. PhotoStepResult: El resultado de Tomar una foto
6.6.2. SoundRecordStep: Grabar sonido
6.6.2.1. SoundRecordStepResult: El resultado de Grabar sonido
6.6.3. InformationStep: Mostrar información
6.6.3.1. InformationStepResult: El resultado de Mostrar información
6.6.4. SelectOneStep: Seleccionar una opción de un grupo de opciones
6.6.4.1. SelectOneStepResult: El resultado de Seleccionar una opción de un grupo de opciones
6.6.5. MultipleSelectStep: Seleccionar varias opciones de un grupo de opciones
6.6.5.1. MultipleSelectStepResult: El resultado de Seleccionar varias opciones de un grupo de opciones
6.6.6. LocationStep: Posicionar la muestra en el mapa con el GPS
6.6.6.1. LocationStepResult: El resultado de Posicionar la muestra en el mapa con el GPS
6.6.7. RouteStep: Grabar un recorrido en el mapa usando el GPS
6.6.7.1. RouteStepResult: El resultado de Grabar un recorrido en el mapa usando el GPS
6.6.8. InsertTextStep: Ingresar texto
6.6.8.1. InsertTextStepResult: El resultado de Ingresar texto
6.6.9. InsertDateStep e InsertTimeStep: Ingresar fecha y hora
6.6.9.1. InsertDateStepResult e InsertTimeStep: El resultado de Ingresar fecha y hora
6.6.10. Definir un nuevo Step, StepFragment y StepResult
6.6.10.1. Definir un nuevo Step
6.6.10.2. Definir un nuevo StepFragment
6.6.10.3. Definir un nuevo StepResult
7. Caso de uso
7.1. AppEAR
7.2. AppEar usando Samplers
7.3. Comparación y conclusión
8. Conclusiones y Trabajo Futuro
8.1. Conclusiones
8.2. Trabajo Futuro