Archivo

Archive for the ‘WayTRKR’ Category

LocalizaTodo 2.0 para iOS ya está disponible… y una actualización va en camino

Por fin, y tras unos cuantos tropiezos, LocalizaTodo 2.0 para iPhone, iPad e iPod Touch ya está disponible en el AppStore. A continuación, las novedades y las anécdotas de este lanzamiento.

Y mira que le dí vueltas y vueltas, intentando asegurarme (aunque todos sabemos que es imposible) que todo iba a funcionar bien y a la primera. Pero no, como ya sabemos Murphy es un cachondo y nada mejor que un montón de usuarios jugando con las nuevas versiones para descubrir un problema que había pasado totalmente desapercibido.

Pero primero, vamos a las novedades. Como ya podréis imaginar, LocalizaTodo 2.0 (al igual que su hermano para Android) ya dispone (por fin!) de su correspondiente “mini-WayTRKR” integrado que permite publicar la posición de uno en línea y así poder ser localizado tanto por otros usuarios de LocalizaTodo Mobile como desde la web de LocalizaTodo:

LTM-IOS-20-01

Otro cambio que notaréis es que ahora, además de mostrar la dirección postal en vuestra posición, también la muestra para todos los demás… cuando su perfil sea “peatón” o “vehículo”!!

Acceder al tracker integrado es sencillo: hay un botón dedicado en la misma pantalla principal que abre la pantalla de configuración:

LTM-IOS-20-02

Para la mayoría de los usuarios de WayTRKR en general y de LocalizaTodo Mobile en Android, todo será muy familiar, excepto la última opción: poder definir la precisión del track. Esta opción permite decidir cuánta batería queremos gastar (a cambio, claro está, de la calidad del track). El problema del GPS es su enorme consumo de energía, que acorta la vida de la batería de forma dramática. LTM para iOS puede hacer track tanto con redes celulares y WiFi como con GPS.

Seleccionando “Nunca”, LTM sólo empleará las redes celulares y WiFi para obtener una ubicación. Esto permite mantener activo el track permanentemente sin que nos quedemos sin batería en pocas horas. La calidad de la ubicación dependerá de la cobertura móvil (sobre todo cuántas antenas pueda “ver”) y de los puntos de acceso WiFi que se vaya encontrando, pero es con diferencia la mejor opción en entornos urbanos, donde muchas veces (sobre todo en calles estrechas) es prácticamente imposible obtener un fix GPS.

Las opciones “En ejecución” y “Siempre” activan el receptor GPS. Con la primera opción el tracker de LTM activará el GPS cuando la aplicación esté en uso, pero volverá a la modalidad de bajo consumo una vez que se cierre y nos pongamos a hacer otra cosa. Y como habréis podido imaginar, la opción “Siempre” hace que el GPS esté permanentemente encendido (ojo con la batería!). Eso si: el track va al centímetro.

Mi ubicación

Un pequeño cambio, pero muy útil: al pulsar sobre nuestra propia ubicación aparecerá la información que tengamos publicada en ese momento, pudiendo ver de forma sencilla si el track está activo y el momento en que se ha enviado la última actualización. En la primera imagen sólo se presenta la información de la ubicación actual, en la segunda se presentan también los datos que está viendo el “resto del mundo”:

LTM-IOS-20-04

El ID de dispositivo…

Esa es una larga historia. Hasta iOS 4 (creo recordar), el sistema operativo ofrecía a las aplicaciones una “firma digital” única para el teléfono, al igual que hace Android o el difunto Windows Mobile. El problema es el mal uso que se ha hecho de ella: muchas aplicaciones usan esa firma “tal cual” con lo que es posible hacer un seguimiento de las actividades de los usuarios. Visto lo visto, Apple cortó esa forma tan poco elegante de identificar al personal y de hecho cualquier aplicación actual que use esa firma no es aceptada en el AppStore. Había que buscar alternativas.

Lo único que se me ocurrió fue algo parecido a lo que tuve que montar en Android y su famoso “bug del ID repetido”: generar una firma aleatoria y guardarla en alguna parte. Y de hecho es lo que estoy haciendo y la verdad es que funciona muy bien, con una ventaja adicional: al usar el almacén de seguridad del teléfono (el ID va encriptado) se guarda con los backups de iTunes. Así que ya sabéis: cuando cambiéis vuestro iPhone 4 por un flamante iPhone 4S (o lo que venga) y uséis iTunes para guardar todo lo que teníais en el teléfono viejo y lo reinstaléis en el nuevo, vuestro ID de dispositivo irá con vosotros. Una comodidad más.

Por cierto y para los curiosos: si queréis conocer vuestro ID de dispositivo (muy útil para hacer búsquedas de recorridos en la web de LocalizaTodo, lo tenéis en la pantalla de “Acerca de”:

LTM-IOS-20-03

Y las pegas?

La primera, que nos hizo perder un par de días, fue un problema “semántico”: tras la semana de espera habitual hasta que llega el momento de la revisión, recibo un email de Apple en el que se me indica: “la aplicación ha pasado la certificación pero no puede publicarse por un error en los metadatos”. Arrea. Lo primero que pensé es si había utilizado un XCode “beta” (que no se pueden usar para subir aplicaciones al AppStore) o algún parámetro erróneo en el info.plist (cantidad de problemas si metes la pata con alguno de sus contenidos) o cualquier otra cosa. El email me dirige al “centro de resoluciones” donde obtendré más información acerca del problema.

Con manos temblorosas temiéndome lo peor (“se me ha ido la mano usando el keychain?” ó “estoy abusando del permiso de ejecución en background?”) encuentro la explicación: la aplicación viola el punto 2.16 del proceso de certificación.

Lo espectacular llegó cuando me releí la documentación al respecto y compruebo en qué consiste esa regla: “una aplicación no podrá solicitar un permiso de ejecución en segundo plano y usarlo para otra cosa”. Vamos a ver… LTM solicita permiso para correr en segundo plano para tareas de localización y es precisamente lo que estoy haciendo… dónde está el problema?

Cuando una aplicación solicita hacer algo en segundo plano debe indicar qué va a hacer. Actualmente sólo se permite correr en segundo plano para ofrecer servicios de localización (como LTM), voz sobre IP, música, proceso de descarga en segundo plano del Quisco, manejo de accesorios hardware externos y para servicios de conectividad Bluetooth. Nada más. Y ha habido aplicaciones que han intentado usar los permisos de ejecución en segundo plano para hacer “otras cosas”, como por ejemplo solicitar “ejecución en segundo plano para reproducir audio”, cuando lo que realmente hacen es actualizar un feed RSS o de Twitter sin reproducir ningún tipo de música. Ese tipo de aplicaciones son rechazadas, precisamente, por violación del punto 2.16. Pero… y LTM?

Profundizando en la documentación, encuentro la causa real: no he incluido en la descripción del producto un aviso haciendo saber al usuario que si usa el GPS en segundo plano la duración de la batería será acortada “dramáticamente”. En este momento no sabía qué pensar. “Qué tiene ésto que ver con la regla 2.16?”. Respuesta fácil: absolutamente nada. De hecho, en absolutamente ninguna parte de la guía de certificación se exige este aviso.

Me parece estupendo (sinceramente) el esfuerzo que hace Apple por dar la mejor experiencia posible a sus usuarios, pero esta anécdota simplemente me demuestra que la guía de certificación tiene que ser más dinámica y ahora se están aplicando reglas que aún no están definidas pero SI son efectivas. No se pueden aplicar reglas no escritas, que ya es bastante duro cumplir con las que sí lo están.

La otra pega es muchísimo más tonta, pero lamentablemente muy llamativa: LTM procesa incorrectamente las descripciones que incluyen caracteres internacionales (aunque los maneja estupendamente en cualquier otra parte, como por ejemplo las direcciones). El problema lo tienen tanto LTM para iOS como para Android, y ambas versiones ya están corregidas: la versión Android estará disponible en unas horas y la versión iOS ya está en proceso de certificación (otra vez!!).

Y ahora qué?

Lo principal es corregir ese problema tan llamativo y que cualquier “Muñoz” pueda sentirse orgulloso de su apellido (y su eñe) y usarlo con libertad para publicar su posición. Y lo siguiente será completar la familia: la versión 2.0 de LTM para Windows Phone 7… ¡que ya toca!

Los que ya tengáis LTM para iOS seguramente ya lo tendréis actualizado. Para los que no, podéis descargarlo desde aquí – si todavía veis “versión 2.0.0” ya sabéis: se está certificando.

LocalizaTodo 2.0 para Android–Empieza la fusión de LTM y WayTRKR

La verdad es que ya tocaba una actualización para LocalizaTodo Mobile, y en esta ocasión la primera en llegar ha sido para la variante Android. El cambio más significativo ha sido la fusión de LocalizaTodo y WayTRKR.

ltm-20-Android

Desde ayer por la mañana la mayoría de vosotros tendréis una actualización para LocalizaTodo Mobile en vuestros móviles Android a la versión 2.0. Por fin hay posibilidad de ver una sección de “Dispositivos Móviles” junto con la información de “Barcos” y “Aviones”, pero éste no ha sido el cambio principal. Desde un principio, y aunque la plataforma Android se presta a ello, encontraba francamente farragoso tener que activar dos aplicaciones – WayTRKR por un lado y LTM por otro – para que uno pudiese “verse a sí mismo” en el mapa. así que me pareció lógico incluir parte de los servicios de tracking en la aplicación. Dado que gran parte del código de track ya estaba hecho para WayTRKR para Android, ha sido la primera plataforma en llegar a sus usuarios. Ahora tocan las demás (Windows Phone e iOS), que se encuentran en su fase final de desarrollo.

Ahora, al abrir la pantalla de configuración, encontraréis controles que hasta ahora estaban en WayTRKR: control del track en línea, selección de perfil de uso, información sobre vuestro identificador de dispositivo, etc.

Pero hay más cambios.

ltm-20-Android-settingsOtro cambio importante ha sido en el protocolo mismo de transmisión. Muchísimos usuarios han padecido el problema de los proxys WAP que las operadoras insisten en preconfigurar en los móviles, a pesar de que éstos hace mucho tiempo que no los necesitan. El resultado es que, con WayTRKR perfectamente configurado y el móvil conectado a Internet, aparecen mensajes de error indicando que no es posible publicar la posición. Un usuario no debe tener que preocuparse por esos detalles.

Por ello se rehizo el protocolo completamente: ahora pasa sin problemas a través de los proxys WAP de la operadora, simplificando la vida de todo el mundo: primero del usuario, que simplemente “usa un programa” sin tener que preocuparse de parámetros (bastante peregrinos) de configuración. También nos hace la vida más fácil a nosotros, que tenemos un problema menos del que preocuparnos. Todos felices. El cambio, pese a sus complejidades, ha valido la pena.

Nunca fué más cierto que todos los Android son iguales…

… o por lo menos eso descubrí, casualmente, cuando haciendo unas pruebas con el emulador de desarrollo encuentro otro usuario que ha registrado mi ID a su nombre. Perplejo por ello me pongo a rebuscar y me quedo sorprendido (y un poco asustado) cuando encuentro documentado un bug que afecta a la versión 2.2 de Android que, para “nuestra desgracia” es la versión más difundida actualmente del sistema operativo: muchos móviles (principalmente de HTC y Samsung) salieron de fábrica con la misma “firma digital” que se supone que debe hacerlos únicos. Al emplear esa firma digital para generar el ID de dispositivo que finalmente se emplea para publicar nuestra posición, el resultado es que todos esos móviles son el mismo.

Lo malo del asunto es cómo solucionarlo. El método que sugiere Google es “contacte con el fabricante o con la operadora para que le actualicen el teléfono”. La risa floja, teniendo en cuenta que lo más probable es que, tras la venta, los fabricantes y operadoras se olviden de actualizar los teléfonos. Hubo que buscar otra solución: Fabricar una firma única nueva en los móviles afectados.

Para la mayoría de los usuarios que utilicen WayTRKR y LTM y que no estén afectados por este bug, verán como los IDs de dispositivo que aparecen en ambos programas son el mismo. En cambio, los usuarios afectados con la “firma digital repetida” es que sus IDs serán diferentes entre WayTRKR y LTM: el primero mantendrá el ID original, obtenido directamente de la firma única del móvil, mientras que LTM, que ya incorpora código para detectar el problema, tendrá que generar un ID nuevo. Por lo menos, éste será único.

De momento, sin GPS

Otro cambio “de toda la vida” del track es que LTM 2.0 no emplea la unidad GPS de vuestro teléfono. La ubicación se obtiene exclusivamente a partir de la red móvil y de los puntos de acceso WiFi cercanos (si lleváis la radio WiFi encendida, claro está). Esto permite algo que era impensable hasta ahora con WayTRKR: llevarlo permanentemente activo.

Aunque la mayoría puede que ni note la diferencia, sí hay una: los tracks en línea de WayTRKR emplean la unidad GPS del móvil y tienen mucha más información y son bastante más precisas. Así que si necesitáis que vuestros tracks sean precisos al centímetro, seguid haciendo track con nuestro querido WayTRKR: siempre podéis tener las dos aplicaciones abiertas a la vez.

El siguiente paso: añadir la posibilidad de “track de alta calidad” en LTM, empleando el GPS. Al tiempo.

Y para los demás?

Los usuarios de Windows Phone y iPhone/iPad tendrán que esperar un poco más para la llegada de la versión 2.0 de sus respectivas plataformas. Pero tampoco tendréis que esperar mucho: ambos programas están en la fase final, ya funcionan (en su mayoría) y pronto estarán disponibles tras el correspondiente proceso de certificación por parte de los respectivos “markets”:

LTM-WP7-20-1

En la imagen podéis ver LTM 2.0 para Windows Phone 7, mostrando la posición de mi iPad corriendo su versión de LTM. Y aquí, el control del track en el iPad:

LTM-20-iOS-iPad

Cuanto falta? Poco… falta poco. En cuanto estén disponibles lo publicaré… pero seguramente y si habéis leído esto, ya no necesitaréis saber qué lleva de nuevo.

Y tras 18 meses… WayTRKR 2.0 Beta 1

Llevaba muchísimo tiempo sin escribir en éste blog, pero nada comparado con el tiempo que llevaba languideciendo la versión para Android de WayTRKR. Por fin he tenido oportunidad de darle un repaso y ponerlo al día con esta versión beta.

Aparte de estar prácticamente entero rehecho por dentro, también me he dedicado a hacer algo que me apetecía muchísimo desde hace igual de tiempo: dar mucha más información en la pantalla de GPS y, de paso, actualizar un poco el formato. Lo que me prometí a mí mismo en el proceso es que WayTRKR seguiría funcionando en prácticamente cualquier móvil Android que hoy en día esté en funcionamiento, y eso incluye la versión 1.5 del sistema operativo.

Esta ha sido la mayor complicación del proceso: aprovechar de la mejor forma posible la gran variedad de pantallas que hay disponibles pero empleando “sólo hasta” el API de Android 1.5, con serias limitaciones para especificar formateos que se adapten bien a resoluciones que, por aquél entonces, simplemente no existían. En algunos momentos tuve la tentación de tirar la toalla y simplemente decidirme a soportar de Android 2 en adelante.

Afortunadamente no ha sido el caso, y la verdad es que siento una especial satisfacción por un resultado que encuentro muy satisfactorio. De hecho, aunque sea “a martillazos”, es agradable comprobar como el sistema operativo “1.5” puede adaptarse con bastante soltura a entornos que “no conocía”. Eso sí: toca retorcer un poco (o quizá bastante) los servicios de layout de Android.

Aparte de “lo obvio” que se observa en las nuevas pantallas, por dentro los cambios han sido muy significativos. Para empezar, los adaptadores de unidades de la versión 1 han sido totalmente reemplazados por una versión derivada del que empleo en LocalizaTodo Mobile. Ya puestos también he incluido el adaptador de coordenadas. Iba en el lote, así que…

WTAndroid201-1

Lo principal en la pestaña de información de GPS es la nueva información que aparece: la altitud actual y la distancia recorrida para el track en curso. La altitud jamás había sido soportada por WayTRKR (salvo en otra versión de la que hablaré más adelante y que nunca vio la luz) y ahora se incluye no solo en los archivos de track opcionalmente, sino en la misma pantalla principal. La distancia recorrida era un oscuro campo interno en unidades extrañas que gracias a la nueva presentación consigue llegar al usuario.

La brújula es “herencia” de esa otra versión de la que hablaba antes, y la he implementado en esta versión por nostalgia. Está sin acabar, pero quería ver el efecto en el interface de usuario. Puede funcionar de dos formas, configurables por el usuario: bien rotando la “aguja” o bien rotando el “bisel”.

Otra información añadida en la sección de “Estado” es la calidad de la información de GPS, información que anteriormente no se veía en ningún lado. WayTRKR requiere que la información de localización tenga una precisión mínima, y ahora podremos verlo al lado del estado: un mensaje “Fix/15m” indica que el fix es válido con una precisión de 15 metros. Un mensaje “Sin Fix/50m” significa que, aunque el GPS nos esté dando una posición, WayTRKR la está ignorando por ser insuficientemente precisa.

Cielos, floto!

Pues si, gracias a los nuevos tracks “3D” gracias a la altitud, me llevé una sorpresa tras completar el primer recorrido “real” probando WayTRKR en un Samsung Galaxy S: todo el recorrido lo hice en “vuelo rasante”, a unos cincuenta metros del suelo:

GPSAltitude

El por qué es sencillo: he seleccionado uno de los puntos del recorrido, donde además de la velocidad ahora se incluye la altitud: 725 metros, o por lo menos, eso fue lo que dijo el GPS del Samsung. El problema es que la altura real de ese punto es de 649 metros sobre el nivel del mar (como puede comprobarse en la parte inferior de la pantalla). La explicación del desfase es sencilla: un GPS no sabe a qué altitud sobre el nivel del mar está, sino a qué distancia está de los satélites. Para calcular la altitud sobre el nivel del mar hacen una proyección sobre una elipsoide que define el achatamiento “medio” de la Tierra. Y el problema es que la Tierra no es una geometría “perfecta”: en algunos puntos el terreno es más alto, en otros más bajo. Para colmo, puede que otros GPSs apliquen una proyección diferente, con lo cual el efecto final dependerá del teléfono y de la unidad GPS que lleve.

Resultado? Pues el que podéis ver en la ilustración: un recorrido flotando sobre la M30 de vuelta a casa. Fascinante.

La pregunta ahora es: ¿y para qué sirve entonces un track con altitud? Pues si os movéis a pié o en un vehículo terrestre, francamente para poca cosa, a no ser que queráis conocer al detalle los desniveles, socavones, baches y demás características del terreno. Si no, mi recomendación es desactivar la altitud. Pero si un día tenéis oportunidad de subir en un ultraligero o un parapente, es el momento perfecto para activarlo!

Y ahora que habéis leído todo esto y si todavía os quedan ganas de probarlo, el link para descargarlo directamente es éste: http://www.localizatodo.com/waytrkr/beta.htm. Solo una cosa más: los archivos de track se guardan en una carpeta “WayTRKR” que aparecerá en el directorio raíz de la tarjeta de memoria. Si, lo sé… es una de esas cosas para mejorar!!!