Tasker Para hablar de todo lo relacionado con la aplicación tasker


 
Herramientas
  #1  
Viejo 17/12/13, 14:19:59
Avatar de mlesir
mlesir mlesir no está en línea
Usuario muy activo
Mensajes: 2,263
 
Fecha de registro: abr 2012
Mensajes: 2,263
Modelo de smartphone: OnePlus One,BQ Edison1, GoogleChrome,
Versión de ROM: 4.4 Cyanogen
Tu operador: Pepephone
Mencionado: 36 comentarios
Tagged: 2 hilos
Google Maps y Http Get

Bueno pues dejarme deciros: Ole mis huevos y lo cabezón que soy!!!

Sin tener ni puñetera idea, de hecho nunca había usado lo del http get he conseguido esto:

Obtener la información de google maps de una ruta de un punto a otro. Toda la información. Desde las indicaciones, hasta el tiempo y distancia que vas a tardar. Eso si en XML. (si alguién va a decir que esto ya estaba muy visto, que seguro que es así, por favor esperaros hasta mañana y dejarme al menos un día para fliparme...jeje).

La mayor parte de la información la he sacado de aquí:

https://developers.google.com/maps/d...ions/#Audience

Es la pagina de la API de google.

Os dejo el Http get que yo he usado:

Servidor:Puerto ""https://maps.googleapis.com/maps/api/directions/xml?origin=Barcelona&destination=Madrid&sensor=tru e"" (sin las comillas y sin el espacio en tru e, os ea true, que no se por que me lo pone???)

Archivo de Salida: result.html

El resto de items en blanco.

Todo esto venía a que siempre había querido saber el nombre de la calle a partir de unas coordenadas. Por ejemplo puede ser útil para saber donde estoy, o para que el perfil de donde esta el coche te diga la calle en vez de mostrarte un mapa.
Supongo que los nombres de las ciudades que he usado se pueden sustituir por coordenadas. Y estas por variables.
No se, le veo muchas posibilidades: por ejemplo que nos muestre simplemente una lista de las indicaciones para ir a un sitio, y nosotros lo mostramos a nuestro gusto en una escena.
Por lo que he leído eso si no tiene en cuenta el tráfico para calcular lo que vas a tardar.

A ver si entre todos le sacamos más jugo a esto. Habría que ver como sacamos toda esa información luego en Tasker (eso va a ser telita!). Otra cosa es que yo he puesto xml pero se le puede poner que saque la información en formato "json" (ni idea de lo que es).
A lo mejor se puede hacer un http get que en vez de toda la información te de sólo unos datos más específicos, no lo se. Por otro lado si leeis el enlace veréis que los parámetros que he puesto son los obligatorios. Luego se le puede poner que vas en bici, que quieres pasar por este punto, que quieres evitar peajes,etc.

Última edición por mlesir Día 17/12/13 a las 14:23:49
Responder Con Cita
Los siguientes 2 usuarios han agradecido a mlesir su comentario:


  #2  
Viejo 17/12/13, 15:34:30
Avatar de rabeliyo
rabeliyo rabeliyo no está en línea
Miembro del foro
Mensajes: 271
 
Fecha de registro: sep 2010
Mensajes: 271
Modelo de smartphone: Galaxy S4
Mencionado: 2 comentarios
Tagged: 0 hilos
Tiene muy muy buena pinta, una dudilla que me trae rondando la cabeza estos dias es que a la hora de crear una escena con un mapa por ejemplo,me dice de meter las coordenadas, las cuales las tengo en una variable almacenadas pero me pide meterlas en formato numerico y ahi ya me atasco

Lo quiero implementar en el perfil de ubicacion del coche que es de donde saco las variables.


A ver si sacamos otro pedazo de perfil de todo esto
Responder Con Cita
  #3  
Viejo 18/12/13, 11:14:27
Avatar de maid450
maid450 maid450 no está en línea
Miembro del foro
Mensajes: 450
 
Fecha de registro: sep 2009
Localización: Valencia
Mensajes: 450
Modelo de smartphone: Nexus 5 / Nexus 7
Versión de Radio: Cualquiera que ponga buen Rock
Tu operador: Yoigo
Mencionado: 15 comentarios
Tagged: 0 hilos
Pues no tengo mucho tiempo ultimamente para mirarlo a fondo, pero puede ser muy interesante.
Por lo pronto para manejar estos datos en tasker lo más sencillo es usar JSON (JavaScript Object Notation) en vez de xml, ya que así, como su nombre indica, desde una acción javascript se puede acceder a todos los datos e iterar por ellos directamente, usando xml sería un infierno de separar variables y subvariables...

Como digo no puedo testearlo ahora mismo, pero en principio suponiendo que hacemos el GET que queremos, que devuelva json y almacenamos la respuesta en %resultado, se deberían poder hacer cosas como estas (javascriptlet):

Código:
//convertimos el JSON a una variable que contendrá todos los resultados
var datos = JSON.parse(resultado);
//muestra el resumen de la ruta 0 ("AP-2 y A-2")
flash(datos.routes[0].summary);
//muestra la distancia y dureción estimada de la rama (leg) 1 de la ruta (route) 1
flash(datos.routes[0].legs[0].distance.text + ' (' + datos.routes[0].legs[0].duration.text + ')');
//recorremos todos los pasos de la rama 1 de la ruta 1
for(var i=0;i<datos.routes[0].legs[0].steps.length;i++) {
    //mostramos las instrucciones para ese paso
    flash(datos.routes[0].legs[0].steps[i].html_instructions);
}
Como digo ese es un ejemplo rápido muy orientado a este caso, en realidad habría que tener en cuenta multiples posibles rutas/ramas, errores, etc...
Responder Con Cita
Los siguientes 3 usuarios han agradecido a maid450 su comentario:
[ Mostrar/Ocultar listado de agradecimientos ]
  #4  
Viejo 19/12/13, 15:47:56
Avatar de Caravantes
Caravantes Caravantes no está en línea
Usuario muy activo
Mensajes: 2,200
Compra y venta: (1)
 
Fecha de registro: feb 2011
Mensajes: 2,200
Modelo de smartphone: Samsung Galaxy S9
Versión de ROM: Android 8
Tu operador: Lowi
Mencionado: 59 comentarios
Tagged: 4 hilos
Cita:
Originalmente Escrito por mlesir Ver Mensaje
Todo esto venía a que siempre había querido saber el nombre de la calle a partir de unas coordenadas.
Eso lo tenías resuelto en un hilo de hace dos meses:
Obtener el nombre de un lugar (su dirección) sabiendo sus coordenadas
http://www.htcmania.com/showthread.php?t=703855

Esa misma tarea la he revisado y actualizado posteriormente, y la he publicado hace poco en
http://www.htcmania.com/showpost.php?p=11594637
y puedes descargarte el XML de esa tarea en este post
http://www.htcmania.com/showpost.php?p=11622033
Responder Con Cita
  #5  
Viejo 23/12/13, 23:43:17
Avatar de gonza28
gonza28 gonza28 no está en línea
Desarrollador
Mensajes: 4,191
 
Fecha de registro: feb 2012
Localización: INTERESA?
Mensajes: 4,191
Modelo de smartphone: Samsung Galaxy Note 4
Versión de ROM: Android Lollipop 5.1.1
Tu operador: Personal
Mencionado: 6 comentarios
Tagged: 0 hilos
Cita:
Originalmente Escrito por maid450 Ver Mensaje
Pues no tengo mucho tiempo ultimamente para mirarlo a fondo, pero puede ser muy interesante.
Por lo pronto para manejar estos datos en tasker lo más sencillo es usar JSON (JavaScript Object Notation) en vez de xml, ya que así, como su nombre indica, desde una acción javascript se puede acceder a todos los datos e iterar por ellos directamente, usando xml sería un infierno de separar variables y subvariables...

Como digo no puedo testearlo ahora mismo, pero en principio suponiendo que hacemos el GET que queremos, que devuelva json y almacenamos la respuesta en %resultado, se deberían poder hacer cosas como estas (javascriptlet):

Código:
//convertimos el JSON a una variable que contendrá todos los resultados
var datos = JSON.parse(resultado);
//muestra el resumen de la ruta 0 ("AP-2 y A-2")
flash(datos.routes[0].summary);
//muestra la distancia y dureción estimada de la rama (leg) 1 de la ruta (route) 1
flash(datos.routes[0].legs[0].distance.text + ' (' + datos.routes[0].legs[0].duration.text + ')');
//recorremos todos los pasos de la rama 1 de la ruta 1
for(var i=0;i<datos.routes[0].legs[0].steps.length;i++) {
//mostramos las instrucciones para ese paso
flash(datos.routes[0].legs[0].steps[i].html_instructions);
}
Como digo ese es un ejemplo rápido muy orientado a este caso, en realidad habría que tener en cuenta multiples posibles rutas/ramas, errores, etc...
Cuqando tengas tiempo podrias hacer un mini tuto de como integrar JSON en tasker? esto seria muy util si que si
Responder Con Cita
  #6  
Viejo 24/12/13, 08:58:32
Avatar de maid450
maid450 maid450 no está en línea
Miembro del foro
Mensajes: 450
 
Fecha de registro: sep 2009
Localización: Valencia
Mensajes: 450
Modelo de smartphone: Nexus 5 / Nexus 7
Versión de Radio: Cualquiera que ponga buen Rock
Tu operador: Yoigo
Mencionado: 15 comentarios
Tagged: 0 hilos
He podido probarlo y efectivamente funciona, aquí la descripción de la tarea que he hecho para probarlo:

Prueba Maps (71)
A1: HTTP Get [ Server:Port:https://maps.googleapis.com Path:maps/api/directions/json Attributesrigin=Barcelona
destination=Madrid
sensor=true Cookies: Timeout:10 Mime Type: Output File: ]
A2: JavaScriptlet [ Code:var datos = JSON.parse(global('HTTPD'));
flash(datos.routes[0].summary);
flash(datos.routes[0].legs[0].distance.text + ' (' + datos.routes[0].legs[0].duration.text + ')');
for(var i=0;i<datos.routes[0].legs[0].steps.length;i++) {
flash(datos.routes[0].legs[0].steps[i].html_instructions);
} Libraries: Auto Exit:On Timeout (Seconds):45 ]

Basicamente, en la acción HTTP Get ponemos el servidor, la ruta y en "atributos" los distintos parametros (creo que se puede poner todo en la parte "servidor" como una URL completa, pero así separado por partes me parece más limpio)
despues el codigo javascriptlet (que pegaré por separado a continuación para que se vea más claro) hace lo siguiente:

  • Usa JSON.parse sobre la variable %HTTPD que contiene la respuesta de la llamada. Al ser un objeto JSON esto extrae todos los datos de la respuesta en una variable "datos" lista para usar directamente sin tener que manejar un xml separando variables
  • muestra con "flash" ciertos datos de la ruta
  • itera mediante un for por todos los pasos de la ruta y muestra con "flash" la descripción de cada uno de ellos
aquí el javascriptlet que he usado:
Código:
var datos = JSON.parse(global('HTTPD'));
flash(datos.routes[0].summary);
flash(datos.routes[0].legs[0].distance.text + ' (' + datos.routes[0].legs[0].duration.text + ')');
for(var i=0;i<datos.routes[0].legs[0].steps.length;i++) {
    flash(datos.routes[0].legs[0].steps[i].html_instructions);
}

En cuanto al tuto de JSON, estoy preparando un tutorial del uso de javascript en tasker en general que incluirá un capitulo sobre el JSON, lo tengo un poco parado ultimamente, pero llegará
Responder Con Cita
Los siguientes 3 usuarios han agradecido a maid450 su comentario:
[ Mostrar/Ocultar listado de agradecimientos ]
  #7  
Viejo 24/12/13, 12:01:30
Avatar de mlesir
mlesir mlesir no está en línea
Usuario muy activo
Mensajes: 2,263
 
Fecha de registro: abr 2012
Mensajes: 2,263
Modelo de smartphone: OnePlus One,BQ Edison1, GoogleChrome,
Versión de ROM: 4.4 Cyanogen
Tu operador: Pepephone
Mencionado: 36 comentarios
Tagged: 2 hilos
Grande Maid.
Gonza28 en el recopilatorio tienes un minituto de maid para usar varíables.
Por cierto este verano haciendo caso a Maid me puse con el javascript y compre este libro: "Javascript" de Astor de Caso Parra editorial Anaya. El libro empieza de cero, cada cosa que se ve con su ejemplo y muy bien explicado. Imposible no entenderlo. Si queréis empezar con este lenguaje lo recomiendo.

Última edición por mlesir Día 24/12/13 a las 12:03:47
Responder Con Cita
Los siguientes 2 usuarios han agradecido a mlesir su comentario:
Respuesta

Estás aquí
Regresar   HTCMania > Todo sobre Android > Otro software para Android > Tasker


Reglas de Mensajes
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Las caritas están On
Código [IMG] está On
Código HTML está Off

Saltar a Foro



Hora actual: 00:17:02 (GMT +1)

Cookies settings
Powered by vBulletin™
Copyright © vBulletin Solutions, Inc. All rights reserved.
 
HTCMania: líderes desde el 2007