Cuando alguien pide "una función de ruta" en una app de pesca, la idea suena sencilla: pulsar un botón, caminar hasta el punto y guardar el trayecto para volver a encontrarlo otro día. La parte de dibujar una línea en un mapa es, de hecho, la más sencilla de todo el problema. Lo complicado está antes: en cómo Android gestiona la ubicación mientras la app no está siendo mirada directamente en la pantalla, y en qué puede salir mal si esa gestión no se plantea bien desde el principio.
Quiero ser claro desde el principio: esto no es un anuncio de que la grabación de rutas ya esté disponible en producción en mi app de mapa de pesca. Es una explicación del problema que hay detrás, que es justo lo que estoy trabajando en resolver bien antes de prometer nada.
Por qué "en primer plano" es la parte importante
Un dispositivo Android trata muy distinto una app que el usuario está mirando activamente frente a una que sigue "viva" en segundo plano. El sistema operativo limita agresivamente lo que puede hacer una app cuando no está en primer plano, precisamente para proteger la batería y el rendimiento general del teléfono. Pedir la ubicación de forma continua mientras la app está minimizada requiere mecanismos específicos —como un servicio en primer plano con una notificación visible que informe de que se está grabando una ruta— y no un simple bucle de lectura de ubicación como si la app estuviera siempre delante.
Grabar una ruta "en primer plano" significa, en la práctica, que mientras se registra el trayecto, el usuario tiene que tener claro en todo momento que la app está activa y consumiendo ubicación, con una notificación persistente que lo indique. No es una limitación arbitraria de diseño: es la forma en que Android exige que se comunique este tipo de actividad, precisamente porque el acceso continuo a la ubicación es sensible.
El problema de la batería no es una excusa, es una restricción real
Una salida de pesca larga —varias horas caminando por un río o alrededor de un embalse— puede consumir una cantidad de batería nada despreciable si la app pide ubicación con mucha frecuencia y sin ningún criterio de ahorro. Si la ruta se corta porque el teléfono se ha quedado sin batería a mitad de la salida, la función no ha fallado por un error de programación evidente: ha fallado por no haber pensado bien la frecuencia de muestreo ni las condiciones bajo las que tiene sentido reducir esa frecuencia sin perder precisión donde realmente importa, como en cambios de dirección.
Permisos: otro problema que no es solo trámite
Pedir permiso de ubicación en segundo plano en Android implica un flujo de permisos más estricto que pedir ubicación mientras la app está en uso. El sistema pide justificaciones explícitas y el usuario puede, con razón, dudar de por qué una app de pesca necesita saber dónde está incluso cuando no la está mirando. Explicar ese motivo con claridad, en el momento adecuado y no de golpe al abrir la app por primera vez, es parte del problema, no un detalle posterior de la interfaz.
Ejemplo práctico del problema, no de la solución completa
Consideremos una salida real: caminar desde el coche hasta un punto de carpfishing junto a un embalse, con la idea de guardar esa ruta para repetirla otro día sin depender de la memoria. Si la app pide ubicación de forma naíf, sin servicio en primer plano correctamente configurado, es muy probable que el sistema operativo mate el proceso de ubicación en algún momento del trayecto sin avisar de forma clara, y la ruta guardada termine cortada mucho antes del punto final, sin que el usuario entienda por qué.
Resolver esto bien implica coordinar el servicio en primer plano, una notificación honesta sobre qué está pasando, y una gestión de errores que avise si el sistema ha interrumpido la grabación, en lugar de guardar una ruta incompleta como si fuera la ruta completa.
Qué pasa si el usuario cambia de app a mitad de la ruta
Otro caso que hay que resolver antes de considerar la función terminada: qué ocurre si, a mitad de una grabación, el usuario recibe una llamada, abre otra app o simplemente bloquea la pantalla del móvil. Un servicio en primer plano bien configurado puede seguir registrando ubicación en ese escenario, pero solo si la notificación asociada sigue activa y el sistema no ha decidido, por algún motivo de ahorro de energía específico del fabricante del dispositivo, detener el proceso igualmente. Distintas capas de Android de distintos fabricantes se comportan de forma distinta ante esto, lo cual añade otra variable a probar antes de dar la función por fiable en condiciones reales de salida al campo.
Dónde estoy con esto ahora
La base técnica para plantear este problema existe, pero la grabación de rutas todavía no es una función terminada ni disponible en la app en su estado actual. Prefiero explicar el problema con honestidad, incluyendo por qué no es trivial, antes que anunciar una función a medio resolver como si ya estuviera lista para usarse en cualquier salida.
Conclusión
Grabar una ruta GPS en primer plano en Android no es dibujar una línea en un mapa: es gestionar bien la relación entre la app y el sistema operativo durante un periodo largo de tiempo, con la batería y los permisos como restricciones reales, no como detalles menores. Entender bien el problema antes de programar la solución es la misma disciplina que aplico en general y que explico en por qué planificar antes de programar no es perder el tiempo.
