Acceder

Ver la Versión Completa : Posiciónate (GPS o red), obtén un enlace a Maps y compártelo o guárdalo para luego


malkair
11/10/13, 10:45:39
Con esta tarea vamos a obtener nuestra posición (por GPS o, si no está disponible, por red), vamos a obtener un enlace válido para Google Maps y (opcionalmente) vamos a poder compartirlo como queramos. También opcionalmente vamos a guardar un archivo de texto con nuestra última localización y otro con un historial de nuestras localizaciones.

La parte de localización ya se ha puesto repetidas veces en el foro y los créditos van para su autor, que ahora no recuerdo quién es.

Empezamos con la parte de localización. La variable %PARKING es la clave, donde se guardan las coordenadas obtenidas, ya sea obtenidas por GPS (si hemos conseguido posicionamiento GPS) o por red (si no conseguimos posicionamiento GPS). La orden para encender el GPS [A6] solo funcionará siendo root y/o utilizando el plugin de Secure Settings, la mantengo a efectos meramente ilustrativos.


A1: Vibrar [ Tiempo:50 ]
A2: Limpiar variable [ Nombre:%HORAGPS Coincidencia de Patrón:Apagado ]
A3: Limpiar variable [ Nombre:%ORIGEN Coincidencia de Patrón:Apagado ]
A4: Limpiar variable [ Nombre:%PRECISION Coincidencia de Patrón:Apagado ]
A5: Limpiar variable [ Nombre:%PARKING Coincidencia de Patrón:Apagado ]
A6: GPS [ Establecer:Encendido ]
A7: Flash [ Texto:Fijando ubicación... Espera... Largo:Encendido ]
A8: Obtener ubicación [ Origen:Cualquiera Cuenta atrás (segundos):30 Continuar tarea inmediatamente:Apagado Mantener Seguimiento:Apagado ]
A9: Vibrar [ Tiempo:100 ]
A10: Establecer variable [ Nombre:%ORIGEN A:Red Calcular:Apagado Añadir:Apagado ]
A11: Establecer variable [ Nombre:%PARKING A:%LOCN Calcular:Apagado Añadir:Apagado ]
A12: Establecer variable [ Nombre:%PRECISION A:%LOCNACC Calcular:Apagado Añadir:Apagado ]
A13: Si (if) [ %LOCACC < %LOCNACC ]
A14: Establecer variable [ Nombre:%PARKING A:%LOC Calcular:Apagado Añadir:Apagado ] Si (if) [ %LOCTMS > %TIMES-45 ]
A15: Establecer variable [ Nombre:%ORIGEN A:GPS Calcular:Apagado Añadir:Apagado ] Si (if) [ %LOCTMS > %TIMES-45 ]
A16: Establecer variable [ Nombre:%PRECISION A:%LOCACC Calcular:Apagado Añadir:Apagado ] Si (if) [ %LOCTMS > %TIMES-45 ]
A17: Fin si (End if)
A18: Establecer variable [ Nombre:%HORAGPS A:%TIME Calcular:Apagado Añadir:Apagado ]
A19: Establecer variable [ Nombre:%FECHAGPS A:%DATE Calcular:Apagado Añadir:Apagado ]
A20: Flash [ Texto:Coordenadas adquiridas:
%PARKING
Precisión: %PRECISION m.
Origen: %ORIGEN
Hora: %HORAGPS Largo:Encendido ]

Opcional: escribimos dos archivos: Where_last.txt, que únicamente contendrá nuestra última localización; y Where_history.txt, que añadirá al final del mismo cada nueva localización. Este último será nuestro "diario" de localizaciones.

A21: Escribir archivo [ Archivo:Where/Where_last.txt Texto:>>%PARKING
|(+/- %PRECISION m., %ORIGEN)
#%DATE - %HORAGPS
http://maps.google.com/maps?q=loc:%PARKING
* Añadir:Apagado Añadir Nueva Línea:Encendido ]
A22: Escribir archivo [ Archivo:Where/Where_history.txt Texto:>>%PARKING
|(+/- %PRECISION m., %ORIGEN)
#%DATE - %HORAGPS
http://maps.google.com/maps?q=loc:%PARKING
* Añadir:Encendido Añadir Nueva Línea:Encendido ]

Opcional: Estos archivos podemos subirlos inmediatamente a la nube para no perderlos nunca. En mi caso, lo hago con el fantástico plugin de Foldersync:

A23: FolderSync [ Configuración:Upload_Where Paquete:dk.tacit.android.foldersync.full Nombre:FolderSync ]


Seguidamente nos quedamos con el enlace a Maps en el portapapeles (%CLIP):

A24: Copiar al portapapeles [ Texto:http://maps.google.com/maps?q=loc:%PARKING Añadir:Apagado ]
A25: Flash [ Texto:URL copiada al portapapeles:
http://maps.google.com/maps?q=loc:%PARKING Largo:Encendido ]

Ahora podemos enviar nuestra localización (ese enlace) a cualquier persona, por ejemplo compartiendo con Whastapp o Email, ordenando que se comparta mediante un intent. Únicamente compartimos el enlace, pero podemos añadir cualquier texto adicional.

A26: Enviar Intent [ Acción:android.intent.action.SEND Categ.:Default Tipo Mime:text/plain Datos: Extra:android.intent.extra.TEXT:%CLIP Extra: Paquete: Clase: Objetivo:Activity ]

En esta última acción podemos añadir otro Extra para que se comparta con un título (por ejemplo para compartir por email), así: Extra:android.intent.extra.SUBJECT:texto que queramos para el título. (Algunas apps prefieren extra.TITLE a extra.SUBJECT, probad).

Opcionalmente, si lo que queremos es simplemente guardar nuestra localización para recuperarla después, podemos compartir el enlace a Maps con Evernote, se crea así una nota con mi localización y la guardo. Posteriormente, cuando quiera recuperarla simplemente abriré Evernote y haré click en el enlace guardado en la nota, abriéndolo con Maps, que me señalará la localización guardada y también la localización en la que me encuentro en ese momento. De hecho, esto se puede hacer incluso automáticamente:

A26: Enviar intent [ Acción: com.evernote.action.CREATE_NEW_NOTE Categ.:None Tipo Mime: Datos: Extra:android.intent.extra.TITLE:Localización %DATE - %TIME Extra:android.intent.extra.TEXT:%CLIP Paquete: Clase: Objetivo:Activity ]

Lástima que la nota no se guarde automáticamente. Se podría hacer, pero para ello necesitamos un Extra:QUICK_SEND:true y solo hay espacio para dos Extras que ya tenemos ocupados (título y texto). Si prescindimos del título y metemos en el texto %DATE y %TIME además de %CLIP, podemos añadir como segundo Extra el QUICK_SEND y la nota se guarda automáticamente, que sería lo fetén (aunque se guardará con un título "raro", que mola menos :cry:).

Debo decir que yo tengo dos tareas: Una para compartir (que he llamado ShareLoc [pronúnciese "Sherlock" :D] y otra idéntica excepto en la última línea, para guardar en Evernote (que he llamado (WhereIam)]. Aaaah, y tengo una tercera tarea que se activa al recibir un SMS con una palabra mágica y tras hacer todo esto, al final en lugar de compartir o guardar en Evernote lo que hace es devolver al remitente otro SMS con el enlace a Maps. Así mi mujer podrá saber siempre dónde estoy X-D

Finalmente, decir que el enlace a Maps tiene su miga, porque al parecer hay diferentes APIs de Maps (la han cambiado hace poco, parece ser) y no todas parecen funcionar igual. Funcionará correctamente si en Maps nos sale con un pincho rojo la posición guardada y, además, nos sale con el clásico círculo azul nuestra posición actual: debemos ver las dos (guardada y actual) y no solo una de ellas. En mi caso (Android 4.3) funciona perfectamente y también funciona en un iPhone (iOS 7). Probad a ver si os funciona bien en otras versiones y vamos puliendo cosas.

Caravantes
12/10/13, 23:43:24
Fantástico trabajo, Malkair. Felicitaciones y agradecimientos porque me lo copiaré. Cuando lo pruebe quizá te haga algún otro comentario, de momento solo se me ocurre el siguiente comentario.

...podemos compartir el enlace a Maps con Evernote, se crea así una nota con mi localización y la guardo [...] Lástima que la nota no se guarde automáticamente. Se podría hacer, pero para ello necesitamos un Extra:QUICK_SEND:true y solo hay espacio para dos Extras que ya tenemos ocupados (título y texto).

Para pasar la información a Evernote hay también otra opción. Se puede enviar un correo electrónico a la cuenta de Evernote, y es totalmente automático. El envío es inmediato... siempre que se tenga conexión. Yo utilizo un plug-in llamado EMAIL ME PRO, que me permite especificar el título, el cuerpo e incluso un fichero adjunto, pudiendo utilizar variables en cualquiera de ellos.
https://play.google.com/store/apps/details?id=com.caramellabs.emailmepro&hl=es

Normalmente la nota de Evernote es creada pocos segundos después de que Tasker haya enviado el mensaje. El problema se produce cuando Android no tiene conexión a Internet; EmailMePro reintentará el envío durante un rato, y lo normal es que eso acabe generando la nota de Evernote, con el pequeño problema de que la nota no tendrá la hora correspondiente al momento del evento sino un tiempo después (siempre puedes poner la hora del evento dentro del mensaje-nota, para saber el momento exacto). Ahora bien, si pasa demasiado tiempo (algunas horas, creo) sin conexión, entonces EmailMePro acaba desistiendo y deja un aviso en la barra de notificaciones por si quieres/puedes reconectar y/o repetir el intento de enviar el mensaje.

En fin, que este procedimiento resuelve el problema que comentabas, pero tiene otros inconvenientes que también deben ser valorados para decidir cuál es el método menos malo para cada uno.

Otra cosa: para quien no tenga necesidades muy específicas, Android puede generar automáticamente un historial de ubicaciones, siempre que lo tengas adecudamente configurado. Podéis verlo en
https://maps.google.com/locationhistory/b/0
https://maps.google.com/locationhistory/b/0/dashboard
https://support.google.com/websearch/answer/2824786?hl=es

ariandroid
13/10/13, 15:40:33
Hola ,para los que siempre tenemos encendido el gps como yo, nunca se daría el caso de que la posición gps no estuviese disponible ¿No?

Por lo que ¿No bastaría con algo como esto?

ObtenerUbicación (43)
A1: Array Clear [ Nombre:%Yoahora ]
A2: Obtener ubicación [ Origen:GPS Cuenta atrás (segundos):10 Continuar tarea inmediatamente:Apagado Mantener Seguimiento:Apagado ]
A3: Establecer variable [ Nombre:%Yoahora A:http://maps.google.com/maps?q=loc:%LOC Calcular:Apagado Añadir:Apagado ]

Así con tres simples acciones tendríamos una variable con la ubicación exacta y lista para ser interpretada por el google maps y compartida por cualquier servicio.

¿NO?

Caravantes
14/10/13, 02:07:34
para los que siempre tenemos encendido el gps como yo, nunca se daría el caso de que la posición gps no estuviese disponible ¿No?

Prueba lo que ocurre cuando estás en un sótano, un parking subterráneo o en edificios grandes y cerrados que impiden la comunicación con los satélites (eso ocurre en algunos cines, salas de conciertos, discotecas, etc). En esas ocasiones puede haber una posibilidad de obtener una ubicación por antenas y/o por redes Wifi.

Caravantes
22/10/13, 02:21:03
Posiciónate (GPS o red), obtén un enlace a Maps y compártelo o guárdalo para luego

Bueno, pues ya me he currado con calma esta tarea, y añado algún comentario. En primer lugar me parece muy ingenioso el sistema para detectar cuál ubicación es mejor (comparando la precisión obtenida por Red y por GPS), y con la verificación adicional de que la ubicación de GPS sea reciente (últimos 45 segundos). Eso han sido dos puntazos de maestro. Además, la estructura de la tarea es muy simple y fácil de entender, cosa que se agradece porque facilita las operaciones posteriores de mantenimiento y mejora. También creo que es un acierto lo de copiar la URL al portapapeles, a mí no se me había ocurrido. Me he copiado algunas de estas cosas.

Como única crítica, creo que es poco acertado usar variables globales para %FECHAGPS , %HORAGPS , %ORIGEN , %PRECISION y %PARKING. No parece que esas variables vayan a ser utilizadas por otras tareas, y por lo tanto sería más adecuado haber usado minúsculas para ahorrarnos las cuatro acciones (A2 a A5) que limpian las variables, puesto que el propio Tasker se encarga de que todas las variables locales estén limpias al comenzar cada tarea. Por otro lado, cuando estemos trabajando con otra tarea y miremos su lista de variables nos vamos a encontrar con estas cinco variables globales que solo estarán estorbando o distrayendo sin utilidad alguna. Ahora bien, si pretendes usar esas variables en alguna otra tarea, entonces están bien como variables globales en mayúsculas, por supuesto.

malkair
22/10/13, 10:30:11
En primer lugar me parece muy ingenioso el sistema para detectar cuál ubicación es mejor (comparando la precisión obtenida por Red y por GPS), y con la verificación adicional de que la ubicación de GPS sea reciente (últimos 45 segundos). Eso han sido dos puntazos de maestro.
Caravantes, esa parte si mal no recuerdo es de algún post del foro, y de hace ya tiempo. La verdad es que como dices es tremendamente ingenioso-

Como única crítica, creo que es poco acertado usar variables globales para %FECHAGPS , %HORAGPS , %ORIGEN , %PRECISION y %PARKING. No parece que esas variables vayan a ser utilizadas por otras tareas,
Es cierto. En un principio esta tarea la tenía complementada por otra independiente que tenía que leer estas variables para determinar la posición guardada, de ahí que haya conservado las mayúsculas. Ahora, ya no son necesarias ya que esas variables no se usan por otra tarea y como bien dices, se pueden dejar en minúsculas.

soymicmic
28/10/13, 11:54:24
Ahora podemos enviar nuestra localización (ese enlace) a cualquier persona, por ejemplo compartiendo con Whastapp o Email, ordenando que se comparta mediante un intent. Únicamente compartimos el enlace, pero podemos añadir cualquier texto adicional. A26: Enviar Intent [ Acción:android.intent.action.SEND Categ.:Default Tipo Mime:text/plain Datos: Extra:android.intent.extra.TEXT:%CLIP Extra: Paquete: Clase: Objetivo:Activity ]

¿Cómo consigues enviar por correo ese texto? No veo cómo hacerlo sin ayuda del EmailMePro o algo parecido... (he visto que se puede hacer algo con un script python (http://quickclix.wordpress.com/2012/10/02/send-emails-from-your-android-device-using-tasker-python/), pero no se si alguno lo ha probado)

malkair
28/10/13, 13:14:13
¿Cómo consigues enviar por correo ese texto? No veo cómo hacerlo sin ayuda del EmailMePro o algo parecido... (he visto que se puede hacer algo con un script python (http://quickclix.wordpress.com/2012/10/02/send-emails-from-your-android-device-using-tasker-python/), pero no se si alguno lo ha probado)

El intent android.intent.action.SEND lo que hace es lanzar el "compartir" estándar de Android, es decir, te sale lo de "Compartir usando..." y las apps con las que se puede compartir. Entre ellas está el cliente de correo (al menos sale el de Gmail del sistema, que es el que uso).

Se puede cambiar el intent para que lance alguna acción de alguna app determinada (por ejemplo, para que guarde el enlace como una nota en Evernote). Seguro que EmailMePro tiene una acción accesible vía intent para enviar un correo. O incluso más fácil, como lo que se va a enviar está en la variable %CLIP, seguro que con un Plugin se puede hacer con facilidad.

Caravantes
06/12/13, 19:42:13
Caravantes, esa parte si mal no recuerdo es de algún post del foro, y de hace ya tiempo. La verdad es que como dices es tremendamente ingenioso-

Creo que acabo de dar con aquel post antiguo en el que te has basado, así que reconozcamos el mérito al compañero Vitorino que fue quien tuvo la primera idea de este tipo hace más de dos años (26/10/11). He encontrado su mensaje -con los agradecimientos de Caravantes y Malkair :-) en http://www.htcmania.com/showpost.php?p=3053413

hakamin
27/04/14, 20:20:29
Me parece una Tarea sencillamente genial, se me habia ocurrido usarla para crear una especie de SALVA VIDAS.

Como aficionado al MTB salgo solo en muchas ocasiones y de vez en cuando tengo algun accidente (nada serio hasta ahora). Se me habia ocurrido usar este perfil para en caso de accidente enviar por whatsapp la localización.

Tengo todo hecho salvo lo mas importante, como lanzar la tarea. Se me han ocurrido un par pero no se cual puede ser mejor:

- Ir comparando la posición y si no hay cambios en x min lanzar el aviso.
- Usar el acelerometro, pero no se si tasker puede usar el acelerometro.

Que me decis? teneis alguna idea mejor???

Gracias.

Caravantes
27/04/14, 23:49:23
Me parece una Tarea sencillamente genial, se me habia ocurrido usarla para crear una especie de SALVA VIDAS.

Hay apps específicas para eso concreto. Ejemplos:

SOS Sports ("...Esta aplicación, la he realizado porque practico Mountain Bike y en ocasiones...") https://play.google.com/store/apps/details?id=es.epinana.sosSport&hl=es

HelpMeOut (orientada a motoristas) http://masquecurvas.wordpress.com/2014/01/29/helpmeout-lite-app-imprescindible-para-moters/

- Ir comparando la posición y si no hay cambios en x min lanzar el aviso.
- Usar el acelerometro, pero no se si tasker puede usar el acelerometro.

La primera estrategia tiene el inconveniente de que gastas más batería porque consultas el GPS cada poco rato. De todas formas te puedo dar una parte del trabajo ya hecho. Hace tiempo hice una subtarea llamada UbicDistancia que recibe como parámetros dos ubicaciones (coordenadas obtenidas por GPS o similar) y calcula la distancia en metros que las separa en línea recta. De esta forma, la tarea principal no tiene que preocuparse por detalles técnicos y matemáticos (conversión de grados al sistema métrico, cálculos pitagóricos, raíces cuadradas, etc), le basta con tener las dos ubicaciones y la subtarea se encarga de esos procedimientos matemáticos para calcular la distancia. Tienes esa tarea (y otras relacionadas) en el post siguiente:
http://www.htcmania.com/showthread.php?p=11696058#post11696058

Que yo sepa, con Tasker no hay forma de utilizar el acelerómetro.

darkopro
28/04/14, 02:11:11
Que yo sepa, con Tasker no hay forma de utilizar el acelerómetro.
Creo que si que se puede pero no para este caso concreto, se pueden grabar gestos con el acelerómetro. Sólo se me ocurre asociarlo al programa GPS que usemos para ir bici y que envíe la última posición si permanecemos en mismo lugar durante X minutos haciendo una comparativa de ubicación cada X minutos.

hakamin
28/04/14, 09:24:47
Hay apps específicas para eso concreto. Ejemplos:

SOS Sports ("...Esta aplicación, la he realizado porque practico Mountain Bike y en ocasiones...") https://play.google.com/store/apps/details?id=es.epinana.sosSport&hl=es

HelpMeOut (orientada a motoristas) http://masquecurvas.wordpress.com/2014/01/29/helpmeout-lite-app-imprescindible-para-moters/



La primera estrategia tiene el inconveniente de que gastas más batería porque consultas el GPS cada poco rato. De todas formas te puedo dar una parte del trabajo ya hecho. Hace tiempo hice una subtarea llamada UbicDistancia que recibe como parámetros dos ubicaciones (coordenadas obtenidas por GPS o similar) y calcula la distancia en metros que las separa en línea recta. De esta forma, la tarea principal no tiene que preocuparse por detalles técnicos y matemáticos (conversión de grados al sistema métrico, cálculos pitagóricos, raíces cuadradas, etc), le basta con tener las dos ubicaciones y la subtarea se encarga de esos procedimientos matemáticos para calcular la distancia. Tienes esa tarea (y otras relacionadas) en el post siguiente:
http://www.htcmania.com/showthread.php?p=11696058#post11696058

Que yo sepa, con Tasker no hay forma de utilizar el acelerómetro.

Creo que si que se puede pero no para este caso concreto, se pueden grabar gestos con el acelerómetro. Sólo se me ocurre asociarlo al programa GPS que usemos para ir bici y que envíe la última posición si permanecemos en mismo lugar durante X minutos haciendo una comparativa de ubicación cada X minutos.

Gracias a los dos.

Ya se que hay programas específicos para esto que quiero, pero queria que fuese algo "mio" hecho con tasker y muy configurable.

Ya pensare como lanzo la tarea......

darkopro
28/04/14, 12:24:06
Gracias a los dos.

Ya se que hay programas específicos para esto que quiero, pero queria que fuese algo "mio" hecho con tasker y muy configurable.

Ya pensare como lanzo la tarea......

Yo creo que por ejemplo, si no estás mucho tiempo parado en ruta puedes hacerlo con dos perfiles para no tener un bucle infinito. Uno mientras está «endomondo» o el GPS que uses en la bici conectado que ponga la variable %endomondo a 1. Otro perfil que cuando endomondo sea igual a 1 establezca la variable %lugar a %LOC y que espere 10 minutos y si %LOC es igual a %lugar envíe el WhatsApp o el SMS de socorro, si no compruebe que endomondo sigue siendo 1 y vuelva a la acción uno, la de establecer %lugar a %LOC. Esto creo que se puede mejorar con el plug-in de autolocation, con el que puedes refrescar la posición en tasker justo antes de hacer las comprobaciones de %LOC.

hakamin
28/04/14, 14:59:42
Yo creo que por ejemplo, si no estás mucho tiempo parado en ruta puedes hacerlo con dos perfiles para no tener un bucle infinito. Uno mientras está «endomondo» o el GPS que uses en la bici conectado que ponga la variable %endomondo a 1. Otro perfil que cuando endomondo sea igual a 1 establezca la variable %lugar a %LOC y que espere 10 minutos y si %LOC es igual a %lugar envíe el WhatsApp o el SMS de socorro, si no compruebe que endomondo sigue siendo 1 y vuelva a la acción uno, la de establecer %lugar a %LOC. Esto creo que se puede mejorar con el plug-in de autolocation, con el que puedes refrescar la posición en tasker justo antes de hacer las comprobaciones de %LOC.


Uhmmm puede ser interesante. Esta noche lo estudio tranquilamente.

Gracias.

leromaro
12/09/14, 19:20:52
Hola: primero quería agradecer a todos por los valiosos datos que aportan, ahora vamos a la consulta, quiero aclarar que modifiqué la tarea para que me envíe un sms al recibir un texto determinado, pOr si pierdo el celu en algún sitio, todo se ejecuta bien, al recibir el mensaje dice que está ajustado por GPS, perfecto, pero al colocar una alerta flash con la variable %LOCACC, esta es "%LOCACC", y si no entiendo mal, esto es igual a cero y lógicamente va a ser menor que %LOCNACC. Además puede tomar posicionamiento y no ajustar la precisión del mismo?
Gracias

yovesmlmt
03/03/15, 01:42:09
Buen curro

z3us
03/03/15, 10:08:43
Un apunte. No entiendo la manía de la gente de desactivar el gps. Tener el gps habilitado no gasta batería a menos que una aplicación lo esté utilizando. Dicho de otra manera, no gasta batería a menos que salga el icono de gps en la barra superior.
Yo lo llevo siempre encendido

Caravantes
05/03/15, 06:59:52
No entiendo la manía de la gente de desactivar el gps.

Estoy totalmente de acuerdo con eso que dices. Yo también llevo siempre el GPS encendido, y su consumo es mínimo.