PDA

Ver la Versión Completa : [ SOLUCIONADO ] Velocímetro con ajuste gradual


emiegna
08/05/18, 07:50:51
Edición: Antes de iniciar este hilo, y a petición del compañero Caravantes, os aclaro que podéis ver la tarea resultante creada para tener un velocímetro, junto a un resumen y conclusiones de todo ello en el post #72. Agradecimientos a WillyWeb, creador de la tarea:

https://www.htcmania.com/showthread.php?p=28810729#post28810729


He visto en el recopilatorio un perfil sobre el asunto, pero claro es necesario ser root. Habria, que tener instalado gravitybox y encender GPS y red movil, algo que sin ser root no es posible, no?

Para encender GPS solo se me ocurre abrir Waze o Maps y llevarlo a segundo plano y asi mantener encendido el GPS...

¿Me olvido de la creación de una tarea como velocímetro, o podria tener esperanzas?

WillyWeb
08/05/18, 09:08:04
Creo que no necesitas nada de eso. Simplemente tienes que usar la acción "Obtener ubicación" y las variables globales %LOCxxx que proporciona Tasker.

SmartPhoneLover
08/05/18, 09:13:11
Creo que no necesitas nada de eso. Simplemente tienes que usar la acción "Obtener ubicación" y las variables globales %LOCxxx que proporciona Tasker.

Para encender el GPS y Datos, sí se necesita acceso root en el dispositivo, o en su defecto, haber otorgado el permiso 'android.permission.WRITE_SECURE_SETTINGS' a por ejemplo, AutoTools.

O no es eso a lo que se refiere exactamente?

WillyWeb
08/05/18, 09:19:32
Para encender el GPS y Datos, sí se necesita acceso root en el dispositivo, o en su defecto, haber otorgado el permiso 'android.permission.WRITE_SECURE_SETTINGS' a por ejemplo, AutoTools.

O no es eso a lo que se refiere exactamente?

Para hacer un velocímetro (de cierta precisión) sólo hace falta que se hagan mediciones por GPS, y eso se puede hacer con la acción "Obtener ubicación", que no necesita nada especial para funcionar.

emiegna
08/05/18, 09:25:14
Y supongo que finalmente habrá que establecer una variable internaca a una como por ejemplo %Velocimetro, y esta añadirla a un campo de texto de una escena...

Bueno, me toca estudiar que no tengo ni idea de la variable interna %LOC, etc :-)

WillyWeb
08/05/18, 09:31:37
Bueno, me toca estudiar que no tengo ni idea de la variable interna %LOC, etc :-)

No es sólo una variable, y una de ellas proporciona justo lo que quieres ... %LOCSPD (en metros por segundo).

SmartPhoneLover
08/05/18, 09:48:59
Para hacer un velocímetro (de cierta precisión) sólo hace falta que se hagan mediciones por GPS, y eso se puede hacer con la acción "Obtener ubicación", que no necesita nada especial para funcionar.

Ya, pero mi pregunta iva encaminada a si lo que preguntaba el usuario era que para modificar el estado del GPS y Datos en segundo plano se necesita root o no.
Vaya, al parecer según tu respuesta, ya no es necesario ni root, ni adb... Ostras, no sabia??? XD

Por lo tanto, "emiegna', dejarías el GPS y Datos encendido todo el tiempo, verdad?
En caso afirmativo, sigue a WillyWeb.

emiegna
08/05/18, 10:40:27
Bueno, bueno,... haya paz ;-)

A ver, partamos de la base que el usuario emiegna ;-) conoce Tasker desde hace ya algunos añitos, pero también es verdad que aun me considero un novato.

Ni idea de que es posible crear este tipo de tarea sin tener continuamente el GPS encendido. Gran noticia si pudiese, por el consumo.

En mi caso, entiendo que por no ser root me encuentro en la tesitura de tener una tarea con GPS continuamente encendido. No es asi?

Por otro lado, imagine que la tarea no iba a ser tan sencilla como obtener ubicacion (casillas marcadas), pasar %LOCSPD %Velocidad y luego en un campo de texto de una escena poner %Velocidad... Aquello está mas quieto que una estatua.

WillyWeb
08/05/18, 11:00:23
En mi caso, entiendo que por no ser root me encuentro en la tesitura de tener una tarea con GPS continuamente encendido. No es asi?

Vale, ya veo dónde está el problema que comentaba SmartPhoneLover. :pensando:

¿Qué entiendes tú por "GPS continuamente encendido"?

Si te refieres a tener el Modo de Ubicación en "Alta precisión" o "Solo dispositivo", eso no gasta batería mientras que una aplicación no requiera una ubicación. Y sí, para hacer el cambio de modo de ubicación es necesario tener root.

Si te refieres a que para saber la velocidad necesitas tener el GPS encendido ... así es. Se podría hacer una aproximación mediante otro tipo de ubicación, pero dudo que la precisión sea medianamente aceptable.

Por otro lado, imagine que la tarea no iba a ser tan sencilla como obtener ubicacion (casillas marcadas), pasar %LOCSPD %Velocidad y luego en un campo de texto de una escena poner %Velocidad... Aquello está mas quieto que una estatua.

Pues básicamente debería ser así de sencillo. :rolleyes:

-Activas la ubicación por GPS con la acción "Obtener ubicación".
-Esperas a tener una posición.
-Pasas el valor de %LOCSPD de m/s a k/m.
-Pones ese valor en el sitio que quieras.
-Y vuelta a empezar.

Materiales...

-Una escena
-Un perfil de variable
-Una tarea con tres o cuatro acciones

Todavía no lo he probado, pero ... :loco:

emiegna
08/05/18, 12:33:52
A ver, en principio no ha resultado nada dificil. Funcionar funciona, aunque ya sabemos que el invento "tarda en decir la verdad" uno o dos segundos. Es decir, hasta que no llevo un poco a 40 km/h de forma constante, si he acelerado por ejemplo, el invento no te dice que vas a 40, sino a 38 0 39. Luego, en uno o dos segundos te indica 40. Esto no se si es mejorable.

En segundo lugar, imagino que el consumo de bateria será importante.

En tercer lugar, como simple velocímetro, imagino que en otros términos, características, etc será muy mejorable.

¿Que fallos tiene? ¿Que puedo mejorar sin ser root?

Aqui van las tareas y a parte una escena sencilla con un cuadro de texto con la variable %Velocidad

Velocimetro (78)
A1: Obtener ubicación [ Origen:GPS Cuenta atrás (segundos):100 Continuar tarea inmediatamente:Encendido Mantener Seguimiento:Encendido ]
A2: Establecer variable [ Nombre:%Velocidadmts A:%LOCSPD Recurse Variables:Apagado Calcular:Encendido Añadir:Apagado ]
A3: Establecer variable [ Nombre:%Velocidad A:floor(%Velocidadmts*3.6) Recurse Variables:Apagado Calcular:Encendido Añadir:Apagado ]
A4: Ir a acción [ Tipo:Número Acción Número:1 Etiqueta: ]


DetenerVelocimetro (93)
A1: Detener [ Con error:Apagado Tarea:Velocimetro ]
A2: Destruir Escena [ Nombre:Velocimetro ]


EscenaVelocimetro (95)
A1: Mostrar Escena [ Nombre:Velocimetro Mostrar como:Capa Superpuesta, Bloqueada Posición Horizontal:100 Posición Vertical:100 Animación:Sistema Mostrar Botón Salida:Encendido Mostrar sobre bloqueo pantalla:Apagado Continuar tarea inmediatamente:Encendido ]

WillyWeb
08/05/18, 15:57:52
Para calcular la velocidad necesitas saber dos coordenadas y el tiempo que has tardado en llegar de la primera a la segunda.

El GPS proporciona una coordenada por segundo, así que es "complicado" calcular la velocidad en menos tiempo.

Puedes mejorar el redondeo usando "round" en vez del "floor".

Y te puedes ahorrar alguna acción así...

%Velocidad=round(%LOCSOD*3.6)

emiegna
08/05/18, 16:23:39
Gracias WillyWeb.

Yo, como siempre, tirando por el camino mas largo... Tienes razon con lo del ahorro de una acción. Es lógico. Sobra una acción.

Con round se mejora el redondeo... ¿Que quieres decir? La variable del cuadro de texto muestra numero entero. A no ser que signifique que se aproxime mas a la realidad y asi lo muestre la variable.

Obtener ubicación, en esta tarea, ¿es mejor mas tiempo o menos? Yo lo he dejado en 100. Por precisión, por mayor o menor uso de batería, no se...

Siendo root, ¿no seria necesario tener el GPS continuamente encendido? No lo entiendo. Si vuelvo a la accion 1 cada x tiempo, y no continuamente, supongo que no funcionaria por la explicación que me has dado.

Por cierto, leyendo post sobre el asunto, si antepongo el operador matematico ceil redondeo hacia arriba... Es decir, y cuando acelero, me aproximo mas a la realidad, no? Pero al reducir...

leromaro
08/05/18, 16:33:18
Hola, parece que ando por el foro haciendo propaganda a Joao, pero creo que sirve el mismo proceso que se utiliza para dar permisos al bloque de pantalla que para activar el GPS sin ser root, se que muchas veces el desafío es realizar las tareas sin plugins o aplicaciones extras, pero reo que esto abre puertas a muchos usuarios que no son root, aquí está explicado en ingles

com.joaomgcd.autotools.activity.ActivityConfigsett ings.html

WillyWeb
08/05/18, 17:20:44
Con round se mejora el redondeo... ¿Que quieres decir? ...

... si antepongo el operador matematico ceil redondeo hacia arriba... Es decir, y cuando acelero, me aproximo mas a la realidad, no? Pero al reducir...

floor(40.3)=40 // floor(40.7)=40
ceil(40.3)=41 // ceil(40.7)=41
round(40.3)=40 // round(40.7)=41

¿Eso lo deja claro?

http://tasker.dinglisch.net/userguide/en/maths.html

Obtener ubicación, en esta tarea, ¿es mejor mas tiempo o menos?

Pues ni mejor ni peor, simplemente depende de la periodicidad con la que quieras saber la velocidad, y durante cuánto tiempo. Si quieres saber tu velocidad "exacta" mientras tengas esa escena en pantalla tendrás que dejar que la ubicación por GPS capture datos de forma continua, y eso gastará algo de batería.

Siendo root, ¿no seria necesario tener el GPS continuamente encendido? No lo entiendo.

Creo que confundes "obtener una ubicación" con poder "cambiar el modo de ubicación" en Android. Si quieres datos precisos de velocidad configura la Ubicación en Android en "Alta precisión" (eso no gasta nada) y usa la acción para obtener ubicación de Tasker durante todo el tiempo que sea necesario (eso gasta un poco).

emiegna
08/05/18, 21:45:05
Bueno, asi he dejado la tarea.

Velocimetro (78)
A1: Obtener ubicación [ Origen:GPS Cuenta atrás (segundos):100 Continuar tarea inmediatamente:Encendido Mantener Seguimiento:Encendido ]
A2: Establecer variable [ Nombre:%Velocidad A:round(%LOCSPD*3.6) Recurse Variables:Apagado Calcular:Encendido Añadir:Apagado ]
A3: Ir a acción [ Tipo:Número Acción Número:1 Etiqueta:Velocimetro ]

Está claro que de las tres opciones la mejor, al menos para mi, es round. Sin duda.

Entiendo lo de Alta Precisión en Android, pero quizas con poner mas tiempo en obtener ubicación se obtenia mas o yo que se :-)

En la tarea de inicio del Modo Coche he añadido una acción, en primer lugar, de realizar tarea con prioridad 4. Detener, en ultimo lugar, al ocultar la escena negra que contiene el cuadro de texto con la variable %Velocidad. Realizar tarea, en primer lugar, con prioridad 4, al mostrar la escena negra de nuevo. Y al salir del Modo Coche detener tarea en ultimo lugar mas establecer la variable %Velocidad a 0. Todo esto porque, claro, no tiene sentido que la tarea esté ejecutandose si no lo veo... Por ejemplo en una llamada, o con Maps o Waze.

Eso si, aun no lo he probado tal como está y acabo de explicar.

¿Alguna sugerencia?

WillyWeb
08/05/18, 22:00:45
Entiendo lo de Alta Precisión en Android, pero quizas con poner mas tiempo en obtener ubicación se obtenia mas o yo que se...

Pues no. Eso solamente determina cuánto tiempo se mantiene el GPS encendido.

Eso si, aun no lo he probado tal como está y acabo de explicar.

Vale. Dime si ves los cambios de velocidad. Y luego me dices cómo lo has hecho.

¿Alguna sugerencia?

Pues sí :silbando:

¿Has analizado qué hace esa tarea una vez lanzada? ... te doy una pista ... "Continuar tarea inmediatamente:Encendido.

¿Tienes claro lo de "Mantener Seguimiento:Encendido"? :rolleyes:

emiegna
08/05/18, 23:07:41
No se si debo entender que si el tiempo que permanece encendido el GPS esta establecido en 100 segundos, si me meto en un túnel y estoy mas de 100 segundos de apaga el GPS... Pero la tarea es un bucle. Aquí tengo una curiosidad que no se si viene al caso... En obtener ubicación, ¿no es preferible como origen "cualquiera" en lugar de "GPS"?

Por otro lado, continuar tarea inmediatamente y mantener seguimiento, ¿tiene que ver con el punto 0 (continuar tarea inmediatamente) y el 1 (mantener seguimiento), para fijar distancia y tiempo empleado?

Esta mañana, en el coche de mi mujer (es nuevo) cuando marcaba su velocímetro digital 50 la tarea marcaba 48, yendo casi de forma constante en velocidad. Si permanecia cierto tiempo en la misma velocidad se equiparaban, pero casi nunca.

WillyWeb
09/05/18, 07:46:24
No se si debo entender que si el tiempo que permanece encendido el GPS esta establecido en 100 segundos, si me meto en un túnel y estoy mas de 100 segundos de apaga el GPS...

Lo que dices con esa acción son dos cosas ... 1: consigue ubicación por GPS y 2: mantén el GPS encendido 100 segundos

Haz una prueba con 10 segundos (el mínimo posible) con/sin la casilla de continuar inmediatamente. Añade otra acción detrás de esa y observa lo que pasa.

Pero la tarea es un bucle.

Y ese es el problema, que repites de forma continua ... activa la ubicación por GPS durante 100 segundos ... ¿eso no te parece poco "eficaz"?


Aquí tengo una curiosidad que no se si viene al caso... En obtener ubicación, ¿no es preferible como origen "cualquiera" en lugar de "GPS"?

Prueba.

Por otro lado, continuar tarea inmediatamente y mantener seguimiento, ¿tiene que ver con el punto 0 (continuar tarea inmediatamente) y el 1 (mantener seguimiento), para fijar distancia y tiempo empleado?

¿Has mirado para qué son esas opciones en la ayuda de Tasker?

Esta mañana, en el coche de mi mujer (es nuevo) cuando marcaba su velocímetro digital 50 la tarea marcaba 48, yendo casi de forma constante en velocidad. Si permanecia cierto tiempo en la misma velocidad se equiparaban, pero casi nunca.

Los velocímetros de los coches suelen tener un pequeño error. Lo normal es que el GPS indique la velocidad real y el coche unos 5 k/h más.

emiegna
09/05/18, 12:39:27
A ver, varias cosas.

Con 10 segundos no furula. Se ve que necesita un tiempo mínimo. Pero ni idea de cual es el idoneo relacion conexion-consumo.

Lo de conectar cada 100 segundos, que tiene relación con lo anterior, me parece como mínimo raro partiendo de la base de que hablamos de una tarea en bucle... ¿Para que cada 100 segundos entonces?

La prueba de origen con cualquiera lo he hecho fuera de casa (aun estoy en el exterior). No noto diferencia alguna.

Por último, implementar la tarea Velocimetro en el proyecto (por llamarlo de alguna manera) Modo Coche me está dando problemas... He puesto Realizar tarea Velocimetro aquí y alla, y Detener la tarea Velocimetro aquí y alla. La prioridad de Realizar tarea en 4, el resto en 5. Y aun asi en segun que casos (son muchos) la tarea no se detiene y se crean conflictos... No ocurre siempre, es lo curioso. Visibilidad de elementos en escena negra tras nueva tarea, finalizacion de sesion Modo Coche incorrecta permaneciendo la escena negra a la vista, etc, etc. Creo que esto se complica bastante, y es una pena porque la verdad es que va bastante bien y tenia pensado añadir botones con limites de velocidad...

WillyWeb
09/05/18, 13:33:58
Con 10 segundos no furula. Se ve que necesita un tiempo mínimo.

Ese dependerá del tiempo mínimo que tu GPS necesite para conseguir una ubicación. Es cuestión de probar.

Pero ni idea de cual es el idoneo relacion conexion-consumo.

Sigues mezclando cosas. El consumo mientras el GPS está pillando ubicación es siempre el mismo. Si pones 200 segundos y paras a los 10 gastará la misma batería que si pones 100 segundos y paras a los 10.

Lo de conectar cada 100 segundos, que tiene relación con lo anterior, me parece como mínimo raro partiendo de la base de que hablamos de una tarea en bucle... ¿Para que cada 100 segundos entonces?

¿Me respondes con mi pregunta? :oh:

Deberías dar una vuelta el tema de iniciar/detener la obtención de ubicación mediante las acciones de Tasker.

La prueba de origen con cualquiera lo he hecho fuera de casa (aun estoy en el exterior). No noto diferencia alguna.

Supongo que cuando Tasker le dice a Android ... dame una ubicación por "cualquier" medio disponible ... Android tira de la mejor opción posible (el GPS si tienes el modo de alta precisión activado). Se me ocurre que si cambias al modo de "ahorro de batería" (usa todo menos GPS) y repites la prueba el resultado sí que será diferente.

Por último, implementar la tarea Velocimetro en el proyecto (por llamarlo de alguna manera) Modo Coche me está dando problemas...

Es que me parece que estás corriendo mucho sin tener varias cosas claras. :pensando:

-Has dado por hecho que matando la tarea paras la ubicación (el uso del GPS).
-Mantienes la ubicación activa con un bucle que seguramente está bloqueando Tasker.
-Estás calculando la velocidad, pero todavía no has explicado la forma en la que haces visible ese valor en la escena.

Así, a bote pronto, veo esas tres cosas poco claras.

emiegna
09/05/18, 16:29:13
Ok

Bueno, iré haciendo pruebas para conectar. Probaré con 50.

Entiendo ahora lo del consumo. Da igual que sean 100, que 200. Pero con 100, ¿la tarea no es mas rapida? Si así fuese, interesa buscar un valor bajo suficiente para conectar y que haga mas rapida la tarea, no que consuma menos (el tiempo da igual de cara al consumo).

Ups! Me pillaste. Quería ir rápido, o mejor dicho, creia que seria mas facil todo esto. He ido rapido sin pararme en ningun momento... Detener ubicacion: cuando esta marcado mantener seguimiento. De entrada se me ocurre, en teoria, que debería crear una tarea que detenga la ubicación (por tener marcado el seguimiento) y luego la tarea (por el bucle).

En cuanto al origen, me queda claro. En mi caso GPS. Lo tengo en alta precisión y nunca activo el ahorro de bateria.

Vamos por los tres ultimos aspectos que planteas:

1. Debo detener antes la ubicación (Asi creo haberlo entendido).

2. ¿No detengo el bucle con la accion detener tras haber detenido antes la ubicación?

3. Ok. No lo expliqué. En la escena negra tengo visible un circulo rojo (ovalo, solo el borde) y un cuadro de texto transparente con la variable %Velocidad. Todo siempre visible (Velocimetro). De vez en cuando puede surgir información sobre el Velocimetro... Bluetooth activado/desactivado, bateria conectada/desconectada, batería: 60% (o 70%, o 30%, etc). Estas tienen fondo negro y cubren durante 2 o 3 segundos el Velocimetro. Y todas ellas surgen fruto de una tarea, obviamente.

WillyWeb
09/05/18, 19:14:15
Entiendo ahora lo del consumo. Da igual que sean 100, que 200. Pero con 100, ¿la tarea no es mas rapida? Si así fuese, interesa buscar un valor bajo suficiente para conectar y que haga mas rapida la tarea, no que consuma menos (el tiempo da igual de cara al consumo).

Sigues sin entender cómo funciona ese bucle que has hecho...

Velocimetro (78)
A1: Obtener ubicación [ Origen:GPS Cuenta atrás (segundos):100 Continuar tarea inmediatamente:Encendido Mantener Seguimiento:Encendido ]
A2: Establecer variable [ Nombre:%Velocidad A:round(%LOCSPD*3.6) Recurse Variables:Apagado Calcular:Encendido Añadir:Apagado ]
A3: Ir a acción [ Tipo:Número Acción Número:1 Etiqueta:Velocimetro ]


Activa la ubicación por GPS durante 100 segundos. No esperes los 100 segundos y pasa a la siguiente acción. No pares la ubicación aunque obtengas una medición válida.
Asigna el valor de %LOCSPD (en m/s) a %Velocidad (en k/m).
Vuelve a la primera acción.


Y ese bucle se repite cada pocos MILISEGUNDOS. Estás malgastando recursos (CPU y batería) a paladas.

http://tasker.dinglisch.net/userguide/en/help/ah_index.html (busca Get Location y Stop Location).

Ups! Me pillaste. Quería ir rápido, o mejor dicho, creia que seria mas facil todo esto. He ido rapido sin pararme en ningun momento... Detener ubicacion: cuando esta marcado mantener seguimiento. De entrada se me ocurre, en teoria, que debería crear una tarea que detenga la ubicación (por tener marcado el seguimiento) y luego la tarea (por el bucle).

Deberías detener la ubicación (y parar ese bucle de antes) cuando ya no necesites calcular la velocidad, y eso pasa cuando cierras la escena ... ¿no? ... ya tienes la tarea.

Debo detener antes la ubicación (Asi creo haberlo entendido).

Si no quieres malgastar batería deberías hacerlo, aunque la verdad es que no he probado si también se para al matar la tarea, pero sospecho que no. :pensando:

¿No detengo el bucle con la accion detener tras haber detenido antes la ubicación?

Por lo que has contado no parece que eso funcione todas las veces por ese jaleo que te traes con las prioridades.

Ok. No lo expliqué ... Y todas ellas surgen fruto de una tarea, obviamente.

¿Una tarea que hace un bucle como el del velocímetro?

bucle > kaka ... bucle > malo ... bucle > gasta batería ... bucle > si no queda más remedio

¿No se te ocurre otra forma de hacerlo? :silbando:

emiegna
09/05/18, 22:15:20
Ofú WillyWeb, lo siento mucho, pero no me entero. Llevo horas intentando entender y mirando por internet, y ya me duele la cabeza...

A ver, entiendo que el gasto es innecesario cuando encuentra la ubicacion. Y que lo sensato es detener la ubicación. Por cierto, lo suele hacer en 30 segundos. Actualmente estoy en casa y lo tengo con origen "cualquiera" (creo que coge red de datos, no GPS... pero no estoy seguro).

Dicho esto, y si es cierto, ¿para que marcar "mantener seguimiento"? Y si lo marco, debo detener la obtención de ubicación (para evitar el consumo excesivo de batería y cpu) cuando obtengo la ubicación... Se almacena en %LOC o %LOCSPD... ¿Pongo un IF a detener ubicacion cuando %LOC o %LOCSPD tiene el valor no se cual...?

Cuando cierro la escena, actualmente detengo ubicacion y luego tarea... Creo que va bien (y al menos aquí se que no malgasto). Pero esto no puedo hacerlo en la tarea del Velocímetro. Yo no puedo obtener ubicacion, con mantener seguimiento, y enseguida detener la ubicación. La tendré que detener cuando la obtenga. Es un caso distinto.

Vamos, que me estoy volviendo loco. Y encima lo poco que he visto por internet para intentar comprender nunca detienen la obtencion de ubicacion. El ejemplo del recopilatorio tiene marcada la opcion de mantener el seguimiento y no detiene la obtencion de ubicacion, con lo que el gasto será tremendo.

WillyWeb
10/05/18, 08:48:39
Ofú WillyWeb, lo siento mucho, pero no me entero. Llevo horas intentando entender y mirando por internet, y ya me duele la cabeza...

Pues paramos y aclaramos conceptos. :D

Creo que buena parte del jaleo que tienes en la cabeza es por no haberte parado a realizar una sencilla prueba para ver cómo funcionan las acciones de Tasker "Obtener ubicación" y "Detener ubicación".

Crea un atarea con estas tres acciones...

1. Obtener ubicación / GPS / 20 segundos / Continuar inmediatamente=no
2. Esperar / 5 segundos
3. Detener ubicación / GPS

Activamos el GPS durante 20 segundos y la acción espera ese tiempo antes de parar la ubicación y seguir. Esperamos 5 segundos. Y finalmente detenemos una ubicación por GPS que ya estaba parada ... el GPS ha estado activado 20 segundos.

Ahora ponemos "Continuar inmediatamente=yes" y repetimos la prueba...

Activamos el GPS durante 20 segundos, seguimos con la espera de 5 segundos y detenemos la ubicación por GPS ... el GPS ha estado activado 5 segundos, no los 20 que tenemos en la primera acción.

Ahora dejamos nada más que la primera acción (Continuar inmediatamente=yes)...

Al ejecutar se activa el GPS y la tarea termina, pero el GPS no se para. Si cierras Tasker el GPS no se para. Se parará cuando pasen esos 20 segundos sin que tú tengas que hacer nada.

Si te fijas en la barra de estado podrás ver el icono de la ubicación aparecer y desaparecer igual que cuando usas Maps o Waze.

Ahora analiza tus necesidades...

Tú no quieres una ubicación y te importa poco su precisión. Quieres el dato de velocidad que proporciona el GPS mientras está funcionando, lo que implica que lo tienes que mantener activado durante todo el tiempo que necesites tener una velocidad actualizada y fiable. Planifica tu estrategia en función de eso.

emiegna
10/05/18, 11:40:46
WillyWeb, creo que voy a tener que darme por vencido. No lo entiendo.. A ver, segun creo haberte entendido lo que importa es tener el gps continuamente encendido, o mejor dicho, que este el icono del gps continuamente en la barra de notificaciones. Si en cualquiera de los casos aplico la accion detener ubicación desaparece dicho icono. Y por tanto el velocímetro dejará de funcionar. Si no aplico la accion detener ubicación el gps se mantiene encendido. Si marco la casilla de continuar inmediatamente en obtener ubicación emplea el tiempo necesario para obtener la ubicación, pero la tarea sigue su curso mientras en ese tiempo logra conseguir la ubicación. Cuando ya la ha obtenido deberia detener la ubicación, y si la detengo con la acción detener ubicación se para el gps.

Lo siento, pero no lo veo. Cualquiera que lea este post lo primero que va a pensar es que emiegna es tonto. Lo siento, pero no lo veo.

En teoria, obtener ubicación y detenerla en cuanto la obtenga (detener ubicación), pero gps encendido, eso si ¿? Si detengo ubicación (detener ubicación) paro el gps. Entiendo que estar continuamente obteniendo ubicacion no tiene sentido, ademas de suponer un gasto... Y luego el bucle (ir a accion 1) en algun momento, no? Cuanto mas tarde en realizarse la accion "ir a accion" mejor, imagino.

No se.. Siento ser un incordio.

Edito: De marcar o no "mantener seguimiento" no me has dicho nada... Si pongo obtener ubicación 10 segundos, continuar inmediatamente y mantener seguimiento en "yes", espero 1 minuto y luego detengo ubicacion con la accion detener ubicación. Aqui pasa de la primera accion a la espera de 1 minuto casi de forma instantanea... Pero, ¿cuando se esta ejecutando la accion esperar ya no está buscando ubicación? Porque si es asi siempre dejaré el gps encendido el máximo tiempo posible (si hay un límite, pues bucle) y así hasta detener ubicación con acción detener ubicación (por ejemplo, en otra tarea).

WillyWeb
10/05/18, 13:49:27
No se.. Siento ser un incordio.

Aquí no incordia nadie. Estamos para aprender/entender cosas sobre Tasker y/o programación. Y el que no pregunta no aprende. :D

Creo que no estoy siendo capaz de explicarme. Le doy otra vuelta más.

A ver, segun creo haberte entendido lo que importa es tener el gps continuamente encendido, o mejor dicho, que este el icono del gps continuamente en la barra de notificaciones. Si en cualquiera de los casos aplico la accion detener ubicación desaparece dicho icono. Y por tanto el velocímetro dejará de funcionar.

Exacto. Necesitas mantener el GPS activo si quieres datos de velocidad de forma continua, así que no debes usar la acción de "Detener ubicación" hasta que ya no quieras más datos y debes ejecutar una nueva acción de "Obtener ubicación" cada vez que el GPS se pare por agotar el tiempo o conseguir una ubicación... y para eso necesitas hacer un bucle, pero optimizado, no a lo loco.

Si no aplico la accion detener ubicación el gps se mantiene encendido. Si marco la casilla de continuar inmediatamente en obtener ubicación emplea el tiempo necesario para obtener la ubicación, pero la tarea sigue su curso mientras en ese tiempo logra conseguir la ubicación. Cuando ya la ha obtenido deberia detener la ubicación, y si la detengo con la acción detener ubicación se para el gps.

Por lo que dice la documentación el GPS se mantiene encendido el tiempo que pongas en la acción si no se consigue una ubicación antes. Verificar eso requiere hacer una prueba en exterior que yo no he hecho.

Vamos a probar una cosa...

GPS_OnOff
1. IF %par1~on
2. Obtener ubicación / GPS / 20 seg / continuar=no / seguimiento=si
3. %Velocidad=round(%LOCSPD*3.6)
4. Ir a 2
5. ELSE
6. Detener ubicación / GPS
7. %Velocidad=0
8. ENDIF

Manejo de incompatibilidades = Abortar Tarea Existente

Con un "Realizar tarea / GPS_OnOff / %par1=on" encenderás el GPS y tendrás el dato que quieres en %Velocidad y con "%par1=off" lo apagarás y %Velocidad será cero.

Una forma de optimizarlo sería detener la ubicación si el GPS no recibe señal durante cierto tiempo, pero de momento prueba para ver si el concepto funciona.

emiegna
10/05/18, 20:12:04
Perdona WillyWeb, no te he dicho nada antes porque he estado intentando entender parte de la tarea. Sobretodo en lo que concierne a las tareas hijas (realizar tarea). No lo he usado en mi vida. Alguna vez he leido la información por encima y poco mas. Ya lo entiendo y me parece muy util. Al igual que la tarea que me enseñaste para el "Salvapantalla". Tampoco tenía ni idea y ahora me parece muy util para sacarle provecho para otras cosas.

Con respecto al resto de la tarea, con la casilla marcada de "mantener seguimiento" sí lo entiendo. Y entiendo que dejes sin marcar la casilla de continuar tarea inmediatamente para que la accion espere el tiempo que emplea en obtener la ubicación.

He probado la tarea en el coche. Funciona. Pero 2 cosas que no me ocurria con mi tarea.

1. En dos ocasiones que iba a 30 o 40 km/h se ha puesto durante 1 o 2 segundos a 0 km/h. Entiendo que habría que aumentar el tiempo de obtención de ubicación. ¿Pero cuanto mas? ¿Cuestion de ir probando?

Por cierto, ¿no sería preferible en origen poner "Cualquiera" por si estoy en un parking subterráneo o un tunel de 2 o 3 kms en una autovía?

2. Me ha parecido notar que responde mas lento a los cambios de velocidad. De esto no estoy muy seguro. De todos modos es también una duda que tenía... Supongo que conseguir que pasar de 22 km/h a 26 km/h lo haga visualmente de forma progresiva (ver 22, 23, 24, 25, 26) es, quizas, posible (o no), pero supondria mayor gasto... ¿No? (Ya me estoy pasando demasiado).

De momento he observado que no es necesario detener ubicacion y tarea (como yo tenia). Parece ser que es suficiente con detener ubicación.

Con lo de las tareas hijas es un gustazo. Muy practico. Ahora que lo entiendo lo pondré en practica para otras cosas.

En preferencias de Tasker creo recordar que recomendaba 120 segundos para GPS y 30 para Datos, ¿no? Y en algunos perfiles que he visto combinando GPS y Red de Datos ponian esos tiempos... Me acabo de acordar, perdona.

WillyWeb
10/05/18, 21:25:33
Ufff :oh:

Con respecto al resto de la tarea, con la casilla marcada de "mantener seguimiento" sí lo entiendo. Y entiendo que dejes sin marcar la casilla de continuar tarea inmediatamente para que la accion espere el tiempo que emplea en obtener la ubicación.

La casilla de "mantener seguimiento" hace que las ubicaciones a partir de la primera sean más rápidas. No marcar "continuar inmediatamente" hace que la acción espere el tiempo que pongas si no consigue antes una una posición (y el resto de valores posibles, como la velocidad).

1. En dos ocasiones que iba a 30 o 40 km/h se ha puesto durante 1 o 2 segundos a 0 km/h. Entiendo que habría que aumentar el tiempo de obtención de ubicación. ¿Pero cuanto mas? ¿Cuestion de ir probando?

Eso puede ser porque se han agotado los 20 segundos y no se ha recibido una posición. Estando en la calle eso no debería pasar casi nunca con un GPS medianamente decente. Intenta analizar en qué situaciones te ocurre eso.

Lo que sí se puede hacer es un pequeño cambio en la tarea para indicar visualmente que no tienes señal del GPS en vez de que ponga "0". ¿Te interesa? :silbando:

Por cierto, ¿no sería preferible en origen poner "Cualquiera" por si estoy en un parking subterráneo o un tunel de 2 o 3 kms en una autovía?

No. La variable %LOCSPD solamente toma valor si la fuente es el GPS.

2. Me ha parecido notar que responde mas lento a los cambios de velocidad. De esto no estoy muy seguro.

La velocidad de respuesta sólo depende de la calidad de la recepción de la señal y nunca podrá ser menor de un segundo, que es lo que tarda el GPS en dar nuevos datos. Al margen de eso verás los cambios tan rápido como "pintes" el valor de %Velocidad en tu escena.

Por cierto, ¿cómo haces esa parte? :pensando:

Supongo que conseguir que pasar de 22 km/h a 26 km/h lo haga visualmente de forma progresiva (ver 22, 23, 24, 25, 26) es, quizas, posible (o no), pero supondria mayor gasto... ¿No? (Ya me estoy pasando demasiado).

Todo es posible añadiendo unos pocos cálculos. Y ejecutar media docena de acciones de Tasker apenas tienen impacto en el consumo, así que por eso no te preocupes. Si te interesa ese "efecto" le puedo dar un par de vueltas al tema. :pensando:

De momento he observado que no es necesario detener ubicacion y tarea (como yo tenia). Parece ser que es suficiente con detener ubicación.

En realidad estas haciendo las dos cosas al mismo tiempo. Cuando %par1=on la tarea se queda en el bucle de la primera parte del IF indefinidamente. Cuando %par1=off se interrumpe la tarea en bucle y se ejecuta la parte del ELSE que detiene la ubicación y asigna valor 0 a %Velocidad. Y la tarea termina porque ya no quedan más acciones que ejecutar.

Con lo de las tareas hijas es un gustazo. Muy practico. Ahora que lo entiendo lo pondré en practica para otras cosas.

La verdad es que dan mucho juego. Llegué a esa solución después de ver que la acción "Detener" no se comportaba como yo quería con las tareas de entrada y salida de los perfiles, precisamente por culpa de las dichosas prioridades. Marcando lo de "Abortar Tarea Existente" puedes interrumpir una tarea sin tener que preocuparte de la prioridad que tiene.

En preferencias de Tasker creo recordar que recomendaba 120 segundos para GPS y 30 para Datos, ¿no? Y en algunos perfiles que he visto combinando GPS y Red de Datos ponian esos tiempos... Me acabo de acordar, perdona.

Esos valores de las preferencias son para otra cosa. Con eso estableces el tiempo que Tasker mantiene activo el GP cuando verifica el estado de un contexto de ubicación.

emiegna
10/05/18, 23:40:52
Con relación a lo de ponerse a 0, no se. Era por lugares bien despejados. Uno cerca de un radar, pero el otro caso no. Tan solo ha sido una prueba de 20 minutos. Lo iré observando. Espero que no sea cosa del movil. Creo que no es mal movil, un One Plus 3T/128Gb. Tiene ROM oficial, no Beta. Sin root. Y con Waze y Maps nunca he tenido problemas.

Para lo de aviso sin señal creo que sabría hacerlo (aunque ya no me fio de mi mismo). En cualquier caso prefiero de momento ir observando y a ver si doy con ello.

Ok. Me queda claro lo de GPS/%LOCSPD. No lo sabia. En estos casos imagino que la solución pasaria por poner el aviso que sugerias (sin señal). ¿No?

Me preguntas como "pinto" el valor de %Velocidad en la escena para ver la rapidez... Es una escena negra. Con un cuadro de texto transparente, siempre visible en cuanto se muestra la escena. El texto = %Velocidad. La escena no la creo y la muestro. Solo la muestro. Y no la oculto, sino que la destruyo.

Lo de ver de forma progresiva el aumento/disminución de velocidad me gustaria... Pero intentarlo yo, y con tu ayuda, que seguro necesitaré. De momento no se ni por donde empezar...

Por cierto, he tenido que reducir la prioridad de la tarea GPS_ON/OFF en el caso de %par1 ~ on a 4... Se bloqueaban el resto de tareas, incluido el inicio del Modo Coche. Imagino que por el bucle.

WillyWeb
11/05/18, 08:52:02
Con relación a lo de ponerse a 0, no se. Era por lugares bien despejados. Uno cerca de un radar, pero el otro caso no. Tan solo ha sido una prueba de 20 minutos. Lo iré observando. Espero que no sea cosa del movil. Creo que no es mal movil, un One Plus 3T/128Gb. Tiene ROM oficial, no Beta. Sin root. Y con Waze y Maps nunca he tenido problemas.

El OnePlus 3T de 64Gb que tengo yo es cojonudo, así que el de 128Gb no puede ser peor. ;-)

Y la mayor parte de aplicaciones que hacen uso del GPS tienen previsto pequeños cortes de recepción y no te avisan de que se ha perdido la señal hasta pasado un buen rato (minutos en algunos casos).

Para lo de aviso sin señal creo que sabría hacerlo (aunque ya no me fio de mi mismo). En cualquier caso prefiero de momento ir observando y a ver si doy con ello.

Ok. Me queda claro lo de GPS/%LOCSPD. No lo sabia. En estos casos imagino que la solución pasaria por poner el aviso que sugerias (sin señal). ¿No?

Esta nueva versión indica visualmente que no tienes señal...

GPS_OnOff v2
IF %par1~on
%gps=10
Obtener ubicación / GPS / cuenta atrás = %gps / continuar = no / seguimiento = si
IF %LOCTMS+%gps > %TIMES
%Velocidad=round(%LOCSPD*3.6)
ELSE
%Velocidad="--"
ENDIF
Volver a "Obtener ubicación"
ELSE
Detener ubicación / GPS
%Velocidad="--"
ENDIF

Manejo de incompatibilidades = Abortar Tarea Existente

Jugando con el valor de %gps puedes hacer que la tarea sea más o menos sensible a la perdida de señal, aunque durante las pruebas yo lo mantendría al mínimo (10 segundos).

Me preguntas como "pinto" el valor de %Velocidad en la escena para ver la rapidez... Es una escena negra. Con un cuadro de texto transparente, siempre visible en cuanto se muestra la escena. El texto = %Velocidad. La escena no la creo y la muestro. Solo la muestro. Y no la oculto, sino que la destruyo.

Me refería a cómo pones el valor en el elemento. Supongo que tienes un bucle que asigna continuamente el valor de %Velocidad al elemento xxx de la escena ¿...?

Lo de ver de forma progresiva el aumento/disminución de velocidad me gustaria... Pero intentarlo yo, y con tu ayuda, que seguro necesitaré. De momento no se ni por donde empezar...

Pues me parece que al final será más sencillo de lo que me había parecido en un primer momento. Tengo una prueba de concepto que solamente requiere tres o cuatro acciones más. Ya veremos qué pasa cuando la ponga en marcha. :silbando:

Por cierto, he tenido que reducir la prioridad de la tarea GPS_ON/OFF en el caso de %par1 ~ on a 4... Se bloqueaban el resto de tareas, incluido el inicio del Modo Coche. Imagino que por el bucle.

Puede ser. :pensando:

emiegna
11/05/18, 15:08:51
Sí, la verdad, el móvil está del carajo :-) Yo estoy contento con el. Es rapido el bicho...

Bueno, ya te digo que lo del aviso cuando me quedo sin señal ni de coña lo hubiese hecho como tu :-) Lo mio era mil veces mas simple y probablemente no hubiese funcionado (que triste). Por cierto, sí avisa. Y lo hace perfecto. Eso si, sobran los asteriscos. Con el guion solo, sobra y basta. No se si tendrá algo que ver con el asunto de cómo "pinto" en la escena la variable %Velocidad.

Sigue teniendo pequeños cortes, el gps. También es verdad que es porque no paro de mirarlo... Y ya no es por radares, o zonas menos despejadas, o yo que se... Es espacio abierto. Y es Sevilla capital. Por aportar que no quede :-)

He probado hasta con 40, pero sigue haciendolo. Ademas, la tarea, como es logico, muestra el valor mas tarde cuando se inicia. Lo ideal parece 10, sin duda.

Con respecto a lo de la escena y la variable %Velocidad sigo sin entenderte. Seguro que tu te explicas bien, y quizas yo no. Está tu tarea (funcionando) y en Modo Coche puede pasar, por ejemplo, de la pantalla de inicio a la escena negra. Se muestra la escena negra con un elemento texto que contiene esto: %Velocidad (se muestra su valor, claro). De forma tal que a medida que va cambiando el valor de %Velocidad en tu tarea asi se muestra en el elemento texto que te he dicho. El unico bucle que hay es el de tu tarea, que yo sepa. Insisto, hasta que no destruyo la escena el elementos texto esta continuamente visible.

Lo de la velocidad progresiva... De momento hay algo que veo complicado. Se puede pasar de 20 km/h a 27 km/h en mas o menos tiempo. En mi caso, en menos tiempo, eso si. Tengo un Alfa Romeo... Es coña ;-) Supongo que habrá que hacer uso de la variable %TIMES para el tema de decimales. Pero vamos, que de momento ni idea. No entiendo como tu lo ves tan facil. Que envidia, tio :-) Yo llevo con Tasker 3 o 4 años y no me saques de cosas sencillitas, que para mi no lo eran, eso si... AutoVoice, escenas que hacen cositas, etc. Para mi eran horas, dias y semanas...

Y lo de la prioridad a 4 finalmente no lo ha solucionado del todo. A veces se me cuelga la tarea de inicio o cierre del Modo Coche. De momento le he metido una espera de medio segundo. Ya sabes, los que no sabemos muchas veces recurrimos a este recurso, jajaja (que ingenuos somos).

WillyWeb
11/05/18, 17:39:59
Por cierto, sí avisa. Y lo hace perfecto.

Estupendo. :ok:

Sigue teniendo pequeños cortes, el gps....

He probado hasta con 40, pero sigue haciendolo. Ademas, la tarea, como es logico, muestra el valor mas tarde cuando se inicia. Lo ideal parece 10, sin duda.

Es que la recepción de la señal GPS es algo delicada y la tarea no pasa ni un fallo. Intentaré minimizar ese comportamiento con el efecto subida-bajada de velocidad.

Con respecto a lo de la escena y la variable %Velocidad ... Se muestra la escena negra con un elemento texto que contiene esto: %Velocidad (se muestra su valor, claro).

Aclarado. Esa es la forma más rápida de mostrar los cambios de valor.

Lo de la velocidad progresiva...

Tengo la idea perfectamente clara y sobre el papel funciona, pero voy a darle otra vuelta para ver si de la misma tacada puedo minimizar lo de esos cortes.

Y lo de la prioridad a 4 finalmente no lo ha solucionado del todo. A veces se me cuelga la tarea de inicio o cierre del Modo Coche. De momento le he metido una espera de medio segundo. Ya sabes, los que no sabemos muchas veces recurrimos a este recurso, jajaja (que ingenuos somos).

Yo procuro no tocar las prioridades y mis proyectos rara vez hacen cosas raras por ese tema... no te puedo decir otra cosa.

WillyWeb
11/05/18, 17:54:59
Bueno, ya te digo que lo del aviso cuando me quedo sin señal ni de coña lo hubiese hecho como tu :-) Lo mio era mil veces mas simple y probablemente no hubiese funcionado (que triste)

Lo que yo he hecho es comprobar que la hora de los últimos datos GPS obtenidos (%LOCTMS) es de hace menos que el tiempo de cuenta atrás (%gps=10). Si los datos son de hace más tiempo es porque en los últimos %gps segundos no hemos tenido señal por lo que %Velocidad = --. :pensando:

¿Tu lo habías hecho más simple? :oh:

Caravantes
11/05/18, 19:24:14
Hola.
En muchas conversaciones como ésta no suelo participar, por dos razones. Una es que suelo llegar tarde, las respuestas van muy rápidas y yo no suelo mirar el foro muy de seguido, solo una vez al día o incluso menos. La otra razón es que normalmente no tengo nada muy especial que aportar: Willy es un maestro de la programación y también de la didáctica, así que prefiero situarme como espectador y disfrutar de la lectura. Es muy instructivo, y algunas veces aprendo algo inesperado, como por ejemplo...


%gps=10
Obtener ubicación / GPS / cuenta atrás = %gps / continuar = no / seguimiento = si
IF %LOCTMS+%gps > %TIMES
%Velocidad=round(%LOCSPD*3.6)
ELSE
%Velocidad="--"


Fantástico.

Aprovecho para explicitar mi agradecimiento a Willy, y también a Emiegna por provocar y especialmente por su perseverancia. Los dos hacéis posible estos entretenidos diálogos, que me recuerdan a un buen partido de tenis. Genial.

emiegna
11/05/18, 21:43:38
¿Que WillyWeb es un maestro de la programación y la didáctica...? Yo llevo 3 o 4 años con Tasker (y miembro de este foro) y parece que lo único que se hacer es un rompecabezas de 4 piezas a su lado. Y sí, Caravantes, soy tela de cabezón :-)

Lo de establecer prioridades a las tareas me recuerda al recurso que te comenté del tiempo de espera aquí o allá. Sigue fallandome a veces, pero daré con ello. No creo que sea tema de prioridades. Será colocar bien la tarea Gps_ON/OFF en la tarea madre, o bien meter una variable simplemente que diga que no se ejecute la tarea madre hasta que la tarea hija haya finalizado. Ahi está el problema en teoria. Nada mas. Creo... :-)

"¿Tu lo habias hecho mas simple?" Verás, y tan simple... Como que ni siquiera lo habia intentado. Partia de la base de establecer una variable a 1 si se obtenia ubicacion y si esa variable era 0 pues %Velocidad = Sin señal. ¿Patético? :-) (me río por no llorar). No respondas a esta pregunta sinceramente, puedes hundir mi dignidad... ;-)

WillyWeb
11/05/18, 23:53:45
... prefiero situarme como espectador y disfrutar de la lectura. Es muy instructivo, y algunas veces aprendo algo inesperado ...

Ves, todavía puedo sorprenderte. Así que no vuelvas a decir que lo nuestro está acabado. :crybaby:

:risitas:

Aprovecho para explicitar mi agradecimiento a Willy, y también a Emiegna por provocar y especialmente por su perseverancia. Los dos hacéis posible estos entretenidos diálogos, que me recuerdan a un buen partido de tenis. Genial.

Por la parte que me toca nadie tiene nada que agradecer, y menos usted señor Caravantes. ;-)

No respondas a esta pregunta sinceramente, puedes hundir mi dignidad... ;-)

Muy tentador ... :grin:

:risitas:

Bueno, ya tengo un boceto de tarea que debería hacer ese efecto de subir-bajar la velocidad gradualmente...

GPS_OnOff v3
%novel = --
%gps = 10
IF %par1 ~ on
Obtener ubicación / GPS / cuenta atrás = %gps / continuar = si / seguimiento = si
IF %TIMES - %LOCTMS < %gps
%vel = round(%LOCSPD*3.6)
%Velocidad = %vel [IF %Velocidad ~ %novel]
%pas = 1
%pas = 5 [IF abs(%Velocidad - %vel) > 10]
%Velocidad = %Velocidad + %pas [IF %Velocidad < %vel]
%Velocidad = %Velocidad - %pas [IF %Velocidad > %vel]
ELSE
%Velocidad = %novel
ENDIF
Esperar 200 ms
Volver a "Obtener ubicación"
ELSE
Detener ubicación / GPS
%Velocidad = %novel
ENDIF

Manejo de incompatibilidades = Abortar Tarea Existente

Ojo que tiene varios cambios con respecto a la versión anterior.

Mi primera idea era muy simple y subía-bajaba en pasos de uno. Luego me he dado cuenta de que si el salto de velocidad llega a ser muy grande la subida-bajada se puede eternizar aunque se hagan unos cinco cambios por segundo (con esa espera de 200 ms es lo que sale). Lo he resuelto haciendo pasos de 5 si la diferencia de velocidad es mayor de 10.

Tal como está, un salto de 50 a 60 se ajusta en un par de segundos en pasos de uno y un salto de 60 a 20 se ajustaría en unos tres segundos, al principio en pasos de 5 y al final en pasos de uno.

Creo que así queda bien, pero ya me contarás. :pensando:

Por cierto, los [IF...] son esas condiciones que se activan en cada acción al final de la ficha.

WillyWeb
12/05/18, 10:36:35
Lo de establecer prioridades a las tareas me recuerda al recurso que te comenté del tiempo de espera aquí o allá. Sigue fallandome a veces, pero daré con ello. No creo que sea tema de prioridades...

No estaría yo tan seguro. :pensando:

Las prioridades mal gestionadas te pueden volver loco. Para eso tienes que comprender con detalle cómo funcionan...

http://tasker.dinglisch.net/userguide/en/tasks.html ... mira en "Task Scheduling"

*Te pongo la versión en inglés porque la versión en español es demasiado vieja y ya no es fiable.

Como puedes ver la prioridad depende de la forma en la que se lanzada la tarea. Si tú pones un valor "a mano" interfieres en la gestión que hace Tasker y eso no siempre sale bien. Una forma de determinar si la tarea que estoy lanzando (desde un botón, o con un Realizar tarea) se tiene que ejecutar "ya" o cuando termine lo que estaba haciendo, pero manteniendo el orden relativo de prioridades, es poniendo (%prority+1 o %priority-1). Y para detener tareas relacionadas con perfiles no he encontrado nada mejor que los de "interrumpir" jugando con el "Manejo de incompatibilidades".

Cuando terminemos con el velocímetros podemos mirar con calma ese proyecto que dices que te falla a veces.

emiegna
12/05/18, 14:40:39
Te hago caso. Miraré el enlace. De momento no está fallando como lo he dejado, pero... Si lo dudas, seguro que tarde o temprano me fallará.

He repasado la ultima tarea y creo que debo haber hecho algo mal. La copio y pego aquí. Luego quiero tratar de comprenderla.

VelocimetroON/OFF (12)
Abortar Tarea Existente
A1: Establecer variable [ Nombre:%novel A:- Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ]
A2: Establecer variable [ Nombre:%gps A:10 Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ]
A3: Si (if) [ %par1 ~ on ]
A4: Obtener ubicación [ Origen:GPS Cuenta atrás (segundos):%gps Continuar tarea inmediatamente:Encendido Mantener Seguimiento:Encendido ]
A5: Si (if) [ %TIMES-%LOCTMS < %gps ]
A6: Establecer variable [ Nombre:%vel A:round(%LOCSPD*3.6) Recurse Variables:Apagado Calcular:Encendido Añadir:Apagado ]
A7: Establecer variable [ Nombre:%Velocidad A:%vel Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ] Si (if) [ %Velocidad ~ %novel ]
A8: Establecer variable [ Nombre:%pas A:1 Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ]
A9: Establecer variable [ Nombre:%pas A:5 Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ] Si (if) [ abs(%Velocidad-%vel) > 10 ]
A10: Establecer variable [ Nombre:%Velocidad A:%Velocidad+%pas Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ] Si (if) [ %Velocidad < %vel ]
A11: Establecer variable [ Nombre:%Velocidad A:%Velocidad-%pas Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ] Si (if) [ %Velocidad > %vel ]
A12: Else
A13: Establecer variable [ Nombre:%Velocidad A:%novel Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ]
A14: Fin si (End if)
A15: Esperar [ MS:200 Segundos:0 Minutos:0 Horas:0 Días:0 ]
A16: Ir a acción [ Tipo:Número Acción Número:4 Etiqueta: ]
A17: Else
A18: Detener Ubicación [ Origen:GPS ]
A19: Establecer variable [ Nombre:%Velocidad A:%novel Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ]
A20: Fin si (End if)


El elemento texto arroja valores como 1+1, y no se que...

WillyWeb
12/05/18, 14:50:08
El elemento texto arroja valores como 1+1, y no se que...

Eso es porque en A10 y A11 te falta marcar "Calcular".

emiegna
12/05/18, 16:13:27
WillyWeb, eres increíble... Te admiro, en serio. No se como sabes tantisimo de todo esto. Y que fácil lo ves. Ya me diras por donde empiezo. Seguro que partiendo de cero. Es impresionante, de verdad. Te envidio. Te lo digo en serio, y no es por alabarte... ¿Por donde empiezo?

Lo de las prioridades, sencillamente, gracias. Creo que te he entendido perfectamente. Si cuando lo ponga en practica no lo hago bien, no te preocupes, seguro que te explicaste correctamente. Pero ya te digo, de entrada lo he entendido perfectamente.

La tarea de velocidad "gradual" solo lo he probado un poco por la ventana. Lo poco que he probado, perfecto. Te iré diciendo. Creo haber entendido tu explicación, pero quiero mirar bien cada paso que has creado. Siendo honesto pensé en marcar calcular aqui y allá, pero sin entender bien todavia la tarea me parecia una salida poco inteligente. Prefiero entenderla y luego darme cuenta lo que sobra y/o lo que falta (en otros casos).

Lo que se aprende contigo.

Gracias, tio :-)

WillyWeb
12/05/18, 17:45:35
Ya me diras por donde empiezo ... ¿Por donde empiezo?

Pues hombre, leer el manual de Tasker y/o consultar la ayuda de la aplicación es un buen punto de partida. Eso y el contenido del recopilatorio (https://www.htcmania.com/showthread.php?t=541152) me han aportado el 99% de mis conocimientos sobre Tasker. El otro 1% es fruto de mi genialidad innata ... ¿o es al revés? :pensando:

:risitas:

Ahora en serio. Tú sabes bien que nadie nace enseñado y que el estudio lo es todo. ;-)

Lo de las prioridades, sencillamente, gracias. Creo que te he entendido perfectamente. Si cuando lo ponga en practica no lo hago bien, no te preocupes, seguro que te explicaste correctamente. Pero ya te digo, de entrada lo he entendido perfectamente.

Pues me alegro. Las prioridades son un mecanismo muy potente y precisamente por eso no son fáciles de gestionar.

Siendo honesto pensé en marcar calcular aqui y allá, pero sin entender bien todavia la tarea me parecia una salida poco inteligente.

Como norma general todo lo que parezca/necesite una operación matemática requiere marcar la casilla "Calcular".

Prefiero entenderla y luego darme cuenta lo que sobra y/o lo que falta (en otros casos).

Pues no es una tarea especialmente complicada de entender...

VelocimetroON/OFF (12)
Abortar Tarea Existente
A1: Establecer variable [ Nombre:%novel A:- Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ]
A2: Establecer variable [ Nombre:%gps A:10 Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ]
A3: Si (if) [ %par1 ~ on ]
A4: Obtener ubicación [ Origen:GPS Cuenta atrás (segundos):%gps Continuar tarea inmediatamente:Encendido Mantener Seguimiento:Encendido ]
A5: Si (if) [ %TIMES-%LOCTMS < %gps ]
A6: Establecer variable [ Nombre:%vel A:round(%LOCSPD*3.6) Recurse Variables:Apagado Calcular:Encendido Añadir:Apagado ]
A7: Establecer variable [ Nombre:%Velocidad A:%vel Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ] Si (if) [ %Velocidad ~ %novel ]
A8: Establecer variable [ Nombre:%pas A:1 Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ]
A9: Establecer variable [ Nombre:%pas A:5 Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ] Si (if) [ abs(%Velocidad-%vel) > 10 ]
A10: Establecer variable [ Nombre:%Velocidad A:%Velocidad+%pas Recurse Variables:Apagado Calcular:Encendido Añadir:Apagado ] Si (if) [ %Velocidad < %vel ]
A11: Establecer variable [ Nombre:%Velocidad A:%Velocidad-%pas Recurse Variables:Apagado Calcular:Encendido Añadir:Apagado ] Si (if) [ %Velocidad > %vel ]
A12: Else
A13: Establecer variable [ Nombre:%Velocidad A:%novel Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ]
A14: Fin si (End if)
A15: Esperar [ MS:200 Segundos:0 Minutos:0 Horas:0 Días:0 ]
A16: Ir a acción [ Tipo:Número Acción Número:4 Etiqueta: ]
A17: Else
A18: Detener Ubicación [ Origen:GPS ]
A19: Establecer variable [ Nombre:%Velocidad A:%novel Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ]
A20: Fin si (End if)

Antes de nada un consejo: pon una etiqueta en A4 y salta a esa etiqueta en A16. De esa forma podrás poner/quitar acciones sin romper ese bucle.

La tarea está diseñada para interrumpirse a sí misma en función del parámetro %par1 que se le pase. Con %par1=on se activa el GPS y se calcula la velocidad, y con %par1=off (o cualquier otra cosa) se desactiva el GPS y se deja de calcular.

En A1 se asigna el símbolo que se usará para indicar que no se puede medir la velocidad.

En A2 se asigna el tiempo de cuenta atrás para la obtención de datos por GPS.

La parte A3-A16 (%par1=on) es la que hace todo el trabajo.

La parte A17-A20 (%par1=off) es la que desactiva el GPS y no creo que requiera muchas aclaraciones.

En A4 se activa el GPS y en A5 se comprueba si los datos obtenidos son más viejos que el tiempo de cuenta atrás (%gps=10). Si son viejos saltamos a A13 indicándolo en el valor de %Velocidad. En A15 hacemos una pequeña espera y en A16 repetidos el bucle de adquisición de datos.

La parte "interesante" está entre A6 y A11, que se ejecuta siempre que obtenemos datos fiables del GPS.

En A6 ponemos la velocidad actual en k/m y la guardamos en una variable local/temporal. En A7 asignamos el resultado anterior a %Velocidad si previamente no tenía valor.

En A8 y A9 calculamos cómo tienen que ser los pasos (%pas) para hacer el ajuste gradual de la velocidad. Por defecto será 1 a no ser que la diferencia entre la velocidad anterior y la nueva sea superior a 10 en cuyo caso %pas=5. En A9 he usado la función matemática abs() que devuelve el valor absoluto de una operación. Eso hace que el resultado de la resta mida la diferencia relativa entre ambas velocidades sin importar si el resultado es positivo o negativo.

Y para finalizar esta parte, en A10 y A11 se suma/resta el paso calculado anteriormente a %Velocidad dependiendo de las circunstancias.

Creo que no se puede hacer más simple. :pensando:

Una cosa más. Esta tarea no soluciona el tema de los cortes de señal pero casi prefiero que haga lo que hace para tener indicación visual de que no se puede calcular la velocidad porque no se reciben datos. Cualquier solución a esa situación implica "engañar" al usuario retrasando esa indicación, pero si tienes mucho interés en el tema podemos mirar una forma de hacerlo.

emiegna
12/05/18, 20:17:54
Sencillamente me parece magistral. Creo entenderte bien cuando dices que es preferible "sacrificar" los posibles cortes de señal en favor de esta tarea para "no liarla". De la 8 a la 11... Uff, es lo que yo sacaria despues de mucho tiempo leyendo todo sobre Tasker (siempre he leido a saltos y buscando cosas determinadas) y practicando mucho. De la 8 a la 11 he tenido que darme un paseo, tio... Me dado hasta dolor de cabeza. Que sí, que se que mejor no se puede explicar, pero déjame leerlo mas veces :-)

Este fin de semana no uso el coche. Asi que me pondre a mirar lo que me has comentando de las prioridades y entender bien lo de las propiedades de las tareas, siempre lo he usado un poco a lo loco, vamos, probando. Y no es lo sensato. Ganas tengo ya de probar tu tarea en el coche. Por la ventana va muy bien, pero los vecinos ya me miran mal...

Edito: Repasando tus "enseñanzas"... Inicio sesion Modo Coche. Tu tarea y varias acciones = problemas. Posible solución = tu tarea con %priority+1 y mis acciones en una tarea con -1. ¿Que te parece, maestro? :-) Lo voy a probar :-) ("Adelante, pequeño saltamontes")

emiegna
14/05/18, 12:37:36
Bueno, ya he estado observando bien la tarea, y he estado repasando tus indicaciones.

1. En Realizar tarea estaba equivocado. Como funciona correctamente, por ejemplo en el inicio de sesion de Modo Coche, es en primer lugar mi conjunto de acciones y luego un Realizar tarea (tu tarea) con prority-1. Y en otras tareas, igualmente. Va perfecto. No hay conflictos.

2. He observado que ya no hay cortes del GPS. Creo que es debido a que en la acción Obtener ubicación tenemos marcada la casilla Continuar tarea inmediatamente. En las primeras tareas que se probaron tampoco habia cortes y también teníamos activada la casilla. En cuanto se ha dejado de marcar han surgido los cortes ocasionales.

3. La tarea con velocidad gradual funciona perfectamente. Tan solo que cuando se acelera rápido o se frena mas o menos bruscamente tarda un poco en llegar a la velocidad real. Por ejemplo, voy a 15 y me pongo a 0 en 2 o 3 segundos. El velocimetro entonces marca 10 (aproximadamente) y va reduciendo el valor hasta llegar a 0 cuando llevo unos segundos realmente a 0. Quizas la clave esté en la accion 9 (%pass 5). Tengo que probar.

También es cierto que me he fijado en el velocimetro que tiene Waze o bien el velocimetro digital del coche de mi mujer y no lo hacen gradualmente, sino a saltos. Quizás por algo evitan los pasos de forma gradual, ¿no?

Caravantes
14/05/18, 15:50:54
Tan solo que cuando se acelera rápido o se frena mas o menos bruscamente tarda un poco en llegar a la velocidad real. Por ejemplo, voy a 15 y me pongo a 0 en 2 o 3 segundos. El velocimetro entonces marca 10 (aproximadamente) y va reduciendo el valor hasta llegar a 0 cuando llevo unos segundos realmente a 0.

Es lógico. Creo que, en principio, el sistema GPS solo calcula directamente el dato de la ubicación. Luego -por software- se procesa la distancia recorrida desde la anterior ubicación y el tiempo entre ambas, calculando así la velocidad como un dato secundario. Además de eso, debes tener en cuenta que la información del GPS se renueva cada segundo, como muy pronto, según habéis comentado.

Por todo ello es habitual que exista cierta demora en el cálculo de la velocidad, demora que típicamente puede estar entre 1 y 2 segundos. Yendo en coche puedes reducir la velocidad real desde 15 a 0 en dos segundos, pero el GPS normalmente no va a mostrar la reducción progresiva.

O bien lo hacen en dos saltos como Waze, o bien usan trucos adicionales de programación -como ha hecho Willy- para acabar mostrando una variación más progresiva pero que es algo simulado que no se basa en mediciones reales intermedias. En todo caso, mostrar una variación progresiva no va a evitar la demora, e incluso puede que la incremente levemente la demora, dependiendo de la programación.

Emiegna, me parece que puedes darte por contento con la tarea obtenida, especialmente porque ya no ves cortes en la señal GPS y porque también parece que has arreglado todos los problemas de prioridades. Quizá todavía se pueda mejorar alguna cosa adicional, pero creo que las posibles mejoras solo podrían estar relacionadas con la interface (la escena y la forma de mostrar los datos). Sospecho que el dato de la velocidad ya no vas a mejorarse de forma significativa. Por lo que dices funciona bastante bien y no es peor que Waze u otros sistemas digitales basados en GPS.

Felicitaciones, campeón. :campeon:

Para terminar, te hago una petición. Edita el primer post y en el título... quita los signos de interrogación. "Crear velocímetro sin root" ya no debe ser una pregunta sino una afirmación. :risitas:

emiegna
14/05/18, 16:29:25
Pues sí, Caravantes... Tienes toda la razón. Ya con la programación de WillyWeb se consigue lo mismo que con Waze y velocímetros digitales y encima visualmente parece aun más real que aquellos. Lo del segundo del GPS es el límite, y ahi no se puede hacer nada. Por eso Waze funciona asi. Normal.

Estoy mas que satisfecho. Y desde luego he aprendido bastante con WillyWeb. Es increible.

Por mi está más que solucionado. No esperaba tanto.

Gracias WillyWeb, y a ti Caravantes :-)

WillyWeb
14/05/18, 16:53:14
Como funciona correctamente, por ejemplo en el inicio de sesion de Modo Coche, es en primer lugar mi conjunto de acciones y luego un Realizar tarea (tu tarea) con prority-1. Y en otras tareas, igualmente. Va perfecto. No hay conflictos.

Estupendo. :ok:

He observado que ya no hay cortes del GPS. Creo que es debido a que en la acción Obtener ubicación tenemos marcada la casilla Continuar tarea inmediatamente...

Pues no debería ser por eso. Lo que realmente cambia la situación es lo de "Mantener Seguimiento:Encendido". :pensando:

La tarea con velocidad gradual funciona perfectamente. Tan solo que cuando se acelera rápido o se frena mas o menos bruscamente tarda un poco en llegar a la velocidad real...

Sospecho que el dato de la velocidad ya no vas a mejorarse de forma significativa. Por lo que dices funciona bastante bien y no es peor que Waze u otros sistemas digitales basados en GPS.

Cero que todavía queda margen para mejorar. :silbando:

A9: Establecer variable [ Nombre:%pas A:floor(abs(%Velocidad-%vel)/2) Recurse Variables:Apagado Calcular:Encendido Añadir:Apagado ] Si (if) [ abs(%Velocidad-%vel) > 3 ]

Eso hace que los pasos del ajuste sean más grandes cuánto mayor sea la diferencia de velocidad y deja pasos de uno si la diferencia es muy pequeña (de 1, 2, 3 k/m).

Supongamos que das un frenazo y pasas de...

30 a 0 ... 15 ... 8 ... 4 ... 2 ... 1 ... 0 ... ajustado en poco más de un segundo.
50 a 0 ... 25 ... 13 ... 7 ... 4 ... 2 ... 1 ... 0 ... ajustado en poco menos de segundo y medio.
120 a 80 ... 100 ... 90 ... 85 ... 83 ... 82 ... 81 ... 80 ... ajustado en poco menos de segundo y medio.

Acelerando sería lo mismo ... si es que puedes acelerar a ese ritmo. :sisi1:

Y me parece que todavía quedan un par de cartuchos. :pensando:

WillyWeb
14/05/18, 17:02:03
Edita el primer post y en el título... quita los signos de interrogación. "Crear velocímetro sin root" ya no debe ser una pregunta sino una afirmación.

Y lo de "sin root" también se podría quitar ... ¿no? :oh:

La tarea ha terminado siendo "Velocímetro con ajuste gradual".

emiegna
14/05/18, 18:22:27
Sustituyo la accion 9. Una duda, ¿no es mejor round en lugar de floor? Por el tema del redondeo que me explicaste.

Cambio el título del post. Es mas descriptivo con relación a lo que finalmente se ha llegado.

Te cuento mañana con la acción 9 sustituida.

Al final te vas a tener que poner en contacto con Waze (Google). Yo te represento... ;-)

WillyWeb
14/05/18, 18:41:01
Sustituyo la accion 9. Una duda, ¿no es mejor round en lugar de floor? Por el tema del redondeo que me explicaste.

En esa operación floor hace justo lo que pretendía, redondear hacia abajo para llegar a los tres últimos pasos en saltos de uno ... creo. :pensando:

Con round el valor de %pas valdría uno más en ciertos casos y el ajuste no se comportaría siempre igual.

De todas formas tengo otra solución que ahorra una acción. Prueba eso y si funciona a tu gusto probamos el penúltimo cartucho. ;-)

emiegna
14/05/18, 19:37:00
Vale :-)

Pero que te quede claro que tal como está ya es una obra de arte ;-)

Te cuento mañana.

Edito: Por cierto, quería preguntarte... Con el valor 3 de abs(%Velocidad-%vel) > 3 se podría jugar? Es decir, si pongo mayor valor (5), los pasos de ajuste a mas velocidad aun serán mas grandes?

WillyWeb
14/05/18, 20:53:32
No. Ese 3 determinar el número de pasos finales que se ajustarán de uno en uno. El cartucho que te he comentado antes va en esa dirección. Si puedes/quieres prescindir de ese ajuste "fino" la operación se puede hacer de otra manera y ahorrar una acción.

Y los pasos ya son razonablemente grandes (la mitad de la diferencia de velocidad). Ten en cuenta que con un frenazo de 50 a 0 el primer paso es de 25... ¿quieres más?

emiegna
14/05/18, 22:35:15
Ok. Entiendo ahora lo del 3.

WillyWeb. A falta de la prueba de mañana yo ya lo veo literalmente perfecto. ¿Tu que harias/decidirias?

WillyWeb
14/05/18, 22:59:15
A falta de la prueba de mañana yo ya lo veo literalmente perfecto. ¿Tu que harias/decidirias?

Prueba esa versión y mañana te pongo la otra. Se ahorra una acción y el ajuste es un poco más rápido a costa de reducir ligeramente ese efecto tan gradual. Luego tú decides con cuál te quedas.

emiegna
15/05/18, 12:12:41
Está perfecto, WillyWeb. Ya lo he probado. Sigue el efecto gradual, pero es mas rápido (saltos) en frenazos y acelerones. Aunque algo me dice que tu te decantarias por quitar una accion a costa de perder un poco ese efecto gradual y lograr el ajuste antes. Este último caso sería un punto intermedio entre el "efecto Waze" y "tu efecto gradual"... Asi pensado sería perfecto, eso si.

WillyWeb
15/05/18, 12:50:22
Sigue el efecto gradual, pero es mas rápido (saltos) en frenazos y acelerones.

Genial. :thumbup:

Aunque algo me dice que tu te decantarias por quitar una accion a costa de perder un poco ese efecto gradual y lograr el ajuste antes...

Pues tampoco te creas que afectaría tanto al efecto. :pensando:

Con la versión actual...

Establecer variable [ Nombre:%pas A:1 Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ]
Establecer variable [ Nombre:%pas A:floor(abs(%Velocidad-%vel)/2) Recurse Variables:Apagado Calcular:Encendido Añadir:Apagado ] Si (if) [ abs(%Velocidad-%vel) > 3 ]

De 30 a 0 ... 15 ... 8 ... 4 ... 2 ... 1 ... 0
De 50 a 0 ... 25 ... 13 ... 7 ... 4 ... 2 ... 1 ... 0
De 120 a 80 ... 100 ... 90 ... 85 ... 83 ... 82 ... 81 ... 80

Con la nueva...

Establecer variable [ Nombre:%pas A:ceil(abs(%Velocidad-%vel)/2) Recurse Variables:Apagado Calcular:Encendido Añadir:Apagado ]

De 30 a 0 ... 15 ... 7 ... 3 ... 1 ... 0
De 50 a 0 ... 25 ... 12 ... 6 ... 3 ... 1 ... 0
De 120 a 80 ... 100 ... 90 ... 85 ... 82 ... 81 ... 80

Una acción menos. Un IF menos. Un paso de ajuste menos (-200 ms). Casi el mismo efecto. :silbando:

emiegna
15/05/18, 13:44:29
Uff, a esto le llamo rizar el rizo... Más no se puede. Efecto gradual y llegar, a la velocidad real antes que en la anterior tarea. Aqui, por ejemplo, tras frenar y quedar parado totalmente llegará a 0 antes, sin perder efecto gradual. Es mas perfecto aun, tio!! A ver si lo puedo probar esta tarde. Ganas tengo ya :-) Y encima una acción menos, con lo que entiendo la tarea será más rapida. A ver si puedo probarla esta tarde y te cuento.

Eres un genio. Es de recopilatorio. Ponlo tu, que es tuyo :-)

WillyWeb
15/05/18, 13:52:29
Cuando quites la acción que te sobra recuerda lo que te comenté en el post #41 sobre poner una etiqueta a la acción de "Obtener ubicación" en A4 y saltar a esa etiqueta desde "Ir a acción" en A16. Si no lo haces el bucle ya no será entra los puntos que debe y la tarea dejará de funcionar.

emiegna
15/05/18, 20:37:45
Probado. Me quedo con esta, sin duda. Es el equilibrio perfecto. Que vas despacio, gradual-normal. Que das un aceleron o un frenazo, alcanzas antes la velocidad real a saltos. Es perfecto, WillyWeb. Paténtalo ya!! :-)

Solo una aclaración para quien quiera probarlo... Al quitar la accion de %pas 1 las etiquetas son de la 15 a la 4, claro está. Por si alguien se despista.

Está genial!! Y encima ahora que he descubierto (a la vejez) Auto Tools, he puesto el Modo Coche en modo inmersivo y queda más "auténtico" ;-)

WillyWeb
15/05/18, 20:41:13
Probado. Me quedo con esta, sin duda.

Ya lo suponía. ;-)

Solo una aclaración para quien quiera probarlo... Al quitar la accion de %pas 1 las etiquetas son de la 15 a la 4, claro está.

Eso te pasa por no hacer caso de mis dos advertencias. Anda, mira el mensaje justo anterior al tuyo. :facepalm:

emiegna
15/05/18, 23:21:58
:oops:

WillyWeb
16/05/18, 07:48:41
Creo que todavía podemos mejorar el invento un poco más. :pensando:

-Elimina la acción que asigna valor a la variable %gps.
-En la acción de "Obtener ubicación" pon la "cuenta atrás" en 10.
-En el IF que comprueba el tiempo cambia %gps por un 20.

Con eso ahorramos una acción, al iniciar la tarea esperamos lo mínimo para saber si tenemos señal GPS y hacemos la tarea algo menos sensible a los posibles cortes de señal una vez que esté funcionando.

Prueba y me cuentas. :palomitas:

emiegna
16/05/18, 13:58:57
Probado. Desde luego ni un solo corte. Y noto con esta nueva versión que al parar el coche la variable indica 0 antes aun. Al mismo tiempo que si acelero fuerte indica mas rápidamente la velocidad real. No dejas de superarte!! :aplausos:

Por lo menos te muestro como va mi Modo Coche... Aun queda mucho por añadir (no tiembles, tranquilo). Modo inmersivo gracias a AutoTools. BT (Bluetooth activar/desactivar), VE (Velocímetro activar/desactivar), MP (Google Maps) y WZ (Waze). Color rojo porque mi cuadro de mandos y consola tiene todas las luces rojas.

WillyWeb
16/05/18, 17:13:56
Probado. Desde luego ni un solo corte. Y noto con esta nueva versión que al parar el coche la variable indica 0 antes aun. Al mismo tiempo que si acelero fuerte indica mas rápidamente la velocidad real.

Ahora mismo los pasos son del 50% de la diferencia de velocidad. Se podría jugar con ese porcentaje para mejorar un poco más el tiempo de ajuste. Si quieres probar cambia la operación con la que se calcula %pas por esta otra...

%pas = floor(abs(%Velocidad-%vel)*0.75)

Por lo menos te muestro como va mi Modo Coche...

Pues queda muy chulo. :ok:

:pensando: ... por puro entretenimiento, y ya que tienes el dato necesario (%LOCSPD = velocidad en m/s), le podías añadir una casilla con la distancia de frenado/seguridad.

Se puede hacer por el sistema clásico...

http://revista.dgt.es/es/educacion-formacion/conducir-mejor/2017/1026Distancia-de-seguridad.shtml

O por la "Regla del cuadrado", que parece más recomendable...

https://www.race.es/seguridadvial/formacion-race/en-carretera/distancia-de-seguridad

¿Te ves capaz?

:silbando:

emiegna
16/05/18, 22:53:08
"Que ahora mismo los pasos son del 50%..." no lo he entendido muy bien. Ya he sustituido la acción, pero aun no la he podido probar. Mañana te diré.

Lo de la distancia de seguridad y frenado... Tengo de carnet tela de años, y ya ni me acordaba que existía normativa al respecto (y sanciones), y mucho menos el tema del cálculo.

A ver, después de leer se me ha ocurrido una idea simple. Imagino que para ti simpliiiiiiiisima, sin duda... (Supongo que existen calificativos mas duros).

Allí va... Te vas a partir el pecho :-) (Oye, funciona mas o menos)

DistSeg (87)
A1: Si (if) [ %Velocidad < 10 ]
A2: Sección de Variable [ Nombre:%Velocidad Desde:1 Longitud:1 Encajar:Apagado Almacenar Resultado en:%two ]
A3: Establecer variable [ Nombre:%Distancia A:%two/10 Recurse Variables:Apagado Calcular:Encendido Añadir:Apagado ]
A4: Fin si (End if)
A5: Si (if) [ %Velocidad > 9 ]
A6: Sección de Variable [ Nombre:%Velocidad Desde:1 Longitud:2 Encajar:Apagado Almacenar Resultado en:%one ]
A7: Establecer variable [ Nombre:%Distancia A:(%one*%one)/100 Recurse Variables:Apagado Calcular:Encendido Añadir:Apagado ] Si (if) [ %Velocidad > 9 & %Velocidad < 100 ]
A8: Establecer variable [ Nombre:%Distancia A:%one*%one Recurse Variables:Apagado Calcular:Encendido Añadir:Apagado ] Si (if) [ %Velocidad > 99 ]
A9: Fin si (End if)


De pena, no?

Por cierto, la pantallita del Modo Coche solo está empezando. Con el paso del tiempo irá cambiando mucho por "añadidos" y estética, claro :-)

emiegna
17/05/18, 11:53:20
Acabo de probarlo con la modificación. La anterior versión va mejor. En esta última, al desacelerar para llegar a parar tarda mas en descender el valor. Ademas, no sé porqué pero ya parado no llega a valor 0.se queda en 1.

Quizas yo me fije mas en las desaceleraciones y frenadas que en las aceleraciones. No lo tengo claro. En las frenadas bruscas, o medio bruscas, que quizás es donde mas me fijo, noto que en la versión anterior llega a marcar valor 1 (y 0) antes que en la última (que, insisto, no se porque ni siquiera llega a marcar 0).

Edito: Estoy haciendo pruebas... Si en la acción donde se establece la variable %pas, con ceil, "toco" la división entre 2 por 1.5 (por ejemplo), ¿existe menos efecto gradual, pero marcará 0 antes tras parar? A mi me parece que no se pierde apenas efecto gradual y llega antes. ¿Es posible o veo "visiones"?

WillyWeb
17/05/18, 12:33:32
En esta última, al desacelerar para llegar a parar tarda mas en descender el valor. Ademas, no sé porqué pero ya parado no llega a valor 0.se queda en 1.

:oskitar:

Es que me he colado y he puesto "floor" en vez de "ceil".

"Que ahora mismo los pasos son del 50%..." no lo he entendido muy bien.

Ahora el ajuste se hace dividiendo la diferencia de velocidades entre 2, y eso es el 50%. Lo último que te he propuesto es hacer el ajuste en pasos del 75%.

%pas = ceil(abs(%Velocidad-%vel)*0.75)

A ver, después de leer se me ha ocurrido una idea simple... (Oye, funciona mas o menos)

Veo que te has decidido por la "Regla del cuadrado", que básicamente consiste en quitar la última cifra de la velocidad y multiplicar el número resultante por sí mismo.

https://www.motor.mapfre.es/consejos-practicos/seguridad-vial/5347/cual-es-distancia-de-seguridad-recomendada

Yo diría que en tu tarea has intentado aplicar esa explicación literalmente, pero de una forma un poco "extraña"...

Si la %Velocidad está entre 0 y 9 coges el primer dígito siendo %Distancia es ese dígito entre 10.

Si la %Velocidad es 10 o más coges los dos primeros dígitos siendo %Distancia el cuadrado de esos dígitos si %Velocidad es 100 o más, o ese cuadrado entre 100 si %Velocidad está entre 10 y 99.

:estrellas:

Con lo fácil que es...

%Distancia = round((%Velocidad/10)^2)

Y además esa es la cuenta exacta ajustada a la velocidad, no como lo que sale de aplicar literalmente la explicación.

Si metes eso en una acción justo después de las que ajustan la %Velocidad ya lo tienes. Por cierto, si lo haces, recuerda poner %Distancia=%novel en los mismos casos en que lo haces para %Velocidad.

emiegna
17/05/18, 14:36:35
Probado con ceil. Va perfecto. Es decir, un 75% en lugar de un 50%, supone un mayor efecto gradual a costa de un retraso minimo en llegar al valor a 0 en la variable, ¿no es asi?

Yo es que soy de letras. Las matemáticas... Se me dan de pena. Es mas, entiendo la accion de la distancia de seguridad excepto el simbolo ^. Ni idea. De haberlo conocido quizas lo hubiese empleado para simplificar. Ya te dije que seria de pena :-(

WillyWeb
17/05/18, 16:39:28
El 75% en vez del 50% supone saltos algo mayores, menos pasos y por lo tanto un ajuste algo más rápido. Jugando con ese 0.75 puedes hacer el ajuste tan rápido o lento como quieras.

Y ese ^ significa "elevado a..."

http://tasker.dinglisch.net/userguide/en/maths.html (power en inglés)

emiegna
17/05/18, 18:32:16
Ok. Ya me queda claro. Así según gustos puedes ir cambiando.

Perfecto.

Mil gracias, WillyWeb :ok:

(sigo con mi Modo Coche)

Caravantes
18/05/18, 10:17:07
Mil gracias, WillyWeb

(sigo con mi Modo Coche)


Hola Emiegna.

Creo que ya podemos ir considerando que la parte principal de este hilo está terminada, y eso no quita para que haya mensajes posteriores que puedan abordar ciertos detalles o cuestiones laterales.

Es un hilo muy interesante... pero muy largo. Han sido 10 días que no se han hecho pesados porque ha ido poco a poco, pero... Estoy pensando en futuros taskeros que se planteen hacer un velocímetro o abran el hilo para aprender. Creo que sería preferible no obligarles a leer los 70 mensajes. Sugiero que les ofrezcas un post final que agrupe toda la información importante.

Te propongo una tarea de "remate", que te la puedes tomar como TFM (https://www.google.es/search?q=trabajo+de+fin+de+master&oq=trabajo+de+fin+de+master&aqs=chrome..69i57j0l5.5375j0j7&sourceid=chrome&ie=UTF-8), para finalizar este cursillo práctico intensivo que ha impartido Willy. Así tienes ocasión de demostrar lo que has aprendido.

Me refiero a que publiques un post "definitivo" con las conclusiones. Empezaste el hilo preguntando si sería posible construir un velocímetro, y sería estupendo que escribas una respuesta y un resumen de todos los detalles importantes que se han tratado en el hilo, detalles que han hecho posible la solución. Añade la tarea (la versión que tú consideres como finalmente óptima), y algunas explicaciones para describir la propia tarea, las variables y también las constantes utilizadas, muy especialmente para esas constantes que se pueden cambiar (0.50 vs 0.75) para que la tarea funcione de una u otra manera.

Tras eso, en el primer post del hilo insertas un párrafo inicial diciendo que la solución está en el post "definitivo", número tal, y pones un enlace a ese post. Todo para incrementar la futura utilidad del hilo.

Solo es una propuesta. También puedes hacerlo de otra forma, o dejarlo para más adelante... o no hacerlo. Ningún problema, no te sientas obligado.

emiegna
18/05/18, 16:38:31
Absolutamente de acuerdo contigo, Caravantes. El post lo merece, y mas aun WillyWeb. En este fin de semana procuraré tenerlo para, en la medida de lo posible, ayudar al resto de usuarios del foro.

Buena idea :ok:

emiegna
18/05/18, 20:07:54
En este pot, tras la afortunada y sin duda merecida petición de nuestro compañero Caravantes, me dispongo a exponeros la tarea del asunto de este hilo y un, llamemosle, resumen-conclusiones que se obtienen de este hilo y la tarea en si.

Aclaro que lo que a muchos de vosotros pueden parecer nimiedades, para mi no lo han sido... Como por ejemplo que por término general las acciones donde se establecen variables y que incluyen calculos matematicos suele ser necesario marcar "calcular", o bien la "comodidad" y seguridad que supone el uso de etiquetas en las acciones, o la importancia de las Propiedades de la tarea (rueda dentada), o bien el correcto uso de %priority / %priority+1 / %priority-1 en la acción "realizar tarea", etc, etc...

En primer lugar, todo (y digo, absolutamente todo) el mérito corresponde al maestro WillyWeb. Yo solo pregunté. Pregunté y aprendí y/o intenté aprender de él. Un hilo largo por su afán de perfeccionar la tarea y un hilo largo por mi persistencia. He aquí la tarea de WillyWeb que a continuación comentaré. En este punto, pido al compañero que no dude en corregirme en todo lo necesario.

Pa allá que vamos...

VelocimetroON/OFF (12)
Abortar Tarea Existente
A1: Establecer variable [ Nombre:%novel A:- Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ]
A2: Si (if) [ %par1 ~ on ]
<GpsVelocimetro>
A3: Obtener ubicación [ Origen:Cualquiera Cuenta atrás (segundos):10 Continuar tarea inmediatamente:Encendido Mantener Seguimiento:Encendido ]
A4: Si (if) [ %TIMES-%LOCTMS < 20 ]
A5: Establecer variable [ Nombre:%vel A:round(%LOCSPD*3.6) Recurse Variables:Apagado Calcular:Encendido Añadir:Apagado ]
A6: Establecer variable [ Nombre:%Velocidad A:%vel Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ] Si (if) [ %Velocidad ~ %novel ]
A7: Establecer variable [ Nombre:%pas A:ceil(abs(%Velocidad-%vel)*0.75) Recurse Variables:Apagado Calcular:Encendido Añadir:Apagado ]
A8: Establecer variable [ Nombre:%Velocidad A:%Velocidad+%pas Recurse Variables:Apagado Calcular:Encendido Añadir:Apagado ] Si (if) [ %Velocidad < %vel ]
A9: Establecer variable [ Nombre:%Velocidad A:%Velocidad-%pas Recurse Variables:Apagado Calcular:Encendido Añadir:Apagado ] Si (if) [ %Velocidad > %vel ]
A10: Else
A11: Establecer variable [ Nombre:%Velocidad A:%novel Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ]
A12: Fin si (End if)
A13: Esperar [ MS:200 Segundos:0 Minutos:0 Horas:0 Días:0 ]
A14: Ir a acción [ Tipo:Etiqueta Acción Número:4 Etiqueta:GpsVelocimetro ]
A15: Else
A16: Detener Ubicación [ Origen:GPS ]
A17: Establecer variable [ Nombre:%Velocidad A:%novel Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ]
A18: Fin si (End if)


Pues bien, de empezar solicitando ayuda para crear una tarea que fuese un velocímetro sin ser root hemos acabado, gracias a WillyWeb, en una tarea que es un velocímetro con ajuste gradual sin necesidad de ser root.

Con esto que expongo a continuación tenemos un velocímetro sin ajuste gradual, pelao y mondao...

Velocimetro (78) A1: Obtener ubicación [ Origen:GPS Cuenta atrás (segundos):100 Continuar tarea inmediatamente:Encendido Mantener Seguimiento:Encendido ] A2: Establecer variable [ Nombre:%Velocidad A:round(%LOCSPD*3.6) Recurse Variables:Apagado Calcular:Encendido Añadir:Apagado ] A3: Ir a acción [ Tipo:Número Acción Número:1 Etiqueta:Velocimetro ]

Y luego, detener la obtención de ubicacion.


Con la tarea de WillyWeb conseguimos ese efecto de ajuste gradual. Es decir, en una tarea sin efecto de ajuste gradual lo normal es que cuando aceleremos en un vehículo y pasemos de 23 a 26 km/h se haga en un solo salto (23, 26). Con efecto de ajuste gradual los saltos serían de a uno, o algo mas (dependiendo de lo rapido que alcancemos la velocidad). Aquí conviene recordar que los ajustes dependen del Gps (1 segundo, mas o menos). En este último caso seria algo asi, 23, 24, 25, 26. Obviamente aplicable al desacelerar o frenar también.

La tarea de WillyWeb comienza con crear una variable %novel para el caso que no tengamos datos del Gps. En una escena que incluyesemos un elemento texto con la variable %Velocidad en el campo correspondiente nos saldría "-" (sin las comillas).

A continuación entramos en el asunto, %par1 ~ on ó %par1 ~ off. En una acción "realizar tarea" encendemos o apagamos el velocímetro. Atentos siempre a las posibilidades de %priority en función de las necesidades.

Continuamos. Lo primero, obviamente, obtener ubicación. Tiempo mínimo para reducir las posibilidades de cortes. 10 segundos.

%LOCSPD, a km/h. La pasamos a una variable %vel, que podría tener valor "-" sino hay datos. Acciones 5 y 6.

Meollo de la cuestion, o cómo consigue WillyWeb el efecto gradual. Acciones 7, 8 y 9. Aqui considero como un elemento clave el 0.75 de la acción 7. Con 0.75 los saltos serán algo mayores que con 0.50. Es decir, y a modo de ejemplo, si vamos a 10 km/h con 0.75 el valor de la variable ira cambiando algo asi: 10, 5, 0. Menos efecto gradual, pero alcanzaremos el valor 0 mas pronto, mas cercanos a la parada absoluta del vehículo. Con 0.50 tardaremos algo mas, pero el efecto gradual en el ejemplo seria 10, 7, 5, 3, 0. Es decir, mayor efecto gradual a costa de llegar un poco mas tarde a ese 0 real. Es "jugar" con ese número. Para gustos, colores.

Seguimos, si no obtenemos datos Gps habrá que volver a intentarlo. Acción 14. Mejor una etiqueta, por si añadimos/eliminamos acciones. WillyWeb ;-)

Y claro, por ultimo, detener el velocímetro cuando ya no queramos usarlo. (%pas1 ~ off).

Importante, y por el bucle de la tarea, en Propiedades de la tarea hay que marcar "Abortar Tarea Existente".

Todos los agradecimientos al maestro WillyWeb :-)

WillyWeb
19/05/18, 13:40:23
Todos los agradecimientos al maestro WillyWeb

Hombre, tanto como maestro. :o

Vamos a dejarlo en "usuario avanzado" que colabora en un foro en la medida de sus posibilidades.

Creo que la tarea hace lo que querías, así que podemos decir eso de "prueba superada". :ok:

Y ahora un nuevo reto ... :pensando: ... ¿un velocímetro para Maps? ... :silbando:

Caravantes
19/05/18, 14:10:21
podéis ver la tarea resultante creada para tener un velocímetro, junto a un resumen y conclusiones de todo ello en el post #72. Si alguien me explica cómo poner un enlace... (no doy con ello).

Ahí va el procedimiento para poner un enlace a un post, usando un ordenador y un navegador convencional de Internet:

Localizas el post que quieres enlazar, en este caso es el post número 72. En la cabecera de ese post, a la izquierda está la fecha y la hora de creación del post. A la misma altura, a la derecha verás el número del post #72. Haciendo clic en ese número llegas a la página que SOLO contiene ese post. Puedes copiar esa URL si quieres poner un enlace que lleve a esa página, pero yo te recomiendo otra cosa: en esta página que solo te muestra un post, verás que arriba del todo, a la derecha, está el título del hilo. Haciendo clic ahí llegas otra vez al hilo completo, pero teniendo focalizado directamente el post que querías. Ahora sí te recomiendo que copies la URL para hacer un enlace que lleve a ese post (pero pudiendo ver también el resto del hilo).

Luego, para poner el enlace... Edita el primer post en el que quieres insertar el enlace. Si quieres poner el enlace en una palabra o frase, seleccionas ese fragmento. La otra opción es que quieras poner el enlace independiente del texto, y en ese caso solo tienes que situar el cursor en el punto del post en el que quieras que aparezca el enlace (recomendado que el cursor esté aislado, sin tocar con ninguna palabra/carácter, por ejemplo está bien si por delante/detrás del cursor tienes espacios o cambios de línea.

Estás editando un post y en la parte superior del cuadro de edición tienes varios botones. Mira el icono parece una bola con tres eslabones de cadena, y haces clic. Aparecerá una ventana en la que puedes pegar la URL antes copiada. Confirmar y listo. Ya tienes el enlace en el post editado. Solo te queda darle al botón de GUARDAR para validar los cambios en el post. Suerte.

emiegna
19/05/18, 17:34:42
WillyWeb, como la app Navmeter? Esa app ya lo hace, pero también es cierto que crear uno seria un reto ademas de tener la posibilidad de añadir funciones que aquellas app no tiene. Lo del velocimetro creo que no seria dificil... Una escena pequeña, claro. Pero, y como la mueves libremente por Maps con el dedo como hace Navmeter? Por ejemplo, yo he creado una barra de estado fija de otro color que al fin y al cabo es una escena bloqueada, pero lo de moverla libremente...

Gracias Caravantes, en cuando esté frente al portátil lo hago. Ahora mismo estoy solo con móvil. Buena explicación :-)

Por cierto, para el Modo Coche ando ahora probando añadir los 4 limites básicos de velocidad en España (50, 90, 100, 120). A mi forma... No lo veo complicado. Como veis el inicio? Quiero que solo suene un pitido cuando me paso. Y que vuelva a pasar solo una vez cuando me pase...

Perfil: LimiteVelocidad (47)
Evento: Establecer variable [ Variable:%Velocidad Valor:* User Variables Only:Apagado ]
Entrada: Bip (8)
A1: Si (if) [ %Bip ~ 0 & %Velocidad > 50 ]
A2: Elemento Color de Texto [ Nombre Escena:FondoNegro Elemento:Velocimetro variable Color:#FF15EE00 ]
A3: Elemento Color de Texto [ Nombre Escena:FondoNegro Elemento:Velocimetro km Color:#FF15EE00 ]
A4: Bip [ Frecuencia:8000 Duración:600 Amplitud:50 Stream:4 ]
A5: Establecer variable [ Nombre:%Bip A:1 Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ]
A6: Else
A7: Si (if) [ %Velocidad < 51 ]
A8: Elemento Color de Texto [ Nombre Escena:FondoNegro Elemento:Velocimetro variable Color:#FF9C0025 ]
A9: Elemento Color de Texto [ Nombre Escena:FondoNegro Elemento:Velocimetro km Color:#FF9C0025 ]
A10: Establecer variable [ Nombre:%Bip A:0 Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ]
A11: Fin si (End if)
A12: Fin si (End if)

(Es solo el comienzo, claro)

WillyWeb
19/05/18, 19:35:39
WillyWeb, como la app Navmeter?

Pues sí. Algo de ese estilo estaría bien como reto. ;-)

Por cierto, para el Modo Coche ando ahora probando añadir los 4 limites básicos de velocidad en España (50, 90, 100, 120) ... Quiero que solo suene un pitido cuando me paso. Y que vuelva a pasar solo una vez cuando me pase...

Disparas la tarea con cada cambio de %Velocidad ... bien, pero marca "User Variables Only".

Tal como lo tienes ahora pita (y cambia de color) la primera vez que pases de 50 y no pita de nuevo si antes no has bajado de 50. Entiendo que es eso lo que querías, así que ... :ok:

Por cierto A6 y A7 las puedes juntar en una y te sobraría el ENDIF de A11.

¿Vamos a ver cómo haces eso mismo con las cuatro velocidades que quieres controlar?

:palomitas:

emiegna
19/05/18, 21:18:32
Indago si es posible mover una escena pequeña manteniéndola pulsada y arrastrandola donde uno quiera... Pero no me suena que se pueda. Me refiero al reto planteado. Por lo demas, no veo el problema, no? O me pierdo algo? Una escenita pequeña, por ejemplo en color verde con color de fuente en blanco y situada en un sitio fijo. El problema que veo es que cuando abres Google Maps existen distintas ventanas... Navegacion, consulta de ruta, busqueda, etc. O bien tienes la opción de mover la escena con el dedo, o bien atiendes a la actividad de Google Maps en cada momento, no? (Y horizontal o vertical, claro)

Tal como está ahora hace, según creo haber comprobado, lo mismo que hace el Infocenter de mi coche. Pita solo una vez si me paso, por ejemplo, de 120 y ya no lo hace hasta que reduzco al limite legal (o por debajo) y me paso de nuevo. Lo que ocurre en mi Infocenter es que fijar los limites es mas complicado y lento que pulsar un solo botón en el móvil para cambiar de limites.

Lo de reducir acciones, otra cagada mas mia... Obviamente es suficiente con el Else y un solo End if. No tendré yo cagadas de esas por ahi. Tengo que repasar tareas que funcionan, pero podrian ir mas rapidas. Seguro.

Me ha hecho mucha gracia el icono final :-) Mientras creaba ese ejemplo me acordé de ti. Ya llegaré a ello. No creo que sea muy dificil... ¿No? :silbando: Hombre de poca fe... ;-)

WillyWeb
20/05/18, 09:46:51
Indago si es posible mover una escena pequeña manteniéndola pulsada y arrastrandola donde uno quiera... Pero no me suena que se pueda.

Pues exactamente "pulsando y arrastrando" parece que no se puede, aunque se puede hacer algo parecido que lo mismo te vale.

Prueba de concepto...

-Una escena pequeña
-Un elemento "Rectángulo" que llene la escena
-Una tarea
-Variable local %posh=100
-Variable local %posv=100
-Mostrar la escena como "Capa Superpuesta Bloqueada" en %posh/%posy

Ese elemento (y alguno más) tiene tres eventos: "Clic", "Clic largo" y "Golpe". Ese golpe reacciona a deslizamientos del dedo sobre el elemento generando dos variables locales: %stroke_dir (dirección del movimiento) y %stroke_len (longitud del movimiento).

Si en la pestaña "Golpe" del rectángulo pones estas acciones...

%posv=0 si %stroke_dir~up
%posv=200 si %stroke_dir~down
%posh=0 si %strike_dir~left
%posh=200 si %stroke_dir~right
Ocultar la escena
Mostrar la escena como "Capa Superpuesta Bloqueada" en %posh/%posy

...lanzarás la escena de un lado a otro de la pantalla.

No es exactamente "pulsar y arrastrar" pero hace su función.

¿Cómo lo ves? :pensando:

PD: Yo pondría un "destruir escena" en "clic largo" para poder salir con facilidad.

emiegna
20/05/18, 12:40:58
Con respecto al movimiento de la escena es más que suficiente desde mi punto de vista, sin duda. Es curioso. He seguido tus indicaciones en una escena con un rectángulo de 300x300 y funciona perfecto. Tan solo sería "jugar" un poco con los valores 100 y 200. El problema que veo, como antes te decía, es que ese velocimetro lo tendrás visible siempre que abras Maps y hasta que lo cierres. Es decir, realmente solo interesa tenerlo visible cuando realmente estas ya navegando (siguiendo indicaciones), pero no cuando inicias Maps y vas a introducir un destino, por ejemplo. No se si me explico. Por eso te decia que seria idoneo que la tarea del velocimetro solo se mostrase al seguir indicaciones... Cuando creas un contexto de aplicación solo puedes abrir la aplicación, que yo sepa. Sin embargo, en una tarea puedes cargar una aplicacion (si mantienes pulsado) por actividad, configuración, etc (segun los casos). Por ahi iba yo...

Por cierto, esta idea no seria mejor en otro hilo?

Por otro lado, limites de velocidad... Ese Else + if %Velocidad <51 sí es necesario (con su End if), sino no para de pitar. Yo solo quiero que pite una vez cuando me pase. Y si continuo en 53 o 56... Ya no pite. Solo que vuelva a pitar si bajo de 51 y subo de nuevo por encima de 50.

Estoy intentando simplificar y no se si es posible. Esta mañana no me funcionaban las pruebas de simplificacion de la tarea... Lo unico, y esto no lo he probado, que se me ocurre que podria funcionar es 4 botones en la escena (50, 90, 100, 120) que, o bien activen/desactiven perfiles como la tarea que puse (serian 4 perfiles con 4 tareas de 50, 90, 100, 120), o bien cuatro tareas que se ejecuten atendiendo al valor 1/0 que establezca en cada boton de la escena. Supongo que uno (o ambos casos) funcionarian, pero simplificado, simplificado, no es que sea... Las probaré.

He querido también basarme en la tarea del Salvapantallas (para simplificar), pero aquello no me funcionaba. Algo asi como evento de variable a %Boton1/%Boton2, etc y la tarea if ~ %Boton1 ~ 1|%Boton2 ~ 1, etc... Y luego una tarea "Bip". Uff, no se si me he explicado tampoco... Pero tampoco funcionaba lo que intenté.

WillyWeb
20/05/18, 13:34:41
Con respecto al movimiento de la escena es más que suficiente desde mi punto de vista, sin duda.

Pues entonces ese es el camino. :ok:

He seguido tus indicaciones en una escena con un rectángulo de 300x300 y funciona perfecto. Tan solo sería "jugar" un poco con los valores 100 y 200.

0 = a tope izquierda/arriba
100 = centro de la pantala
200 = a tope derecha/abajo

Ajusta a tu gusto en cualquier valor intermedio.

El problema que veo, como antes te decía, es que ese velocimetro lo tendrás visible siempre que abras Maps y hasta que lo cierres...

Claro ... si usas como disparador un contexto de aplicación eso es lo que pasa ... :silbando:

Por eso te decia que seria idoneo que la tarea del velocimetro solo se mostrase al seguir indicaciones...

Casi lo tienes ... ¿qué pasa cuando Maps entra en modo navegación? ... :silbando:

Por cierto, esta idea no seria mejor en otro hilo?

Pues la verdad es que sí. El proyecto del "Velocímetro con ajuste gradual" está terminado. Ahora tenemos dos proyectos nuevos...

-Un velocímetro para Maps
-Un indicador de paso por límites de velocidad

Ambos basados en el velocímetro pero con objetivos distintos. Abre un tema para cada uno y enlaza a este para poner en antecedentes.

Por otro lado, limites de velocidad... Ese Else + if %Velocidad <51 sí es necesario (con su End if), sino no para de pitar...

Cuando te dije que podías juntar A6 y A7 de tu tarea inicial ... ¿qué hiciste exactamente?

Estoy intentando simplificar y no se si es posible.

En cada uno de esos botones cambia el %Límite y luego usa ese %Límite en la tarea que ya tienes hecha ... yo creo que eso es bastante simple. :pensando:

emiegna
20/05/18, 20:13:39
He abierto dos hilos nuevos para los nuevos temas planteados, aunque de alguna forma tengan bastante relación con éste (Velocímetro con efecto gradual):

1. Velocímetro desplazable para Google Maps.

https://www.htcmania.com/showthread.php?p=28817858#post28817858


2. Indicador de paso por límites de velocidad.

https://www.htcmania.com/showthread.php?p=28817875#post28817875