PDA

Ver la Versión Completa : [ SOLUCIONADO ] Subir y bajar volumen gradualmente de manera suave


SmartPhoneLover
22/06/17, 16:06:00
¿Alguien sabe algun modo por el cual sea posible modificar el volúmen, pero de manera suave? Tal como lo hace Android, al recibir cualquier notificación y al mismo tiempo de estar escuchando música.

Dispongo de una tarea dispuesta del siguiente modo:
A1. Bajar VOL a 14 (de 15)
A2. Esperar 800ms
A3. Bajar VOL a 13 (de 14)
A4. Esperar 800ms
A5. ...

Bien, con esa tarea consigo bajarlo (o volver a subirlo), pero con esa sensación de sonido escalonado que no me gusta mucho como queda.

----------------------

Pulsa aquí (http://www.htcmania.com/showpost.php?p=26731874&postcount=24) para acceder a la tarea finalizada.

SmartPhoneLover
22/06/17, 16:09:58
No sería una posible solución la de incrementar los niveles de sonido del propio sistema?
Al hacer esto, ¿Tasker lo detectará? Es decir, si consigo tener 25 niveles, en vez de 15 en el canal Multimedia, la acción de volúmen en Tasker me mostrará esa modificación?

SmartPhoneLover
22/06/17, 16:14:07
Bueno, ya esta solucionado!
Hice la modificación por build.prop para agregar más niveles al canal multimedia, y todo perfecto.
Tasker detecta los niveles también.

Caravantes
22/06/17, 19:27:46
Hice la modificación por build.prop para agregar más niveles al canal multimedia, y todo perfecto.

Eso suena muy interesante.
Porfa, explicanos un poco más lo que es "build.prop" y cómo funciona. ¿Cuántos niveles puedes poner?
Si crees que puede ser clarificador, añades un pantallazo. Gracias.

SmartPhoneLover
22/06/17, 20:05:09
Porfa, explicanos un poco más lo que es "build.prop" y cómo funciona. ¿Cuántos niveles puedes poner?Basta con modificar el archivo 'build.prop' ubicado en '/system'. Primero intenta localizar la linea que a continuación dejo en el mismo archivo; en caso de no existir, simplemente la agregas.

· ro.config.media_vol_steps=x

Modifica 'x' con el número de niveles que deseas tener para bajar o subir el volúmen del canal multimedia. Supongo que para casi todos los dispositivos el límite son 50 niveles, aunque para algunos samsungs el límite son 100. Tú prueba.
Yo con solo poner 30 ya me basta.

--------------------------------

Aunque se me olvidó comentar que hay un módulo para Xposed llamado 'VolumeSteps+ (https://forum.xda-developers.com/xposed/modules/mod-volumesteps-t2884962)', actualmente en la versión 1.3.1. Éste permite modificar el nivel de los principales canales de audio (Alarma, Música, Notificación, Tono, Sistema y Voz), todo mediante interfaz gráfica.

vicholp
23/06/17, 00:09:09
Hola, gracias por el dato, pero qué sucede si me "paso" de niveles?
PD: como sugerencia, se me ocurre que podrías usar un ciclo "for" en reemplazo de las acciones:
"A1. Bajar VOL a 14 (de 15)
A2. Esperar 800ms
A3. Bajar VOL a 13 (de 14)
A4. Esperar 800ms
A5. ..."

SmartPhoneLover
24/06/17, 05:24:06
Hola 'vicholp'.
Supongo que lo único que pasará es que directamente no te tomará en cuenta esos valores, y el sistema sombreescribirá dicho valor con el por defecto.

Y, a qué te refieres exactamente con el ciclo 'For'? Según lo que sé esa acción no puede editar valor de variables de sistema, por lo que no podría crear un loop hasta x nivel. Como lo habias pensado montar? Además de que acabaria con más acciones de las que tengo ahora mismo, creo.

Erickesz
24/06/17, 19:02:25
Hola smartphone lover
He leído el post y decidí intentarlo con el ciclo for me quedo así:
Prueba (280)
A1: Volumen multimedia [ Nivel:3 Mostrar:Apagado Sonido:Apagado ]
A2: Establecer variable [ Nombre:%número A:3 Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ]
A3: For [ Variable:%volumen Ítems:1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 ]
A4: Si (if) [ %número < 16 ]
A5: Volumen multimedia [ Nivel:%número Mostrar:Apagado Sonido:Apagado ]
A6: Esperar [ MS:0 Segundos:1 Minutos:0 Horas:0 Días:0 ]
A7: Sumar a variable [ Nombre:%número Valor:1 Módulo (wrap around):0 ]
A8: Fin si (End if)
A9: End For
Y modificando el if un poco podrías detener que siga subiendo el volumen presionando una tecla de volumen

WillyWeb
25/06/17, 18:56:33
Hola Erickesz :D

Si me lo permites te hago un par de sugerencias para simplificar esa tarea que has propuesto...


En A1 fijas directamente el volumen en 3 ¿por qué?
En el IF haces una verificación que me parece innecesaria. El bucle va de 1 a 15 así que %número (que debería ser %volumen) siempre será menor que 16 y el contenido del IF se ejecutará todas las veces
La espera de A6 creo que es demasiado larga. Si cambias el nivel de 3 a 15 el proceso duraría 12 segundos
En A7 incrementas el valor de %número para usarlo como el nuevo nivel del volumen en vez de usar directamente el valor de %volumen que ya se incremente automáticamente en cada vuelta del bucle


Si la idea es que el cambio de volumen se haga de forma incremental esto debería funcionar...


A1: For [ Variable:%vol Ítems:%VOLM:%par1 ]
A2: Volumen multimedia [ Nivel:%vol Mostrar:Apagado Sonido:Apagado ]
A3: Esperar [ MS:500 Segundos:0 Minutos:0 Horas:0 Días:0 ]
A4: End For

La idea es usar esto como una subtarea (con la acción "Realizar tarea") a la que le pasarías como parámetro-1 el nuevo nivel de volumen que quieres establecer. El volumen cambiará subiendo/bajando poco a poco desde el nivel actual, sea el que sea, hasta el nuevo.

No le veo mucho sentido poner valores fijos en una tarea de este tipo, pero si eso te vale simplemente tienes que cambiar %par1 por el número que quieras. Ojo con no quitar los dos puntos justo antes de %par1.

Caravantes
25/06/17, 19:36:29
La idea es usar esto como una subtarea (con la acción "Realizar tarea") a la que le pasarías como parámetro-1 el nuevo nivel de volumen que quieres establecer. El volumen cambiará subiendo/bajando poco a poco desde el nivel actual, sea el que sea, hasta el nuevo.

Genial: tarea eficiente, mucho más flexible, y más simple. :aplausos:

Se me ocurre una complicación adicional dirigida a quien le gusten los retos de Tasker como simple divertimento. :platano:
En el segundo parámetro de la subtarea se podría especificar una letra (inicial de) el tipo de volumen a modificar:
- Multimedia
- Timbre (ringtone)
- Voz en la llamada
- Alarma
- Notificación
- Buetoth (voz BT)
- Sistema
Quizá no merezca la pena contemplar las 7 opciones, con dos o tres sería suficiente. Además, convendría establecer una "opción por omisión" para el caso de que no se indique segundo parámetro, o se indique uno erróneo (distinto a los valores previstos).

Todo ello sería una especie de "máquina de Rube Goldberg" (matar moscas a cañonazos) porque el cambio de volumen progresivo solo tiene sentido si ese canal de audio está funcionando, cosa que solo suele darse en el canal multimedia. En los demás canales va a ser muy raro que se aprecie la diferencia entre el cambio progresivo y el cambio instantáneo.

Otra opción que probablemente sea más práctica sería es hacer dos o tres subtareas similares, una para cada canal que se quiera gestionar con volumen progresivo.

WillyWeb
25/06/17, 20:33:38
Se me ocurre una complicación adicional dirigida a quien le gusten los retos de Tasker como simple divertimento.

Ya la estamos liando :silbando:

En el segundo parámetro de la subtarea se podría especificar una letra (inicial de) el tipo de volumen a modificar ...

:rolleyes:

Además, convendría establecer una "opción por omisión" para el caso de que no se indique segundo parámetro, o se indique uno erróneo (distinto a los valores previstos).

:rolleyes:

Todo ello sería una especie de "máquina de Rube Goldberg"...

Con lo que tengo en mente se necesitan tres acciones adicionales por cada canal, y la subtarea tiene sólo cuatro. Está claro que lo más sencillo es tener una subtarea para ajustar el volumen de cada canal, pero si es por entretenimiento ... :risitas:

...

Edito para aclarar que se me ha ocurrido una forma de hacerlo con dos acciones adicionales por canal, aunque sigo pensando que es más sencillo tener una subtarea por canal a controlar.

WillyWeb
27/06/17, 14:14:23
... se me ha ocurrido una forma de hacerlo con dos acciones adicionales por canal ...

¿Nadie se lanza? :cry:

Bueno, pues aquí está mi propuesta...

A1: Establecer variable [ Nombre:%par1 A:1 Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ]
A2: Establecer variable [ Nombre:%par2 A:x Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ]
A3: Establecer variable [ Nombre:%canal A:VOLR Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ] Si (if) [ %par2 ~ r ]
A4: Establecer variable [ Nombre:%canal A:VOLA Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ] Si (if) [ %par2 ~ a ]
A5: Establecer variable [ Nombre:%canal A:VOLM Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ] Si (if) [ %canal No ajust. | %par2 ~ m ]
A6: For [ Variable:%vol Ítems:%%canal:%par1 ]
A7: Volumen del timbre [ Nivel:%vol Mostrar:Encendido Sonido:Encendido ] Si (if) [ %canal ~ volr ]
A8: Volumen de alarma [ Nivel:%vol Mostrar:Encendido Sonido:Encendido ] Si (if) [ %canal ~ vola ]
A9: Volumen multimedia [ Nivel:%vol Mostrar:Encendido Sonido:Encendido ] Si (if) [ %canal ~ volm ]
A10: Esperar [ MS:500 Segundos:0 Minutos:0 Horas:0 Días:0 ]
A11: End For

Para que se puedan hacer pruebas y ver el efecto del cambio de volumen he añadido las acciones A1/A2 y he marcado "Mostrar" y "Sonido" en las acciones que cambian el volumen (A7/A8/A9). Una vez terminada y verificada la tarea todo eso se debe eliminar para hacer el uso previsto como subtarea.

Al usar la acción "Realizar tarea" en el parámetro-1 se pone el volumen deseado y en el parámetro-2 una letra (es indistinto que sea mayúscula o minúscula) para indicar el canal. Tal como está la tarea reconoce a=alarma, r=timbre y m=multimedia, pero no os debería costar mucho añadir el resto de canales. La opción por omisión que pedía Caravantes es el canal multimedia.

Por si alguien se lo pregunta, en A6 no he cometido un error poniendo %%canal. Es un pequeño truco que hace que %%canal se transforme en %VOLR, %VOLA o %VOLM (como en la mini-tarea original). Se podía hacer de otra manera pero me ha perecido interesante añadir esa "complicación adicional", que no se usa habitualmente, "como simple divertimento" ... no me piques :silbando:

vicholp
30/06/17, 07:39:41
Por si alguien se lo pregunta, en A6 no he cometido un error poniendo %%canal. Es un pequeño truco que hace que %%canal se transforme en %VOLR, %VOLA o %VOLM (como en la mini-tarea original). Se podía hacer de otra manera pero me ha perecido interesante añadir esa "complicación adicional", que no se usa habitualmente, "como simple divertimento" ... no me piques :silbando:

Puntualmente, estas usando una variable en el nombre de una variable?

WillyWeb
30/06/17, 08:01:14
Puntualmente, estas usando una variable en el nombre de una variable?

Exacto. En eso consiste el truco, en usar una variable como nombre de una variable. :ok:

Caravantes
30/06/17, 23:32:15
Exacto. En eso consiste el truco, en usar una variable como nombre de una variable.

Me parece un truco tan bueno que -en mi opinión- se merece un hilo propio con la explicación y un ejemplo inicial, para divulgar, para fomentar el debate o resolver dudas, y también para ir añadiendo otras ideas o tareas que utilicen el truco.

WillyWeb
01/07/17, 11:48:34
Puntualmente, estas usando una variable en el nombre de una variable?

Me parece un truco tan bueno que -en mi opinión- se merece un hilo propio...

Mira que majos. Uno me pregunta, el otro me pica y entre los dos me apuñalan (vicholp , que te he visto dar las gracias a Caravantes). :risitas:

Me disponía a añadir el truco en el hilo correspondiente cuando me he dado cuenta de que el amigo GraphicAdventure ya lo había hecho...

http://www.htcmania.com/showthread.php?p=25605422 (el último del primer post)

SmartPhoneLover
09/07/17, 14:22:46
Muy buenas, siento no haber continuado con el hilo pero me habia vuelto a concentrar en otro proyecto que tenia abandonado y se me paso.

Bueno, WillyWeb, he probado tu tarea pero al ejecutarla da error y no pasa de la tarea 'For'.

WillyWeb
09/07/17, 16:32:50
Por lo que veo en la captura la acción 5 es incorrecta. En vez de %VOLM debes poner VOLM (sin el %). Revisa las anteriores por si tienen el mismo fallo.

SmartPhoneLover
09/07/17, 18:30:38
Ohh, no me habia percatado. Gracias compañero ;)

SmartPhoneLover
10/07/17, 17:03:34
A continuación os dejo la misma tarea pero esta vez con una leve modificación, la cual permitirá modificar el volúmen (subir o bajar) desde la posición actual, en vez de hacerlo siempre desde el nivel 1.

A1: Establecer variable [ Nombre:%par1 A:%par1 Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ]
A2: Establecer variable [ Nombre:%par2 A:%par2 Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ]
A3: Establecer variable [ Nombre:%cvol A:%VOLR Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ] Si (if) [ %par2 ~ r ]
A4: Establecer variable [ Nombre:%cvol A:%VOLA Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ] Si (if) [ %par2 ~ a ]
A5: Establecer variable [ Nombre:%cvol A:%VOLM Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ] Si (if) [ %par2 ~ m ]
A6: Establecer variable [ Nombre:%canal A:volr Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ] Si (if) [ %par2 ~ r ]
A7: Establecer variable [ Nombre:%canal A:vola Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ] Si (if) [ %par2 ~ a ]
A8: Establecer variable [ Nombre:%canal A:volm Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ] Si (if) [ %par2 ~ m ]
A9: For [ Variable:%vol Ítems:%cvol:%par1 ]
A10: Volumen del timbre [ Nivel:%vol Mostrar:Apagado Sonido:Apagado ] Si (if) [ %canal ~ volr ]
A11: Volumen de alarma [ Nivel:%vol Mostrar:Apagado Sonido:Apagado ] Si (if) [ %canal ~ vola ]
A12: Volumen multimedia [ Nivel:%vol Mostrar:Encendido Sonido:Apagado ] Si (if) [ %canal ~ volm ]
A13: Esperar [ MS:125 Segundos:0 Minutos:0 Horas:0 Días:0 ]
A14: End For Además, aprovecho para preguntar una cosita con respecto al resto de modificiones que le hice para que me funcionara bien en mi dispositivo.
- ¿Nadie notaba con la tarea de WillyWeb que cuando se producia el cambio del nivel, éste lo hacia como a tirones? Ahora con la modificación que hice ya no ocurre, lo hace gradualmente y nivel por nivel. No sé si era problema de mi dispositivo o que ¿?

Caravantes
10/07/17, 19:38:07
A continuación os dejo la misma tarea pero esta vez con una leve modificación

Gracias, está muy bien.
Una sugerencia o posible mejora:
En las acciones 10, 11 y 12 puedes poner directamente las mismas condiciones que ahora tienes en las acciones 6, 7 y 8. De este modo podrías suprimir las acciones 6, 7 y 8, y también la variable %canal.

¿Nadie notaba con la tarea de WillyWeb que cuando se producia el cambio del nivel, éste lo hacia como a tirones?

Pues yo no he probado, pero creo que hay dos detalles que pueden tener relación con eso:
- Creo que Willy utiliza solo 15 peldaños de volumen, cuando tú has puesto más (modificando el archivo 'build.prop' ubicado en '/system').
- Que Willy proponía demoras de 500 milisegundos y tú las pones de solo 125 ms (seguramente porque tú tienes más peldaños); eso puede ser determinante para que la tarea de Willy se perciba de forma discontinua (como una proyección de diapositivas) mientras que la tuya se percibe de forma continua (como cine).

SmartPhoneLover
10/07/17, 20:46:04
Una sugerencia o posible mejora:
En las acciones 10, 11 y 12 puedes poner directamente las mismas condiciones que ahora tienes en las acciones 6, 7 y 8. De este modo podrías suprimir las acciones 6, 7 y 8, y también la variable %canal.

Pero, el valor de esas variables es un número, no textualmente el nombre de la variable. Es decir, al ser una cifra, una vez entre en el búcle no se confundirá la tarea en caso de que ese valor coincida por accidente con el mismo nivel de sonido de otra variable amiga?
No sé si me explico...

Pues yo no he probado, pero creo que hay dos detalles que pueden tener relación con eso:
- Creo que Willy utiliza solo 15 peldaños de volumen, cuando tú has puesto más (modificando el archivo 'build.prop' ubicado en '/system').
- Que Willy proponía demoras de 500 milisegundos y tú las pones de solo 125 ms (seguramente porque tú tienes más peldaños); eso puede ser determinante para que la tarea de Willy se perciba de forma discontinua (como una proyección de diapositivas) mientras que la tuya se percibe de forma continua (como cine).

- Pero eso no se refleja en la tarea, es decir, no hay acción que de indicios de haberse ejecutado o que este creada para un sistema de x niveles de audio. Vamos, creo yo.
- Pues ese era el porque de este hilo, hacerlo lo más suave y progresivo posible. Pero no era por eso lo que expliqué que notaba. Incluso probé a volver a establecer los niveles a 15 y la tarea me hacia lo mismo; era como hubiese lag, y me subia de 2 o 3 o 4 de una vez, en vez de hacerlo de 1 en 1.

WillyWeb
10/07/17, 23:04:14
Uff ... cuantas cosas :oh:

¿Qué sentido tienen las A1 y A2 tal y como están? Lo digo porque asignar a una variable su mismo valor no vale de mucho. Supongo que eso lo has dejado para hacer pruebas, pero no lo has explicado.

Parece que no te ha gustado el truco de usar una variable para guardar el nombre de otra variable (ya expliqué que lo de poner %%canal con dos % no es un error). De usarlo te podías haber ahorrado unas pocas acciones como te dice Caravantes.

Por cierto, me has dejado intrigado con esto ...

Es decir, al ser una cifra, una vez entre en el búcle no se confundirá la tarea en caso de que ese valor coincida por accidente con el mismo nivel de sonido de otra variable amiga?

... ¿me lo explicas? :oh:

La tarea que propuse cambia el volumen desde el nivel actual hasta el que pongas, no desde el 1 ... siempre que la escribas como la puse, claro.

Sobre lo de los "tirones". Un bucle establecido con ítems del tipo aaa:bbb corre de 1 en 1 desde aaa hasta bbb. Lo puedes verificar insertando un flash de %vol.

Si después de tu modificación de "build.prop" has establecido 30 niveles para el canal multimedia deberías poder recorrer esos 30 niveles sin problema. Nada en mi tarea ni en la tuya hace que sea de otra forma. Si te fijas bien verás que ambas tareas hacen exactamente lo mismo. El bucle corre desde el nivel actual hasta el nivel establecido en %par1, nada más.

Como dice Caravantes puede que se noten más los saltos en función de la pausa. Con los 800ms iniciales se notaba mucho por eso puse 500ms. Desde luego se notará menos con la pausa de 125ms que finalmente has puesto.

Resumiendo...

Lo puedes hacer más simple si:

-Quitas las acciones A1 a A5.
-En A6/A7/A8 pones VOLR/VOLA/VOLM respectivamente (en mayúsculas).
-En A9 pones en Ítems: %%canal (con los dos %).
-Reduce la pausa tanto como puedas/quieras.

...vamos, lo que puse en el post #12.

WillyWeb
11/07/17, 11:37:14
Hoy he actualizado los Servicios de Google (http://www.apkmirror.com/apk/google-inc/google-play-services/) y haciendo la ronda de comprobación de que todo iba bien también he usado esta tarea para verificar el funcionamiento de Tasker. Me he quedado de piedra al ver que ahora el bucle que sube/baja el volumen repite valores y/o se los salta. No lo hace siempre, pero hace algo parecido a lo que describía SmartPhoneLover :oh:

Por pura curiosidad, ¿qué versión de Tasker y de Servicios de Google tienes instalados?

En cualquier caso la solución ha sido relativamente sencilla (sólo ha requerido una acción más y un pequeño cambio)...

A1: Establecer variable [ Nombre:%canal A:VOLR Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ] Si (if) [ %par2 ~ r ]
A2: Establecer variable [ Nombre:%canal A:VOLA Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ] Si (if) [ %par2 ~ a ]
A3: Establecer variable [ Nombre:%canal A:VOLM Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ] Si (if) [ %canal No ajust. | %par2 ~ m ]
A4: Establecer variable [ Nombre:%vcanal A:%%canal Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ]
A5: For [ Variable:%vol Ítems:%vcanal:%par1 ]
A6: Volumen del timbre [ Nivel:%vol Mostrar:Apagado Sonido:Apagado ] Si (if) [ %canal ~ volr ]
A7: Volumen de alarma [ Nivel:%vol Mostrar:Apagado Sonido:Apagado ] Si (if) [ %canal ~ vola ]
A8: Volumen multimedia [ Nivel:%vol Mostrar:Apagado Sonido:Apagado ] Si (if) [ %canal ~ volm ]
A9: Esperar [ MS:150 Segundos:0 Minutos:0 Horas:0 Días:0 ]
A10: End For

Su funcionamiento "normal" es como subtarea, así que al usar la acción "Realizar tarea" en el parámetro-1 se pone el volumen deseado y en el parámetro-2 una letra (es indistinto que sea mayúscula o minúscula) para indicar el canal. Tal como está la tarea reconoce a=alarma, r=timbre y m=multimedia, pero no os debería costar mucho añadir el resto de canales. La opción por omisión que pedía Caravantes sigue siendo el canal multimedia.

El volumen cambiará subiendo/bajando poco a poco desde el nivel actual, sea el que sea, hasta el nuevo. La suavidad/velocidad del cambio se puede graduar con la pausa de A9.

Para hacer pruebas y ver el efecto del cambio de volumen simplemente tenéis que añadir un par de acciones al principio para establecer los valores de %par1 y %par2, y poner las marcas de "Mostrar" y "Sonido" en las acciones que cambian el volumen (A6/A7/A8).

SmartPhoneLover
11/07/17, 19:04:47
¿Qué sentido tienen las A1 y A2 tal y como están? Lo digo porque asignar a una variable su mismo valor no vale de mucho. Supongo que eso lo has dejado para hacer pruebas, pero no lo has explicado.

Perdona, habia leido la aclaración de de tu tarea donde comentabas que esas dos variables iniciales eran unicamente para hacer pruebas, pero no sé porque no lo tome en cuenta a la hora de copiar la tarea a mi dispositivo, y desde ese momento me creí que eran necesarias.

Parece que no te ha gustado el truco de usar una variable para guardar el nombre de otra variable (ya expliqué que lo de poner %%canal con dos % no es un error). De usarlo te podías haber ahorrado unas pocas acciones como te dice Caravantes.

No es que no me haya gustado, es que al modificar tu tarea y ver que funcionaba como yo queria, una de las modificaciones que eliminaba el inconveniente que yo notaba era ese.[/quote]

Por cierto, me has dejado intrigado con esto ...
Es decir, al ser una cifra, una vez entre en el búcle no se confundirá la tarea en caso de que ese valor coincida por accidente con el mismo nivel de sonido de otra variable amiga?... ¿me lo explicas? :oh:

MMmm, cacao mental xD
Lo que queria decir es que, como la variable '%VOLX' es una variable de sistema y contiene un valor númerico y no una letra del alfabéto o cualquier otro carácter, al crear un condicional sobre esa variable poniendo que coincida su nombre, y no su valor, Tasker leería el valor, no como esta esta variable escrita textualmente.
Pero, ¿ahí es donde tu truco entraria en acción no? Lo del '%%'?

La tarea que propuse cambia el volumen desde el nivel actual hasta el que pongas, no desde el 1 ... siempre que la escribas como la puse, claro.

Si, si. Fallo mio. No lo hace. No sé que habré hecho que me pasó puntualmente, y no lo volví a revisar.

Sobre lo de los "tirones". Un bucle establecido con ítems del tipo aaa:bbb corre de 1 en 1 desde aaa hasta bbb. Lo puedes verificar insertando un flash de %vol...

...Como dice Caravantes puede que se noten más los saltos en función de la pausa. Con los 800ms iniciales se notaba mucho por eso puse 500ms. Desde luego se notará menos con la pausa de 125ms que finalmente has puesto.

No es por eso, ni lo que tú crees el problema. Iva a hacer un video de demostración sobre mi tarea, la tuya, y la de Caravantes para que veais exactamente lo que ocurre en mi dispositivo.
Pero, recien ahora estoy revisando tu último comentario WillyWeb, en que comentas el tema de los servicios de Google, y que podria haber estado pasando algo parecido a lo que comenté. Cuando, lo pruebe comento como fue.

Por pura curiosidad, ¿qué versión de Tasker y de Servicios de Google tienes instalados?
- Tasker -> 5.0b5
- Servicio Google -> 11.3.02 (430-161239932) (11302430)

WillyWeb
11/07/17, 22:19:03
No te lo puedo asegurar porque no estaba pendiente de ese detalle, pero juraría que al escribir y probar la tarea por primera vez tenía los Servicios de Google v11.2.99, te lo digo por si te vale de algo.

Si te fijas al final hemos hecho lo mismo. El bucle, que es el que hace el trabajo, corre desde el valor actual hasta el valor propuesto. La pequeña diferencia es la forma en la que hemos sacado ese valor actual del volumen del canal seleccionado.

Mi sistema usa una característica de Tasker muy poco explotada. Intentaré explicar su funcionamiento paso a paso...

En las acciones A1/A2/A3 doy valor a la variable %canal con un literal que "casualmente" coincide con parte del nombre de las variables de sistema VOLR/VOLA/VOLM (falta el % delante de cada nombre).

En A4 está la miga ... a la variable %vcanal se le asigna como valor %%canal. Tasker siempre "sustituye" (en palabras de Pent) cualquier cosa con la apariencia de una variable por su valor antes de asignársela a algo, así que suponiendo que %canal=VOLM (una cadena e texto literal, no la variable %VOLM) ...


Tasker identifica algo con apariencia de nombre de variable en el literal %%canal y al sustituirlo por su valor queda como %VOLM.
Eso vuelve a ser algo con apariencia de variable y Tasker lo sustituye de nuevo por su valor.
Al final ese %vcanal de A4 termina siendo el valor numérico del nivel de volumen del canal multimedia ... así de fácil.


Supongamos ahora que quieres dar valor a la variable %cvol de tu tarea para los siete canales que proponía Caravantes. Con el sistema que has usado necesitarías siete acciones con sus correspondientes condicionales. Con este sistema seguirías necesitando esa única acción.

Sobre tu "cacao mental", no pierdas la perspectiva. Esto es un literal (VOLM) y esto es una varaible (%VOLM). Se parecen mucho, pero Tasker no las confunde, tranquilo.

El resto de la tarea (el bucle) creo que está suficientemente clara pero si alguien se pierde que lo diga y lo analizamos con calma.

:palomitas:

SmartPhoneLover
11/07/17, 22:19:07
Confirmado WillyWeb, tu tarea ahora funciona a la perfeccion con ese pequeño cambio.
Pues creo que ya queda definitivamente solucionado el hilo. :-)

Otra vez, muchísimas gracias!

WillyWeb
12/07/17, 11:16:23
Sólo una aclaración más para no dejar flecos sueltos. :rolleyes:

Al establecer un bucle poniendo variables en el campo Ítems sus valores se "sustituyen" y evalúan en cada iteración del bucle.

Este es nuestro bucle...


Se establece un bucle con Variable=%vol e Ítems=%VOLM:%par1
Se cambia el volumen de canal multimedia a %vol (eso cambia el valor de %VOLM)
Se incrementa/decrementa %vol y si no es igual que %par1 vuelta a [1]


Suponiendo que %VOLM=3 y %par1=9 el valor de %vol debería ir de 3 a 9 de 1 en 1, pero en el interior del bucle se cambia precisamente el valor de la variable que controla el inicio del bucle, y eso parece afectar al incremento/decremento del punto [3] del proceso.

Creo que es la primera vez que veo algo así :loco:

GraphicAdventure
12/07/17, 19:48:31
Suponiendo que %VOLM=3 y %par1=9 el valor de %vol debería ir de 3 a 9 de 1 en 1, pero en el interior del bucle se cambia precisamente el valor de la variable que controla el inicio del bucle, y eso parece afectar al incremento/decremento del punto [3] del proceso.

Creo que es la primera vez que veo algo así :loco:

Me sorprendería mucho que los Servicios de Google tuvieran algo que ver cómo Tasker ejecuta cálculos.

La variable del bucle (%vol) se incrementa/disminuye por el número de iteraciones pero no partiendo del valor inicial de %%canal sino de lo que tenga en ese momento.

Con los valores del ejemplo:
En la primera iteración %vol=3 y %%canal=3
En la segunda iteración %vol=4 (%%canal+1) y %%canal=4 (%vol).
En la tercera iteración %vol=%%canal+2 pero %%canal=4 entonces %vol=6.
Y así sucesivamente.

Yo uso esta funcionalidad hace bastante tiempo pero es para cuando desconozco el nombre de la variable a la que hago referencia.
Se pueden hacer varias referencias en una variable, basta poner un % por cada una.
%%%probar sería la variable de lo que contenga el contenido de %probar.
O dicho de otra forma, la variable de la variable de la variable.

WillyWeb
13/07/17, 00:47:47
Me sorprendería mucho que los Servicios de Google tuvieran algo que ver cómo Tasker ejecuta cálculos.

Pues ya te digo que la diferencia en el funcionamiento de la tarea ha sido justo con el cambio de versión ...
¿casualidad? :rolleyes:

Algo me falla en el ejemplo de valores que has puesto. El valor de %%canal es el nombre de una variable que a su vez tiene un valor que se cambia indirectamente dentro del bucle. Una veces funciona bien y otras no. No te puedo decir más. En cualquier caso con la última versión de la tarea ya funciona como se espera, así que tema resuelto.

:cucu:

GraphicAdventure
13/07/17, 14:51:11
Pues ya te digo que la diferencia en el funcionamiento de la tarea ha sido justo con el cambio de versión ...
¿casualidad? :rolleyes:

¿Puede ser que en realidad nunca haya funcionado y no te hayas dado cuenta?
No dudo de ti para nada, eres muy consistente con todo, pero yo antes de pensar que una aplicación puede interferir con un código de instrucciones de Tasker, yo pensaría que es un bug de Tasker.
Si vuelves a la versión anterior lo compruebas.


Algo me falla en el ejemplo de valores que has puesto. El valor de %%canal es el nombre de una variable que a su vez tiene un valor que se cambia indirectamente dentro del bucle.

El ejemplo es el tuyo, %VOLM=3 y %par1=9.
%%canal=%VOLM=3


Una veces funciona bien y otras no. No te puedo decir más. En cualquier caso con la última versión de la tarea ya funciona como se espera, así que tema resuelto.

Está solucionado pero yo trataba de explicar por qué ocurre esto y por lo que comentó SmartPhoneLover deduzco que es precisamente lo que yo dije, el bucle cambia %vol pero no de 1 en 1 sino por número de iteraciones. Fácil de comprobar, poner un flash de %vol dentro del bucle.
Lo que no tiene sentido es que funcione a medias.
Pues voy a probar en mi móvil...

Tengo la versión 11.0.55 de Servicios de Google, con %VOLM=15 bajar hasta llegar a 1.
%vol adquiere estos valores: 15, 14, 12, 9, 5.
Lo hice 10 veces y siempre obtuve el mismo resultado, el bucle le resta a %vol el número de iteraciones por la que va sobre el valor de %VOLM.

WillyWeb
13/07/17, 15:32:05
Tengo la versión 11.0.55 de Servicios de Google, con %VOLM=15 bajar hasta llegar a 1.
%vol adquiere estos valores: 15, 14, 12, 9, 5.
Lo hice 10 veces y siempre obtuve el mismo resultado, el bucle le resta a %vol el número de iteraciones por la que va sobre el valor de %VOLM.

Una prueba similar hice yo cuando escribí la tarea y funcionaba bien (pasaba de 3 a 10 correctamente). :oh:

¿Puede ser que en realidad nunca haya funcionado y no te hayas dado cuenta?

¿Pues qué quieres que te diga?. Ya estoy dudando de lo que han visto mis ojos. :rolleyes:

Viendo la secuencia que te ha salido está claro que %vol toma el valor de %VOLM (la variable con el valor inicial del bucle) menos el número de iteración. Sería cosa de discutir con Pent si ese es el comportamiento que debe tener un bucle (yo creo que no, pero ese es otro tema).

Lo de pensar que podría ser cosa de los Servicios de Google es porque ya he visto que afectan a otras cosas; el valor de %TETHER (ya se lo comenté a Pent) y la calidad de la detección de redes WiFi cercanas son dos que me he encontrado, ambas sobre Android 7.x.

Mi primera prueba la hice con una versión beta de los Servicios de Google, y cuando saltó la liebre estaba usando otra beta diferente. No me parecía tan descabellado pensar que las variables que reflejan el volumen de los canales de audio se viesen también afectadas, pero afortunadamente no parece el caso. Por cierto, nunca he pensado que pudiera ser otra cosa que eso.

Gracias por las pruebas y las conclusiones. Todo análisis detallado siempre es de agradecer. :ok: