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.
La app de entregas para Android que vengo a presentar tiene las siguientes características:
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.
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):
También se ve un apartado de los créditos, para los iconos que fueron usados.
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.
Los ajustes son guardados por dispositivo, así se puede configurar cada uno. En este caso he configurado el host con una IP local.
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.
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.
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:
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:
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:
En la misma se puede elegir una acción del paquete, ya que no siempre será entregado exitosamente. Las opciones son:
Es un simple Spinner con una lista de opciones.
En caso de que se seleccione como Entregado, se pasa a la siguiente pantalla.
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:
Ya sé que está un poco grande, pero bueno, al tocarlo se pide tomar una foto:
Es una foto del post que estoy escribiendo actualmente. Ahora se presiona el botón de Finalizar entrega (la foto se previsualiza):
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.
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:
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.
En este caso esta aplicación no es open source. Puedes obtener el código fuente de la app y el servidor PHP por 75 dólares. Para ello:
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.
Hoy te voy a presentar un creador de credenciales que acabo de programar y que…
Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…
En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…
En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…
Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…
En este artículo te voy a enseñar cómo usar un "top level await" esperando a…
Esta web usa cookies.
Ver comentarios
Increíble! lo que haces brother.
¿El código es OpenSource o tiene un costo?
Hola. Gracias por sus comentarios. El código tiene un costo, puede contactarme en https://parzibyte.me#contacto si desea adquirirlo
Saludos!