9 votos

¿Cómo puedo cambiar el volumen a distancia?

En casa suelo conectar mi Android a unos altavoces, para escuchar la radio por internet. Me gustaría poder cambiar el nivel de sonido a través de un comando en mi portátil.

Puedo abrir un shell ssh al teléfono, pero estoy atascado encontrar un comando para cambiar el volumen en el Android.

¿Existe un comando para cambiar el volumen de audio en el Android-shell? O tal vez hay un enfoque diferente sin ssh que me perdí por completo?

Estoy ejecutando Android 4.1.

Editar

La respuesta aceptada debería funcionar para los dispositivos rooteados. Todavía estoy interesado en obtener una respuesta para un dispositivo no rooteado.

13voto

ce4 Puntos 11180

Echa un vistazo a simulación de keyevents en Android y busque "KEYCODE_VOLUME_UP" y "KEYCODE_VOLUME_DOWN".

Los eventos pueden ser generados por la ejecución de la "entrada":

#local shell:
input keyevent 24 #vol up
input keyevent 25 #vol down
#remotely using ssh
ssh your-phone input keyevent 24 #vol up
ssh your-phone input keyevent 25 #vol down

# 'su -c command' to make it run as root (if not already). EDIT: now escaped properly.
ssh your-phone su -c "input\ keyevent\ 24" #vol up
ssh your-phone su -c "input\ keyevent\ 25" #vol down"

Su shell necesita permisos apropiados probablemente para disparar eventos de entrada, supongo. Si haces la autenticación con clave pública y mantienes tu clave privada cargada en la memoria (ssh-add) puedes hacer un wrapper script y simplemente ejecutarlo sin que se te pida una frase de contraseña. Nota: Hay una sobrecarga considerable tanto para 'su' como para 'input', en total un solo ajuste de volumen tarda 2,5s en completarse en mi HTC Desire.

EDIT2:

shell@android:/ $ id
uid=2000(shell) gid=2000(shell) groups=1003(graphics),1004(input),[...]
shell@android:/ $ time input keyevent 24                                       
    0m0.92s real     0m0.29s user     0m0.06s system

Parece que tienes que ser miembro del grupo de entrada (aquí GID=2004) para tener la capacidad de generar keyevents usando 'input'. Además, me he dado cuenta de que la pantalla no tiene que estar bloqueada (y/o apagada), porque el bloqueo consumiría todos los keyevents eventualmente. Note también que el comando toma casi 1 segundo.

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X