jueves, diciembre 01, 2011

Como resubir una práctica de Endomondo.

Como poder recuperar un entrenamiento que Endomondo ha decidido no cargar en el historial. Despues cargar una práctica a www.endomondo.com, me encontre con la sorpresa que la subio mal posiblemente por algun fallo en la cobertura 3G por lo que empezé a investigar la forma de volver a subirla y que apareciese en mi diario de rutas bien. El problema es que una vez que has subido una ruta no hay forma de volver a resubirla.

Este guia se ha realizado en un movil Samsung Galaxy S2 que trabaja en Android pero no creo que sea muy diferente para Symbian u otros sistemas operativos.

Lo primero es que hay que poder acceder al sistema de ficheros en modo root (superusuario para los de la LOGSE) y como el objeto de este manual no es como rootear un telefono pues usa a San Google que hay tropecientos manuales por la red de como hacerlo. Damos por sentado que el proceso de copiar ficheros movil-Pc y viceversa via cable, wifi o bluetooth lo tenemos dominado.

Vamos a ir a nuestro perfil en www.endomondo.com y borramos la práctica que nos ha subido mal, y luego en el movil observaremos en la pagina de Resumen de la práctica en cuestion que tiene el stick de "Subido" y no hay opcion de resubir o similar.

A diferencia del SportTracker que cada práctica la guarda en un fichero, en Endomondo utiliza un sistema de bases de datos SQLite por lo que nos tocara modificarla pero no es complicado si se siguen los pasos.

Pasos:

- Acceder al sistema de ficheros del movil y pasar la base de datos al PC.

Tenemos que localizar el fichero de base de datos en nuestro movil y copiarlo a un ordenador para poder modificar lo que necesitamos. Dicho fichero se llama EndomondoDatabase y esta en la siguiente ruta /data/data/com.endomondo.android.pro para la version Pro de Endomondo. Supongo que nn la versión normal no variara mucho el nombre del directorio.

Una vez en esa ruta hay un directorio llamado databases que contiene el fichero que necesitamos (EndomondoDatabase) y lo copiamos en nuestro PC donde mas rabia nos de. No olvideis crear una copia de ese fichero por si la piciamos.

- Manipular el fichero en el PC

Para manipular la base de datos SQLite podemos hacerlo con una interface de comandos que podemos descargar de http://www.sqlite.org pero yo he utilizado un interface gráfico que es mas intuitivo y bonito. Se llama SQLite Browser es gratis y lo podeis encontrar en http://sqlitebroser.sourceforge.net.

Abrimos el fichero de base de datos EndomondoDatabase que ya tenemos en nuestro ordenador con el programa SQLite Browser.

En la base de datos hay que modificar dos tablas: workout y trackpoint

Vamos con la primera tabla (workout)
Primero tenemos que localizar la práctica que queremos resubir asi que en la pestaña Browser Data seleccionamos en Table: workout y veremos que nos aparece un listado con todas las prácticas guardadas. La forma mas sencilla de reconocerla sera por el campo "distance" que eso jamas se nos olvida.
Vamos a modificar tres datos de esa práctica poniendo los siguientes valores:
uploadStatus = 0, lastUpload = -1 y sharedOnFb = 0

Aqui me encontre con el siguiente problema. Solo con modificar esos tres valores en el movil se me quito el stick de subido y el del Facebook pasando a ponerse el boton de cargar y publicar, pero me encontre con la sorpresa de que aunque me permitio volver a cargar la práctica en la pagina de endomondo no aparecia en el calendario ni en la lista. Asi que lo único que se me ocurrio fue que tenia que cambiar el workoutId para engañarle como si fuera una nueva práctica.

Asi que tambien modifique el valor del campo workoutId. Con darle doble click podemos editar el valor y cambiarlo (máximo 20 digitos). Con cambiar un solo dígito sobra. Os recomiendo que hagais un copy paste del valor antiguo y el nuevo, os hara falta. Cuando cambies el valor vereis que se os alinea a la izquierda pero no pasa nada.

Y hasta aqui con la primera tabla.

Nota: Se honesto y deja el campo distance como estaba

Vamos ahora con la segunda tabla (trackpoint)

Esta tabla tiene todos los puntos que ha grabado el GPS y cada unos de ellos tiene asociado un workoutId...es decir que pertenece a una práctica o a otra, asi que como hemos modificado el valor workoutId en la tabla workout, pues debemos hacer lo mismo en esta tabla. Obviamente no vamos a ir cambiando el workoutId de cada unos de los "puntos" grabados uno por uno asi que para ello vamos a la pestaña Execute SQL y escribimos lo siguiente teniendo a mano el paste del que os hablaba antes:

update trackpoint set workoutId = nuevo_valor where workoutId like viejo_valor

Por ejemplo:

update trackpoint set workoutId = "-9096303455353090472" where workoutId like "-6096303455353090472"

Revisamos que no aparece ningun mensaje de error.

Una vez hecho esto en el menu File -> Save Database

- Pasar fichero modificado al movil

Hacemos el proceso contrario. Ahora tenemos que copiar al fichero EndomondoDatabase que hemos modificado al movil en la misma ruta que el original /data/data/com.endomondo.android.pro. Nos dira que si lo queremos sobreescribir o algo similar, le decimos que si tranquilamente.

Ahora abrimos el endomondo en el movil y veremos que la práctica en cuestión tiene el boton de Cargar y Publicar operativos en vez de Subido y Publicado.
Si sigues todos los pasos no deberia darte problemas o por lo menos a mi no me los ha dado mas alla del hecho de tener que investigar como gestionaba los datos de las prácticas. Si por casualidad os cargais el fichero EndomondoDatabase y cuando ejecutais el Endomondo no aparecen las prácticas solo tenemos que recuperar la copia de seguridad a no ser que ese paso lo saltaras y entonces tu carita sera todo un poema.

Saludos

Google