Terminado

[Android Nativo] [Ampliación|Modificación] Aplicación de trabajo en campo

Publicado el 24 Enero, 2019 en Programación y Tecnología

Sobre este proyecto

Abierto

Descripción general:
1. El proyecto consiste en ampliar una aplicación existente y que se encuentra en
producción.
2. Desarrollo nativo. Java. Se puede usar Kotlin.


3. Se cuenta con API RestFul para comunicación de la app con backend.
4. Se cuenta con un equipo de desarrollo backend para las características que lo requieran.
5. Se espera que las propuestas tengan tiempos y costos.
6. El proyecto se puede dividir en subproyectos y/o entregables para su pago.
7. Desarrolladores con amplia experiencia en Android (Seniors o Semi-seniors). No es un
proyecto para juniors.
8. Conocimientos en GIT.
9. Se hará seguimiento semanal de los entregables en repositorio GIT.
10. Uno de los objetivos es establecer una relación laboral a mediano/largo plazo, para
seguir dando soporte a la app y/o nuevos requerimientos.

Requerimientos específicos

1.1    Implementación de nuevo diseño: Ya se cuenta con un diseño, la tarea es implementarlo en la aplicación.
1.2    Funcionalidad Offline: En la actualidad la aplicación necesita conexión a internet para funcionar, se requiere que pueda trabajar en modo offline y se sincronice de forma automática. Se debe tener un indicador para el usuario sobre datos (incluye imágenes) sin sincronizar y tener la opción sincronización manual.
1.3    Log de apagado y encendido de celular: Se deben capturar estos eventos para luego ser enviados al backend.
1.4    Log de activación y desactivación de servicios (GPS, WiFi, Datos): Se deben capturar estos eventos para luego ser enviados al backend.
1.5    Actualización automática de información: Actualmente el usuario debe actualizar la información que se muestra haciendo un gesto vertical (SwipeRefreshLayout), se requiere que esto se haga de forma automática, tanto en el listado de tareas asignadas como en el detalle de una tarea. Esto debe aplicarse a nuevas secciones de la app.
1.6    Optimizar geolocalización, que sea configurable (gps, gprs, wifi, óptimo para batería, óptimo para precisión): dependiendo de una configuración desde el backend, cambiar el método por el cual se obtiene las coordenadas.
1.7    Optimización de imágenes: Una de las funcionalidades actuales es la toma de evidencia fotográfica, desde la cámara o desde la galería, el objetivo es mejorar el algoritmo de optimización de estas imágenes antes de ser enviadas a backend.
1.8    Optimización de batería: Requerimiento a nivel general para mejorar el consumo de batería de la app, se cuentan con servicios en segundo plano para obtención de geolocalización y reporte de estado batería cada cierto tiempo, de ser necesarios habrá que modificarlos.
1.9    Alarma cuando se apague GPS: Se requiere que siempre se tenga encendido el GPS, por lo que se cuenta con una Activity que se muestra y una reproducción de un sonido de alarma cuando se desactiva el GPS. Se requiere mejorar este comportamiento pues se presenta una incidencia, pués aún sin GPS el usuario puede seguir usando la app.
1.10    Reporte de aplicaciones instadas en el teléfono: Se requiere enviar al backend de forma periódica el listado de aplicaciones instaladas en el teléfono.
1.11    Alerta de aplicaciones restringidas: Si el usuario tiene instalada una aplicación no permitida, se debe generar una alerta sonora como y bloqueo de la app (Similar a requerimiento 9).
1.12    Implementar tipos de campo (Tabla, Numérico, Foto marcada, imagen, video, autocompletado): La app cuenta con un generador de formularios de forma dinámica, a partir de un JSON retornado desde el backend, soporta varios tipos de campo (Texto, radiobutton, checkbox...). Se requiere implementar nuevos tipos de campo: Tabla, Numérico, Foto marcada, imagen, video, autocompletado. Y mejorar funcionalidad de otros.
1.13    Más de un condicional por grupo de campos: En la generación de formularios se cuenta con condicionales, ciertas secciones se muestran o no dependiendo de la respuesta del usuario en un campo específico (Ejemplo: Si en un campo de formulario tipo dropdown que pregunta si tiene conocimientos en Android, el usuario responde no, se muestra un campo tipo radio para seleccinar tiempo de experiencia, si responde no, se muestra un campo tipo texto para que ingrese una observación). Se requiere que las secciones que se muestran o se ocultan al usuario, soporten más de un condicional.
1.14    Optimización sesión de usuario (Validar cuando vence token): La autenticación en vía OAuth2, por lo que para acceder al web services se hace por medio de un token. Se requiere que cuando este token llegue a su vencimiento, la app solicite uno nuevo.
1.15    Sistema de seguimiento de errores, logs de aplicación: Propuesta e implementación de sistema para seguimiento de errores de la app de manera remota, puede ser sistema de terceros.
1.16    Reporte de uso de datos de la app: Se debe obtener periódicamente la cantidad de datos consumidos por la app y enviarlos al backend.
1.17    Cierre sesión cuando se inactive un usuario: Se requiere que la sesión del usuario se cierre si este es inactivado desde el backend.
1.18    Botón SEM: Funcionalidad similar a un botón de pánico, al accionarse se debe consumir un web service y poder hacer una llamada telefónica a uno varios números. (La llamada se realiza desde la app propia del teléfono, no desde la app)
1.19    Aceptar términos y condiciones desde la app: Se requiere que cuando se inicie sesión o cuando cambien los términos de uso de la app, el usuario los pueda leer y aceptarlos, se debe enviar a backend.
1.20    Inicio de sesión con IMEI: Actualmente se inicia sesión con un usuario y contraseña, se requiere cambiarlo para que se inicie con el IMEI.
1.21    Volumen alto para notificaciones: Se requiere que las notificaciones push siempre tengan una alerta sonora, o que la app restrinja su uso si no se tiene un mínimo de volumen.
1.22    Restringir seguimiento GPS desde backend: El reporte de coordenadas debe estar condicionado a reglas de negocio del backend, es decir, con un parámetro de configuración.
1.23    Listados de tareas, filtros: Actualmente se cuenta con el listado de tareas actuales asignadas al usuario, se requiere ampliar esta funcionalidad con filtros y estados de tareas, se debe poder acceder a tareas ya realizadas para su consulta. (Según diseño)
1.24    Calendario de tareas: Se requiere visualizar en un calendario las tareas que tiene asignadas el usuario.
1.25    Mi perfil: Se requiere crear sección para que el usuario pueda actualizar sus datos personales, como número de celular, dirección, etc.
1.26    Centro de notificaciones: La app recibe notificaciones push con las que se le informa la asignación y/o cambio de una tarea. Se requiere crear sección de notificaciones (leídas y sin leer) que le han llegado al usuario.
1.27    Mostrar adjuntos para móviles: Actualmente se usuarios de backend adjuntan archivos a una tarea, se requiere que el usuario móvil los pueda descargar. (Solo link de descarga, no visor)
1.28    Solicitud adecuada de permisos de la app a los usuarios: Se debe hacer solicitud de activación de permisos necesarios al usuario (GPS, almacenamiento…) validar la posibilidad de que se activen de forma automática. Restringir el uso de la app si no se cuenta con los permisos requeridos.

Categoría Programación y Tecnología
Subcategoría Programación de Apps. Android, iOS y otros
¿Cuál es el alcance del proyecto? Cambio mediano
¿Es un proyecto o una posición? Posición de largo plazo
Actualmente tengo Tengo las especificaciones
Disponibilidad requerida Según se necesite
Experiencia en este tipo de proyectos No (No he administrado este tipo de proyectos anteriormente)
Integraciones de API Otros (Otras APIs)
Plataformas requeridas Android

Duración del proyecto 3 a 6 meses

Habilidades necesarias