App de entregas Android con sincronización web y GPS

En este post te mostraré una app de entrega de paquetes para Android que programé hace algún tiempo en Java, la cual sirve para dar seguimiento a entregas de paquetes o pedidos, sincronizada con un servidor para bajar y subir las entregas pendientes en cada terminal.

Se puede decir que es, a baja escala, algo similar a lo que hace DHL, Estafeta o esos servicios que entregan paquetes (no sé bien el nombre de ese campo).

La información se guarda en una base de datos SQLite local, y posteriormente se envía a un servidor para sincronizarse.

Para llevar un seguimiento de los paquetes se escanea el código de barras usando la cámara del teléfono inteligente, o escribiendo el código manualmente.

Control de entregas en Android

La app de entregas para Android que vengo a presentar tiene las siguientes características:

  • Funciona totalmente sin internet
  • Las entregas son descargadas y enviadas al servidor cuando hay una conexión disponible
  • Los paquetes tienen estatus como entregado o ausente
  • Cuando se realiza una entrega, se debe tomar una foto del paquete, misma que es enviada al servidor
  • Escanea o lee el código de barras usando la cámara del móvil
  • Obtiene la ubicación a través del GPS del dispositivo al momento de entregar el paquete
  • Servidor web configurable
  • Visualización de entregas en servidor

¿Cómo funciona?

  1. La app se puede instalar en varios dispositivos móviles, se configuran las entregas pendientes en el servidor.
  2. Al inicio de la jornada, todos los usuarios descargan las entregas pendientes y van a, valga la redundancia, entregar los paquetes
  3. En el transcurso del día los usuarios realizan las entregas, toman fotos, etcétera
  4. Al final de la jornada, todos los usuarios sincronizan y suben al servidor los registros de paquetes entregados
  5. En el servidor llegará toda la información de la entrega, una foto, las coordenadas, la fecha y hora y el identificador del dispositivo.

Ahora sí veamos los módulos de la app.

Nota: en las imágenes voy a cubrir la ubicación y el identificador del dispositivo por obvias razones.

La pantalla de inicio

1 - Pantalla de inicio

Pantalla principal de la app de entregas con Android

Esta es la pantalla que se ve al entrar a la app. Tenemos 3 botones (uno es el de ajustes en la esquina inferior derecha):

  1. Sincronizar con host: envía las entregas guardadas localmente en el teléfono, y descarga las nuevas entregas. Esto lo hace en caso de que haya una conexión confiable.
  2. Leer número: escanear o escribir el número del paquete, para marcarlo como entregado o modificar sus detalles.
  3. Ajustes: configurar el host y la zona horaria

También se ve un apartado de los créditos, para los iconos que fueron usados.

Ajustes de la app de entregas en Android

Para entrar a los ajustes se requiere escribir una contraseña. Si la misma es correcta se despliega una alerta personalizada, lo que se puede cambiar es el host de la sincronización y la zona horaria local que se toma cuando se guarda la entrega.

2 - Ajustes de la app de entregas

Los ajustes son guardados por dispositivo, así se puede configurar cada uno. En este caso he configurado el host con una IP local.

Sincronización de entregas con el servidor

Una vez que el host está configurado, se puede sincronizar. Primero se descargan las nuevas entregas, y después se envían las ya entregadas.

4 - Sincronizar entregas en App de Android

En caso de que todo vaya bien, se muestra un Toast con el mensaje de éxito.

Ese mensaje se muestra únicamente si hay una conexión estable y la subida y bajada de información fue exitosa.

Lectura del código de barras del paquete

Si se presiona el botón de Leer número se pasa a la siguiente pantalla en donde se puede escribir el número manualmente o escanearlo tocando el icono del código de barras:

5 - Escanear o escribir código de barras de paquete

Si el usuario elige escanear el código se muestra la siguiente pantalla en donde gracias a la cámara escanea el código de barras del paquete dentro de la app de entregas en Android:

6 - Leer código de barras de paquete con cámara en App de entregas

Detalles de entrega

Si el código que se leyó o escribió es de una entrega existente (es decir, que se descargó del servidor) se muestra la siguiente pantalla:

7 - Detalles de entrega

En la misma se puede elegir una acción del paquete, ya que no siempre será entregado exitosamente. Las opciones son:

8 - Opciones de entrega

Es un simple Spinner con una lista de opciones.

En caso de que se seleccione como Entregado, se pasa a la siguiente pantalla.

Foto de la entrega

En el siguiente apartado se muestran los detalles de la entrega, para comprobar que el repartidor realmente entregó el paquete se debe tomar una foto del mismo usando el botón:

9 - Tomar foto de la entrega

Ya sé que está un poco grande, pero bueno, al tocarlo se pide tomar una foto:

10 - Tomando foto de entrega para enviarla a servidor

Es una foto del post que estoy escribiendo actualmente. Ahora se presiona el botón de Finalizar entrega (la foto se previsualiza):

11 - A punto de finalizar entrega

Y todo se guarda en la base de datos local. Después de esto se regresa a la pantalla que escanea el código.

El usuario repite el proceso miles de veces y al final del día presiona el botón que sincroniza con el servidor.

Servidor web de la app de entregas de Android

En el lado del servidor llegan los pedidos ya entregados. Como en este caso solo programé una prueba de concepto del servidor, no quedó tan bien diseñado, pero funciona de maravilla.

Al sincronizar, se muestra lo siguiente en el web service:

12 - Visualizar entrega enviada al servidor - App de entregas android

Como se puede ver, llega toda la información, incluyendo la foto y las coordenadas, así como la fecha y hora.

También se puede apreciar el dispositivo y su identificador.

Conclusión

Así es como termino la presentación de esta app para Android que hice. Funciona perfecto como un ejercicio, un proyecto o para usarla en la vida real entregando paquetes de manera offline y sincronizando con servidores web.

En este caso el servidor web está escrito con PHP, el lenguaje que más conozco, pero al final las llamadas son HTTP y por lo tanto cualquier lenguaje funciona.

Si tienes preguntas no dudes en contactarme 😉

App de entregas Android con sincronización web y GPS

Por parzibyte Tiempo de lectura: 4 min
0