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.
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.