Skip to content
yoiberdevPublic

About

App de Android para grabar caminatas, carreras y salidas en bici que recupera, con Health Connect, el tramo que hiciste antes de darle a iniciar. Svelte 5, MapLibre y Capacitor, con plugins propios en Kotlin.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

km 0

Me pasa que salgo a caminar y recién a medio camino me acuerdo de darle a «iniciar». Google Fit cuenta lo que caminé antes porque registra los pasos todo el día, pero en Strava ese tramo se pierde.

km 0 es una app de Android para grabar caminatas, carreras y salidas en bici, al estilo de Strava, que arregla eso. Si empezaste a grabar tarde, busca en Health Connect lo que hiciste en las tres horas anteriores y lo pega al principio de la actividad, con la placa KM 0 donde de verdad saliste.

Grabando, con el botón «Empecé antes: marcar desde dónde salí» ¿Desde dónde saliste? Un recorrido de Health Connect, tus pasos o dibujarlo El tramo de antes marcado en el mapa, por las calles La grabación con 2.67 km de antes ya sumados La actividad guardada con el inicio corregido

En las capturas: grabando, con «Empecé antes» a mano; lo que encontró Health Connect antes del inicio; el tramo marcado con un toque en el mapa; las cifras con ese tramo sumado, y la actividad guardada con la corrección.

Qué hace

Graba con la pantalla apagada o con otra app abierta, con un aviso fijo en la barra mientras dura, y muestra el tiempo, la distancia y el ritmo. Cada punto se escribe en un archivo apenas llega: si Android cierra la app a mitad de camino, al volver a abrirla la actividad se guarda con lo que había.

Las actividades se ven en una lista con la forma de cada recorrido y, al abrir una, con su mapa y sus cifras. Se exportan a GPX, para subirlas a Strava o a otra app, o se mandan con el menú de compartir de Android.

El inicio se corrige en plena grabación, con el botón «Empecé antes», o después, desde la actividad guardada. km 0 lee de Health Connect las tres horas anteriores y propone lo que encuentre:

  • Un recorrido con GPS guardado por otra app (Google Fit, Samsung Health, Fitbit…). Sale en el mapa y arrastras la placa hasta donde saliste.
  • Tus pasos minuto a minuto. Con ellos calcula a qué hora empezaste a caminar y cuánto caminaste, y tú tocas en el mapa de dónde saliste.
  • Si no hay nada, lo dibujas.

Con «Seguir las calles» activado, el tramo va por el camino a pie de OpenStreetMap y basta con un toque en el punto de salida. En plena grabación, las cifras empiezan a contar ese tramo en el acto y se guarda al terminar. La corrección se puede deshacer.

Cómo decide desde dónde saliste

Con el recorrido de otra app, toma los puntos anteriores a tu inicio y busca la última vez que estuviste quieto: dos puntos seguidos a menos de 30 m y con más de 2 minutos entre uno y otro. Con los pasos, retrocede minuto a minuto desde el inicio mientras haya al menos 20 pasos por minuto, y perdona hasta 2 minutos sin pasos (un semáforo, una tienda). A un tramo dibujado le reparte las horas desde la hora en que tus pasos dicen que empezaste o, si no la hay, a tu ritmo.

Los detalles, con las decisiones y los problemas que salieron al probarla, están en docs/como-funciona.md.

Privacidad

No hay cuentas ni servidor propio: las actividades se quedan en el teléfono. De Health Connect solo lee sesiones de ejercicio, pasos y distancia, y los recorridos que guardaron otras apps necesitan un permiso aparte. Lo único que sale del teléfono, y solo si activas «Seguir las calles», son los puntos del tramo recuperado, que van al servidor de rutas de OpenStreetMap. El mapa se descarga de OpenFreeMap.

Hecho con

Svelte 5 y MapLibre GL dentro de Capacitor 8. Lo nativo está en Kotlin, en android/app/src/main/java/dev/yoiber/km0/:

Archivo Para qué
GrabadoraService.kt La grabación, en un servicio en primer plano. Escribe cada punto en grabacion.jsonl.
GrabadoraPlugin.kt Lo que la parte web le pide a la grabación: permisos, iniciar, pausar, terminar, recuperar una grabación interrumpida.
Ubicador.kt La posición, con la ubicación combinada de Google (GPS, wifi y antenas).
SaludPlugin.kt Health Connect: sesiones con su recorrido, pasos y distancia por minuto, permisos.
PrivacidadActivity.kt La pantalla que Health Connect exige para explicar el uso de los datos.
ArchivosPlugin.java Guardar el GPX con el diálogo «Guardar como» del sistema.

Y la parte web, en src/:

Archivo Para qué
lib/grabacion.svelte.js El estado de la grabación, que sigue al día aunque cambies de pantalla.
lib/tramo.js Desde dónde saliste: el recorrido, los pasos o el dibujo.
lib/streets.js, lib/geo.js Pegar el tramo a las calles con OSRM y repartirle las horas.
lib/actividades.js Guardar las actividades, sus cifras y el GPX.
map/Mapa.svelte, map/style.js Un solo mapa para todas las pantallas, con el estilo «positron» de OpenFreeMap repintado como un plano en papel.
screens/ Grabar, la lista, el detalle y la corrección del inicio.

Probar sin salir a caminar

npm run dev abre la app en el navegador con imitaciones del GPS y de Health Connect. Al iniciar se reproduce una caminata por el malecón de Miraflores, y en «Health Connect» hay otra caminata que termina justo antes. Los datos salen de scripts/ejemplo.mjs, y npm run ejemplo los regenera.

En el APK de pruebas, si Health Connect no tiene nada, aparece «Prueba: guardar una caminata de ejemplo en Health Connect», que escribe una caminata que termina donde empezaste a grabar.

Compilar

Hace falta Node 22 o más nuevo, el JDK 21 y el SDK de Android.

npm install
npm run build
npx cap sync android
cd android && ./gradlew assembleDebug

El APK queda en android/app/build/outputs/apk/debug/app-debug.apk y se instala con adb install -r app-debug.apk. Graba desde Android 8. Health Connect viene con Android 14; en versiones anteriores se instala desde Google Play, y sin él el tramo de antes se dibuja.

Solo hay versión para Android, porque Health Connect no existe en iPhone. No está en Google Play.

In English

km 0 is an Android activity recorder for walks, runs and rides, in the spirit of Strava, built with Svelte 5, MapLibre and Capacitor plus custom Kotlin plugins. It adds one feature: if you hit start late, it reads the previous three hours from Health Connect (another app's GPS route, or per-minute step counts) and prepends the missing stretch, snapped to streets with OSRM. Recording runs in a foreground service and survives the app being killed. Activities export to GPX. The app and the docs are in Spanish.

About

App de Android para grabar caminatas, carreras y salidas en bici que recupera, con Health Connect, el tramo que hiciste antes de darle a iniciar. Svelte 5, MapLibre y Capacitor, con plugins propios en Kotlin.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages