GithubHelp home page GithubHelp logo

pickmeapp's Introduction

PickMeApp

Descripción breve:

El usuario configura una serie de puntos de interés (lugar de trabajo, club de deportes, entre otros). Elige uno de los mensajes predefinidos (o redacta el/los propio/s) para avisar que lo pasen a buscar en la dirección en la que se encuentra. Al mismo tiempo, selecciona uno de sus contactos para enviar tal mensaje. El teléfono utiliza integración con Google Maps y Geofencing para determinar si el usuario se alejó mas de 5 o 10 mts de uno de los puntos de interés y envía un estimulo vibrotáctil al reloj para que cuando el usuario active la pantalla de este, se muestre una interfaz de confirmación para enviar el mensaje previamente mencionado.

Por otro lado, el contacto seleccionado tiene la app corriendo en su móvil y respectivo reloj. Al recibir el pedido del usuario, la app muestra en su reloj " necesita que lo pases a buscar" y un botón para abrir la ubicación en su dispositivo móvil con el correspondiente mapa. Una vez que el mapa esta abierto, la interfaz del teléfono/tablet mostrará además una interfaz para avisar que se encuentra en camino o que no llegará o algo por el estilo.

Este mensaje será enviado desde el teléfono móvil del usuario 2, al reloj del usuario 1 al que se notifica utilizando alguna de las técnicas de interacción.

PickMeAppDiagram

Screenshots:

Si bien la app se encuentra en desarrollo los avances son los siguientes:

La aplicacion cuenta con un menu inferior con el cual el usuario puede acceder a diferentes secciones de la app.

ss1

  • La sección "Lugares", contendrá un listado de lugares favoritos creados por el usuario utilizando el boton flotante.
  • La sección "Contactos", le permitirá al usuario buscar y seleccionar el/los usuarios destinatarios de los mensajes.
  • La sección "Mensajes", alojará la bandeja de mensajes recibidos y una sección de configuracion para definir el mensaje a enviar.

Disclaimer: Esta aplicacion esta desarrollada con fines didácticos por lo que no tendrá ningun uso comercial.

pickmeapp's People

Contributors

pazitos10 avatar leomorales avatar pablo1n7 avatar samuel1a0 avatar

Stargazers

 avatar

Watchers

James Cloos avatar  avatar  avatar  avatar  avatar  avatar

pickmeapp's Issues

Dirección MAC no encontrada

Se han encontrado problemas para obtener la dirección MAC en dispositivos con Android 6.0+, según la documentación oficial ya no es posible obtener direcciones físicas con el fin de preservar los datos de los usuarios.

Requerimientos:

  • Reemplazar la utilización de MAC Address, preferentemente por un Id. único

Listar lugares

Un usuario debe poder visualizar un listado de los lugares creados (por todos los usuarios). Para ello, los datos deberán ser solicitados a la API.

Listar contactos

Un usuario debe ser capaz de acceder al listado de contactos en la app. Puede hacerse consultando estos datos utilizando un ContentProvider, pero sería piola tratar de filtrar los contactos para traer solo aquellos que tengan la app instalada y no a todos (falta investigación sobre esto)

Generación de Notificaciones

Cuando se produzca un evento "Exit" en un Geofence registrado en un dispositivo, la aplicación móvil deberá encargarse de recolectar los datos necesarios para crear las notificaciones correspondientes.

En otras palabras, se deben obtener:

  • El ID del lugar en el que se produjo el evento.
  • La lista de contactos seleccionados por el usuario para ser notificados.
  • El mensaje elegido para este propósito.

Generación de mensajes

Un usuario debe ser capaz de generar los mensajes a enviar a sus contactos cuando sea necesario. Para ello, el mismo deberá seleccionar uno de los mensajes predefinidos o bien crear el propio con al menos, los siguientes datos:

  • Asunto
  • Contenido/Cuerpo del mensaje

Se debe definir si los mensajes se almacenan localmente o en la API.

Crear un wrapper para interactuar con API

La app debería contar con un wrapper diseñado para interactuar con la API Rest. De este modo, los componentes que quieran comunicarse con ella, no hace falta que tengan código duplicado para hacer las mismas cosas.

Por ej: se podría crear una clase llamada Api y adentro tener los métodos (de clase) necesarios para comunicarse con cada una de las rutas disponibles y devolver los resultados a algún callback o similar.

Crear un lugar en la posición del usuario

Por cuestiones de usabilidad, la app debería mostrar en el mapa un botón que:

  • Pida la posición actual del usuario.
  • Modifique el centro de la cámara del mapa (centro en la ubicación del usuario).
  • Ajuste el zoom del mapa para ver con claridad donde se encuentra el usuario.
  • Ponga automáticamente un punto en tal posición.

Edit: Ya hay una parte empezada pero comentada en este commit. En particular las lineas: 64, 136-138, 179-214, del archivo PlacesActivity.java

Listado de mensajes

Un usuario debe ser capaz de ver los mensajes recibidos en la app. Para ello hay que modificar la API para que sea capaz de almacenar los mensajes y poder consultarlos desde la app, o bien definir si se van a almacenar localmente en cada dispositivo.

Guardar un punto

El usuario debe:

  • Poder seleccionar un punto en un mapa
  • Completar sus datos:
    • Nombre y una descripción sobre el lugar.
  • Registrar estos datos en la API.

El punto registrado contendrá información de latitud y longitud, necesarias para crear Geofences que permitirán el funcionamiento de la app.

Configurar nombre de usuario

Como usuario de la aplicación, quiero poder configurar mi nombre de usuario la primera vez que la abro.

Requerimientos:
1- Configurar un nombre y hacer que sea único (posiblemente añadir un campo de datos extra con la dirección MAC del dispositivo o un Id único.
2- Modificar aquellas transacciones llevadas a cabo con el servidor para enviar los datos del usuario cuando sea necesario.

Emulador Crashea sin cuenta asociada.!.

Cuando arranca la aplicación en el emulador y pide permisos para acceder a las cuentas, si no hay cuentas asociadas, Crashea porque cae fuera del arreglo.

Permitir la reconexión con el servidor

Actualmente la aplicación crashea si el servidor no está disponible (o no se dispone de conexión a internet).

Requerimientos:

  • Evitar que la aplicación deje de funcionar.
  • Mostrar un mensaje en pantalla con algún botón que permita reconectarse con el servidor.

Por ejemplo:

Pero con algún mensaje más explicativo.

Utilización de Shared Preferences

Requerimientos:
Almacenar la configuración de la app en el dispositivo utilizando Shared Preferences.
Cuando la app inicie, verificar la existencia de datos del usuario en las preferencias de la aplicación.
Si no existen, inicializar los valores por default:

  • Username
  • DeviceId
  • API URL
  • Entre otros.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.