Ver Mensaje Individual
  #1  
Viejo 16/04/14, 13:08:04
Avatar de cace0353
cace0353 cace0353 no está en línea
Usuario muy activo
Mensajes: 504
 
Fecha de registro: may 2010
Localización: Arenys de Mar (B)
Mensajes: 504
Modelo de smartphone: Pixel 8 Pro - 256 Gb.
Versión de ROM: Stock
Versión de Radio: Stock
Tu operador: Jazztel
Mencionado: 11 comentarios
Tagged: 0 hilos
Proyecto ayudas a la navegación con coche

Este Proyecto que os presento no es nuevo, es la revisión y mejora de mi primer trabajo con Tasker y que publiqué aquí http://www.htcmania.com/showthread.php?t=793483

Después de un tiempo de rodaje, durante el cual he estado realizando un proyecto para cálculo de vigas de acero, me he puesto a depurarlo y mejorarlo con la experiencia de usuario adquirida.

ANTECEDENTES

Para la navegación asistida por GPS uso habitualmente uno o dos navegadores GPS offline combinados con un avisador de radares (Radardroid).
Antes de iniciar el viaje debia: conectar la localización por GPS, subir el volumen al máximo, activar Radardroid, poner el brillo en automático y, finalmente, arrancar el navegador. Si te dejabas algo habia que volver atrás o bajar la barra de notificaciones, etc. etc.

Así pues la primera utilidad que se me ocurrió para Tasker era utilizar uno de los perfiles que la gente ha ido publicando en el foro. Luego me dije: voy a integrar la adquisición del nombre o dirección del lugar desde Google Maps con el perfil (tarea del foro: nombresitio), luego la del lugar de estacionamiento (tarea del foro:parking), luego guardar automáticamente el punto donde dejo el coche, ... y así hasta que monté un "cirio" con una base de datos de los puntos guardados, matrices, etc. El problema era que todo estaba hecho cosiendo jirones, sin responder a una estructura planificada.

DESCRIPCIÓN DEL PROYECTO

El programa trata, pues, de integrar varios perfiles y tareas publicadas en el foro con utilidades de cosecha propia, todo relativo a ayudas al posicionamiento y a la conducción, en un entorno unificado.

Hay una única escena que incluyo para explicar las funcionalidades del programa: (la escena es horizontal porque uso el teléfono en posición horizontal en el soporte del coche).





FUNCIONAMIENTO

En la zona central nos aparece un recuadro donde se muestran los datos (Dirección del lugar, Coordenadas, Fuente de adquisición de datos, Precisión, Hora y Fecha) relativos a los puntos que hemos ido almacenando o a la posición actual. Un título en la parte superior nos da la información relativa a lo se muestra en el recuadro.

Debajo de él hay tres botones que activan diferentes tareas: Nueva Busqueda, guardar el punto visualizado en la base de datos o Borrarlo.

A la derecha del recuadro, en la parte superior, podemos acceder a Google Maps para ver la posición del punto que aparece en el recuadro en Google Maps. Debajo de él un botón, con el icono de una flecha azul, abre Google Maps en modo navegación andando para que nos guie al punto indicado desde la posición actual. Las dos flechas pequeñas nos permiten "navegar" por la base de datos para elegir el punto de destino.
El botón verde "Sortir" sale del programa, apaga el GPS y la conexión a la red móvil.

En la zona de la izquierda tenemos el acceso directo a dos navegadores para coche que disparan los perfiles de activación del GPS y Radardroid. Las tareas de salida de estos perfiles ejecutan la tarea de guardar automáticamente el punto en el momento de salir del navegador (posición donde hemos dejado el coche: tarea Aparcament...). Debajo de los iconos hay un botón-commutador para ajustar la luminosidad de pantalla entre bajo (nivel 8) y brillo automático.
Finalmente, abajo a la izquierda hay un botón (azul) que copia la dirección del punto actual al portapapeles y abre la aplicación "Personas" (Contactos). Buscamos el contacto al que queremos asignar la dirección, vamos al campo de Dirección y "pegamos" el dato del portapapeles... De esta manera podemos usar los navegadores offline con la opción “Navegar a contacto”

Cuando no podemos acceder a Google (mala cobertura o por estar en el campo, p.e.) el programa substituye el contenido de la variable %Nomlloc (resultado de la tarea “nombresitio”) por %Lloc (coordenadas del lugar).

Adjunto el código en formato texto y el enlace al XML.

Código:
On-vas (8)
    A1: Si (if) [ %WIFI ~ on ]
    A2: Establecer variable [ Nombre:%Wifiactiu A:1 Calcular:Apagado Añadir:Apagado ] 
    A3: Else 
    A4: Establecer variable [ Nombre:%Wifiactiu A:0 Calcular:Apagado Añadir:Apagado ] 
    A5: Fin si (End if) 
    A6: Secure Settings [ Configuración:GPS Enabled Paquete:com.intangibleobject.securesettings.plugin Nombre:Secure Settings Cuenta atrás (segundos):0 ] 
    A7: Establecer variable [ Nombre:%ColTitolPantalla A:#FFFFFFFF Calcular:Apagado Añadir:Apagado ] 
    A8: Establecer variable [ Nombre:%ColorTitolBotons A:#FFFFFAFA Calcular:Apagado Añadir:Apagado ] 
    A9: Establecer variable [ Nombre:%ColTexteResultat A:#FFF8E2A2 Calcular:Apagado Añadir:Apagado ] 
    A10: Establecer variable [ Nombre:%ColorVoraQuadre A:#FFF8AE2AE Calcular:Apagado Añadir:Apagado ] 
    A11: Establecer variable [ Nombre:%ColorFonsBotons A:#FF605555 Calcular:Apagado Añadir:Apagado ] 
    A12: Autobrillo [ Establecer:Encendido ] 
    A13: Establecer variable [ Nombre:%Textequadre A:%Nomlloc

Font: %Origen
Precisió: %Precisio m.
Hora: %HoraGPS
Dia: %DiaGPS Calcular:Apagado Añadir:Apagado ] 
    A14: Establecer variable [ Nombre:%TitolSCR A:DARRERA POSICIÓ GUARDADA Calcular:Apagado Añadir:Apagado ] 
    A15: Mostrar Escena [ Nombre:Menu Aparcament Mostrar como:Actividad, Pantalla Completa, Sin Título Posición Horizontal:100 Posición Vertical:100 Animación:Scale Mostrar Botón Salida:Apagado Continuar tarea inmediatamente:Encendido ] 

Preparar Entorn (9)
    A1: Volumen del sistema [ Nivel:7 Mostrar:Apagado Sonido:Apagado ] 
    A2: Volumen de alarma [ Nivel:7 Mostrar:Apagado Sonido:Apagado ] 
    A3: Volumen multimedia [ Nivel:15 Mostrar:Apagado Sonido:Apagado ] 
    A4: Altavoz [ Establecer:Encendido ] 

Aparcament (10)
    A1: Si (if) [ %Lloc !~ 0 ]
    A2: Establecer variable [ Nombre:%Indexpunts A:1 Calcular:Apagado Añadir:Apagado ] 
    A3: Realizar tarea [ Nombre:Recuperar Punt Parar:Apagado Prioridad:5 Parámetro 1 (%par1): Parámetro 2 (%par2): Devolver Valor de Variable: ] 
    A4: Fin si (End if) 
    A5: Si (if) [ %Lloc ~ 0 ]
    A6: Tiempo de espera de pantalla [ Segs:15 Mins:1 Horas:0 ] 
    A7: Establecer variable [ Nombre:%Textequadre A:Estic cercant la posició actual per GPS i les xarxes de telefonia.
Trigaré uns 45 seg.
Tingues paciencia… .. Calcular:Apagado Añadir:Apagado ] 
    A8: Establecer variable [ Nombre:%TitolSCR A:CERCANT  POSICIÓ Calcular:Apagado Añadir:Apagado ] 
    A9: Limpiar variable [ Nombre:%HoraGPS Coincidencia de Patrón:Apagado ] 
    A10: Limpiar variable [ Nombre:%Origen Coincidencia de Patrón:Apagado ] 
    A11: Limpiar variable [ Nombre:%DiaGPS Coincidencia de Patrón:Apagado ] 
    A12: Limpiar variable [ Nombre:%Precisio Coincidencia de Patrón:Apagado ] 
    A13: Limpiar variable [ Nombre:%Lloc Coincidencia de Patrón:Apagado ] 
    A14: Limpiar variable [ Nombre:%Nomlloc Coincidencia de Patrón:Apagado ] 
    A15: Red móvil [ Establecer:Encendido ] 
    A16: WiFi [ Establecer:Encendido ] Si (if) [ %Wifiactiu ~ 0 ]
    A17: Obtener ubicación [ Origen:Cualquiera Cuenta atrás (segundos):30 Continuar tarea inmediatamente:Apagado Mantener Seguimiento:Apagado ] 
    A18: Establecer variable [ Nombre:%Lloc A:%LOCN Calcular:Apagado Añadir:Apagado ] 
    A19: Establecer variable [ Nombre:%Origen A:Antenes Telefonia Calcular:Apagado Añadir:Apagado ] 
    A20: Establecer variable [ Nombre:%Precisio A:%LOCNACC Calcular:Apagado Añadir:Apagado ] 
    A21: Si (if) [ %LOCACC < %LOCNACC ]
    A22: Establecer variable [ Nombre:%Lloc A:%LOC Calcular:Apagado Añadir:Apagado ] Si (if) [ %LOCTMS > %TIMES-45 ]
    A23: Establecer variable [ Nombre:%Origen A:GPS Calcular:Apagado Añadir:Apagado ] Si (if) [ %LOCTMS > %TIMES-45 ]
    A24: Establecer variable [ Nombre:%Precisio A:%LOCACC Calcular:Apagado Añadir:Apagado ] Si (if) [ %LOCTMS > %TIMES-45 ]
    A25: Fin si (End if) 
    A26: Establecer variable [ Nombre:%Nomlloc A:%nomlloc12 Calcular:Apagado Añadir:Apagado ] 
    A27: Realizar tarea [ Nombre:Nomlloc Parar:Apagado Prioridad:10 Parámetro 1 (%par1): Parámetro 2 (%par2): Devolver Valor de Variable:%Nomlloc ] 
    A28: Establecer variable [ Nombre:%Nomlloc A:Coordenades Punt: %Lloc Calcular:Apagado Añadir:Apagado ] Si (if) [ %Nomlloc ~ %nomlloc12 ]
    A29: Establecer variable [ Nombre:%HoraGPS A:%TIME Calcular:Apagado Añadir:Apagado ] 
    A30: Establecer variable [ Nombre:%DiaGPS A:%DATE Calcular:Apagado Añadir:Apagado ] 
    A31: Establecer variable [ Nombre:%TitolSCR A:POSICIÓ ACTUAL Calcular:Apagado Añadir:Apagado ] 
    A32: Establecer variable [ Nombre:%Textequadre A:Adreca: %Nomlloc

Font: %Origen
Precisió: %Precisio m.
Hora: %HoraGPS
Data: %DiaGPS            [Guardar ?] Calcular:Apagado Añadir:Apagado ] 
    A33: Reproducir Sonido Llamada [ Tipo:Notificación Sonido:Iapetus Stream:5 ] 
    A34: Tiempo de espera de pantalla [ Segs:30 Mins:0 Horas:0 ] 
Guardar Punt (23)
    A1: Array Push [ Nombre:%Punts Posición:1 Valor:%Lloc;%Nomlloc;%Origen;%Precisio;%HoraGPS;%DiaGPS Rellenar Espacios:Apagado ] 
    A2: Establecer variable [ Nombre:%Nombre_punt A:%Punts(#) Calcular:Apagado Añadir:Apagado ] 
    A3: Establecer variable [ Nombre:%TitolSCR A:POSICIÓ GUARDADA Calcular:Apagado Añadir:Apagado ] 
    A4: Establecer variable [ Nombre:%Textequadre A:Adreca: %Nomlloc

Font: %Origen
Precisió: %Precisio m.
Hora: %HoraGPS
Data: %DiaGPS Calcular:Apagado Añadir:Apagado ] 
    A5: Establecer variable [ Nombre:%Indexpunts A:1 Calcular:Apagado Añadir:Apagado ] 

Nomlloc (11)
    A1: Establecer variable [ Nombre:%par1 A:%Lloc Calcular:Apagado Añadir:Apagado ] 
    A2: Enviar Intent [ Acción:gravitybox.intent.action.CHANGE_NETWORK_TYPE Categ.:None Tipo Mime: Datos: Extra:networkType:2 Extra: Paquete: Clase: Objetivo:Broadcast Receiver ] 
    A3: Limpiar variable [ Nombre:%Nomlloc Coincidencia de Patrón:Apagado ] 
    A4: HTTP Get [ Servidor:Puerto:maps.google.com/maps/api/geocode/xml?sensor=true&latlng=%par1 Ruta: Atributos: Cookies: Cuenta atrás:10 Tipo Mime:text/xml Archivo de salida: Trust Any Certificate:Apagado Continuar Tarea Tras Error:Encendido ] 
    A5: Establecer variable [ Nombre:%nomlloc A:%HTTPD Calcular:Apagado Añadir:Apagado ] 
    A6: Si (if) [ %nomlloc ~ */formatted_address* ]
    A7: Separar variable [ Nombre:%nomlloc Separador:, Spain</formatted_address> Eliminar base:Apagado ] 
    A8: Separar variable [ Nombre:%nomlloc1 Separador:<formatted_address> Eliminar base:Apagado ] 
    A9: Establecer variable [ Nombre:%nomlloc A:%nomlloc12 Calcular:Apagado Añadir:Apagado ] 
    A10: Else 
    A11: Limpiar variable [ Nombre:%nomlloc Coincidencia de Patrón:Apagado ] 
    A12: Fin si (End if) 
    A13: Enviar Intent [ Acción:gravitybox.intent.action.CHANGE_NETWORK_TYPE Categ.:None Tipo Mime: Datos: Extra:networkType:1 Extra: Paquete: Clase: Objetivo:Broadcast Receiver ] 
    A14: Establecer variable [ Nombre:%Nomlloc A:%nomlloc Calcular:Apagado Añadir:Apagado ] 

Tornar Posicio (12)
    A1: Si (if) [ %Lloc ~ 0 ]
    A2: Establecer variable [ Nombre:%Textequadre A:NO S'HA GUARDAT CAP LLOC…

Executa la opció de Guardar Posició Calcular:Apagado Añadir:Apagado ] 
    A3: Establecer variable [ Nombre:%TitolSCR A:Cerca de punts GPS Calcular:Apagado Añadir:Apagado ] 
    A4: Else 
    A5: Secure Settings [ Configuración:GPS Enabled Paquete:com.intangibleobject.securesettings.plugin Nombre:Secure Settings Cuenta atrás (segundos):0 ] 
    A6: Enviar Intent [ Acción:gravitybox.intent.action.CHANGE_NETWORK_TYPE Categ.:None Tipo Mime: Datos: Extra:networkType:2 Extra: Paquete: Clase: Objetivo:Broadcast Receiver ] 
    A7: WiFi [ Establecer:Encendido ] 
    A8: Red móvil [ Establecer:Encendido ] 
    A9: Esperar [ MS:0 Segundos:12 Minutos:0 Horas:0 Días:0 ] 
    A10: Establecer variable [ Nombre:%Lloc1 A:%Lloc+&mode=w Calcular:Apagado Añadir:Apagado ] 
    A11: Abrir mapa [ Modo:Navegar a Dirección: Lat, Long:%Lloc1 Zoom:1 Etiqueta: ] 
    A12: Fin si (End if) 

Recuperar Punt (20)
    A1: Establecer variable [ Nombre:%Nombre_punt A:%Punts(#) Calcular:Apagado Añadir:Apagado ] 
    A2: Establecer variable [ Nombre:%TitolSCR A:Punt %Indexpunts de %Nombre_punt Calcular:Apagado Añadir:Apagado ] 
    A3: Establecer variable [ Nombre:%Textequadre A:Adreca: %Nomlloc

Font: %Origen
Precisió: %Precisio m.
Hora: %HoraGPS
Data: %DiaGPS Calcular:Apagado Añadir:Apagado ] 
    A4: Array Pop [ Variable:%Punts Posición:1 A la variable: ] Si (if) [ %Punts !~ ++ ]
    A5: Establecer variable [ Nombre:%Puntriat A:%Punts(%Indexpunts) Calcular:Apagado Añadir:Apagado ] 
    A6: Separar variable [ Nombre:%Puntriat Separador:; Eliminar base:Apagado ] 
    A7: Establecer variable [ Nombre:%Lloc A:%Puntriat1 Calcular:Apagado Añadir:Apagado ] 
    A8: Establecer variable [ Nombre:%Nomlloc A:%Puntriat2 Calcular:Apagado Añadir:Apagado ]
    A9: Establecer variable [ Nombre:%Origen A:%Puntriat3 Calcular:Apagado Añadir:Apagado ] 
   A10: Establecer variable [ Nombre:%Precisio A:%Puntriat4 Calcular:Apagado Añadir:Apagado ]
   A11: Establecer variable [ Nombre:%HoraGPS A:%Puntriat5 Calcular:Apagado Añadir:Apagado ]
   A12: Establecer variable [ Nombre:%DiaGPS A:%Puntriat6 Calcular:Apagado Añadir:Apagado ] 

Esborrar Punt (40)
    A1: Flash [ Texto:Esborrant dades punt %Indexpunts… Largo:Apagado ] 
    A2: Array Pop [ Variable:%Punts Posición:%Indexpunts A la variable: ] 
    A3: Realizar tarea [ Nombre:Recuperar Punt Parar:Apagado Prioridad:5 Parámetro 1 (%par1): Parámetro 2 (%par2): Devolver Valor de Variable: ] 
    A4: Establecer variable [ Nombre:%TitolSCR A:Punt %Indexpunts de %Nombre_punt Calcular:Apagado Añadir:Apagado ] 
    A5: Establecer variable [ Nombre:%Textequadre A:Adreca: %Nomlloc
Font: %Origen
Precisió: %Precisio m.
Hora: %HoraGPS
Data: %DiaGPS Calcular:Apagado Añadir:Apagado ]
Enlace al XML

https://dl.dropboxusercontent.com/u/...On_vas.prj.xml

NOTA: El programa utiliza Intents a Gravity box para permutar entre 2G-3G en los accesos a la red para obtener el nombre del lugar de GM. Lo he hecho así porqué, normalmente, utilizo el 2G porque mejora la cobertura y consume menos bateria. Evidentemente, si utilizais 3G, podeis eliminar esta parte o modificarlo a vuestro gusto...

Como siempre, espero que os sea útil y estoy abierto a vuestras sugerencias para mejorarlo y/o pulirlo.

Última edición por cace0353 Día 16/04/14 a las 17:38:59
Responder Con Cita
Los siguientes 4 usuarios han agradecido a cace0353 su comentario:
[ Mostrar/Ocultar listado de agradecimientos ]