¿Qué partes son necesarias para esta aplicación móvil basada en GPS?

En primer lugar, no estoy seguro si entiendo qué luz estás tratando de encender. ¿Es una notificación por teléfono u otra luz física (de ahí el diente azul)?

Pero, sin embargo, puedo tratar de responder esto desde el punto de vista de Android. Para el GPS, puede usar un administrador de ubicación y luego usar lat / long para rastrear cuando las personas están cerca o usar una geovalla – Creación y monitoreo de geovallas. Geo cerca es más adecuado para esto.

Debería crear una cerca geográfica una vez que el usuario suelte el pin. Esta es la parte facil. La parte más difícil es cómo saber cuándo hay otros cerca. Necesitará algún tipo de comunicación entre dispositivos. No estoy seguro de cómo puedes hablar entre teléfonos directamente, pero encontré esta página de desbordamiento de pila. Habla sobre la programación de sockets (Android) que se comunica entre dos dispositivos. Puede hacer que el usuario original, que soltó el pin para seleccionar una lista de otros usuarios. Luego puede abrir una conexión UDP para recibir el lat / long del otro usuario para verificar con la cerca geográfica. No muy limpio, para ser sincero.

Una mejor manera, en mi opinión, será hacer los cálculos en un servidor. Cuando un usuario suelta un pin, envíe el lat / long al servidor. El servidor creará una cerca geográfica virtual. Simultáneamente, haga que cada usuario haga ping regularmente al servidor con su lat / long. En cada ping, haga que el servidor haga los cálculos para ver si el usuario está cerca de algún pin caído (por lo tanto, una cerca geográfica virtual). Si es así, puede alertar a ambas partes o encender una luz. Eso depende de usted. Estoy seguro de que Google tiene una API que le permite hacer una geovalla virtual o cálculos simples basados ​​en la distancia utilizando mapas. No es un experto en ello, por lo tanto, no presumiré hacer sugerencias. Si adopta este enfoque, su aplicación será bastante simple con solo una solicitud http al servidor y una respuesta de análisis. Sin embargo, necesitará un servidor en ejecución a tiempo completo. No es muy difícil conseguir eso. Parte de la tecnología que he omitido para obtener una vista general de alto nivel: SQL o una base de datos similar para mantener los registros de usuarios, fuentes de información, etc. Apache: si lo ejecuta como servidor, debe usar Apache para eso. Puede encontrar un buen enlace para configurar un servidor en Linux al convertir su Raspberry Pi en un servidor web personal y / o un servidor web Python para su Raspberry Pi. Los enlaces son para configurar el servidor web en Raspberry Pi, lo que recomendaría si está configurando el servidor desde cero. Pero el proceso descrito es bueno para cualquier plataforma, especialmente una con sistema operativo Debian.

¡Espero haber respondido la pregunta para darle algunos consejos sobre dónde comenzar!