![]() |
|
| Tasker Para hablar de todo lo relacionado con la aplicación tasker |
«
Tema Anterior
|
Siguiente tema
»
|
|
Herramientas |
|
#1
|
|
Esta vez traigo una cuestión muy sencilla.
![]() ¿Cómo puedo ajustar el volumen del canal multimedia al 50%?La pregunta está motivada porque el Taskero se ha dado cuenta de que cada móvil tiene un valor máximo diferente (depende de la rom, el fabricante y/o lo manitas que sea el usuario) y quiere hacer una tarea auto-adaptable a varios dispositivos. No tiene root y prefiere usar solamente acciones de Tasker. También le valen comandos de consola siempre que funcionen en su dispositivo (recuerda que sin root). Lo que digo, una cuestión sencilla ...
|
|
|
|
#2
|
||||
|
||||
|
O sea que la parte difícil del problema es: ¿Cómo hacer una tarea Tasker que averigüe (en cada dispositivo) cuál es el nivel máximo del volumen multimedia?
|
| Gracias de parte de: | ||
|
#3
|
|
|
Cita:
... exacto.
|
|
#4
|
||||
|
||||
|
Estoy confundido. A qué te refieres exactamente WillyWeb? Al nivel de DBs o a los niveles configurados para cada dispositivo (12,15...)?
Pero si a lo que te refieres es a averiguar los "volume steps" (niveles de volúme), de x canal, con dos simples acciones Java es posible: Código:
A1: Java Function [ Return: (AudioManager) temp Class Or Object:CONTEXT Function:getSystemService
{Object} (String) Param:audio Param: Param: Param: Param: Param: Param:]
A2: Java Function [ Return:%temp Class Or Object:temp Function:getStreamMaxVolume
{int} (int) Param:# Param: Param: Param: Param: Param: Param: ]
No lo he probado sin root, ya que yo tengo root permanentemente, pero si lo requiriese (reitero que no estoy seguro, pero creo que no ya que solo consulta), concédele el permiso 'WRITE_SECURE_SETTINGS' por ADB a Tasker, y será capaz de ejecutar dichas acciones sin root. Última edición por SmartPhoneLover Día 27/06/18 a las 11:17:23 |
|
#5
|
||||
|
||||
|
Luego, simplemente saca la media de lo que te arroje '%temp', redondeando al valor que creas más oportuno, y usa ese valor como volúmen al 50%.
|
|
#6
|
|
Me refería al nivel que se pone en la acción correspondiente. La escala puede variar mucho de un dispositivo a otro (0-7, 0-15, 1-30, etc.) y esa es la dificultad real de este caso.
Muy interesante el tema de usar Java ... ![]() Te agradecería más detalles de cómo se escriben esas acciones y del sitio en el que se pueden consultar esos números de canal que comentas. Y si esto requiere root tenemos un problema insalvable. El usuario no lo tiene ni lo puede/quiere poner. Mi solución es menos "sofisticada" pero totalmente funcional (al menos en mi dispositivo) ... -Guardas el volumen actual del canal multimedia %volm=%VOLM -Con la acción correspondiente pones un volumen disparatadamente alto (100) -Guardas el volumen del canal %MaxVolM=%VOLM -Con la acción correspondiente restauras el volumen inicial (%volm) Tras esas cuatro acciones tienes en %MaxVolM el nivel máximo que se puede asignar al canal multimedia. Luego es cuestión de aplicar el porcentaje que se quiera y listo. El mismo procedimiento es aplicable a cualquier otro canal. ¿Alguien que tenga una solución basada en comandos de consola?
|
| Gracias de parte de: | ||
|
#7
|
||||
|
||||
|
Ok, pues si que iva bien encaminado entonces
Para crear las acciones hay que hacer uso de la acción '+ > Code > Java Function'. Aquí debemos establecer como primera medida una referencia al servicio de audio de Android (AudioManager -> getSystemService). Por lo que: Java Function [ Return: (AudioManager) temp Class Or Object:CONTEXT Function:getSystemService {Object} (String) Param:audio Param: Param: Param: Param: Param: Param:] Acto seguido, teniendo el objeto exportado en la variable 'temp', ya podemos hacer uso de él con sus correspondientes métodos. Pues, en éste caso usamos el método 'getStreamMaxVolume', que sirve para devolver el índice máximo de un canal dado, en un número siempre entero (int). Y para finalizar, tendremos que indicar el canal, completando el primero de los argumentos 'Param', con el signo '#', sustituyéndolo por un número entero que haga referencia al deseado. Java Function [ Return:%temp Class Or Object:temp Function:getStreamMaxVolume {int} (int) Param:# Param: Param: Param: Param: Param: Param: ] Nota: hasta ahora no he dado con la forma de averiguar, o listar el identificador de todos y cada de uno de los canales disponibles en nuestro dispositivo. Por lo tanto, por ahora, la única forma que se me ocurre de "solucionar" esto, es ir probando hasta que veamos que el valor exportado coincide con los niveles que tengamos. Si alguien encuentra la manera, sería genial!!! ;) ---------------- Por otro lado, tu forma de hacerlo, ya había pensado exactamente en lo que has propuesto WillyWeb. Y con respecto a usar shell, habrá que investigar...
Última edición por SmartPhoneLover Día 27/06/18 a las 18:25:49 |
| Los siguientes 2 usuarios han agradecido a SmartPhoneLover su comentario: | ||
|
#8
|
||||
|
||||
|
̶M̶m̶m̶m̶,̶ ̶q̶u̶i̶z̶á̶s̶ ̶p̶o̶d̶r̶i̶a̶m̶o̶s̶ ̶u̶s̶a̶r̶ ̶'̶g̶e̶t̶D̶e̶v̶i̶c̶e̶s̶'̶p̶a̶r̶a̶ ̶o̶b̶t̶e̶n̶e̶r̶ ̶l̶o̶s̶ ̶I̶D̶s̶.̶ ̶
Creo que he encontrado un directorio que podría hacer referencia a los canales de audio en Android, o al menos eso imagino: '/proc/asound'. El acceso a éste directorio esta restringido a usuaris ROOT, pero bueno; como punto de estudio estaría bien profundizar en el caso. Nota: en caso de dicho directorio aloje información correspondiente a la petición de WillyWeb, con usar el comando 'cat' y luego hacer una búsqueda en las variables, se podrían obtener los datos que buscamos. Última edición por SmartPhoneLover Día 27/06/18 a las 18:49:37 |
| Los siguientes 2 usuarios han agradecido a SmartPhoneLover su comentario: | ||
|
#9
|
|
|
Cita:
https://developer.android.com/refere...ioManager.html En las funciones que sacan el volumen máximo/mínimo/actual se hace referencia al parámetro "streamType" para determinar el canal. Ese parámetro es una constante numérica predefinida y buscando un poco mas he dado con la lista de constantes ... STREAM_VOICE_CALL = 0 STREAM_SYSTEM = 1 STREAM_RING = 2 STREAM_MUSIC = 3 STREAM_ALARM = 4 STREAM_NOTIFICATION = 5 STREAM_DTMF = 8 STREAM_ACCESSIBILITY = 10 Aunque sólo están esos 8 canales los 11 números de canal (de 0 a 10) dan valores coherentes. Curiosamente Tasker no los soporta todos (como el de accesibilidad) y soporta alguno no documentado (como el de la voz BT durante las llamadas = 6). |
| Los siguientes 2 usuarios han agradecido a WillyWeb su comentario: | ||
|
#10
|
||||
|
||||
|
Cita:
Intentaré profundizar en el tema ;) |
|
#11
|
|
Este tipo de ideas pequeñas están bien.
No requieren mucho trabajo, hay diferentes aportaciones y tienen una utilidad práctica. Vi que tienes otros temas así, puedes seguir. Si quieres WillyWeb, puedes extender la idea y plantear: - Volumen nocturno si estamos en casa, con o sin auriculares - Volumen (diurno=nocturno) fuera de casa con o sin auriculares. 4 situaciones, 2 perfiles (volumen y volumen auriculares). No es complicado pero hay que pensar en posibles colisiones de situación. |
|
#12
|
|
|
Gracias hombre. Ahora me siento mucho más respaldado.
![]() Cita:
|
|
#13
|
![]() Un proyecto mayor no sé, solo pensé que así con cosas simples puede que participe más gente. Cosas cotidianas o que un día nos salven de un apuro tenerlo automatizado. Aunque sea solo comentar ideas y después pasarlas a Tasker. p. ej., se me ocurrió ahora tener la linterna haciendo señal SOS. |
|
#14
|
||
|
Cita:
![]() Cita:
|
|
#15
|
|
|
Cita:
|
| Gracias de parte de: | ||
|
#16
|
|
|
Cita:
Solo encontré una forma de hacerlo. |
|
#17
|
|
El sistema "burdo" está descrito en el post #6, y aplicado quedaría así...
Código:
Sistema1 (111) A1: Volumen multimedia [ Nivel:255 Mostrar:Apagado Sonido:Apagado ] A2: Establecer variable [ Nombre:%volmax A:%VOLM Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ] A3: Volumen multimedia [ Nivel:%volmax/2 Mostrar:Encendido Sonido:Apagado ] Código:
Sistema2 (222)
A1: Función Java [ Devolver:audman Class Or Object:CONTEXT Función:getSystemService {AudioManager} (String) Param:audio ]
A2: Función Java [ Devolver:%volmax Class Or Object:audman Función:getStreamMaxVolume {int} (int) Param:3 ]
A3: Volumen multimedia [ Nivel:%volmax/2 Mostrar:Encendido Sonido:Apagado ]
Cambiando la acción de volumen, la variable global y el streamType ambos sistemas se pueden aplicar a cualquier canal de audio. |
| Respuesta |
Estás aquí
|
||||||
|
||||||
«
Tema Anterior
|
Siguiente tema
»
|
|
Hora actual: 21:15:42 (GMT +1)
HTCMania: líderes desde el 2007




... exacto.





