如何远程更改音量?


9

在家里,我经常将Android设备连接到一些扬声器,以收听互联网广播。它希望能够通过笔记本电脑上的命令更改声音级别。

我可以打开手机的ssh外壳,但是我一直无法找到更改Android音量的命令。

是否有命令来更改android-shell上的音频音量?或者,也许有一种完全没有我想念的没有ssh的方法?

我正在运行Android 4.1。

编辑

接受的答案应适用于有根设备。我仍然渴望获得无根设备的答案。

Answers:


13

看看如何在Android模拟按键事件,并搜索“ KEYCODE_VOLUME_UP”和“ KEYCODE_VOLUME_DOWN”。

可以通过执行“输入”来生成事件:

#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"

我猜您的外壳最有可能需要适当的权限来触发输入事件。如果您进行公钥身份验证并将私钥保持在内存中(ssh-add),则可以制作包装器脚本,然后执行此脚本而无需询问密码。注意: “ su”和“ input”都有相当大的开销,在我的HTC Desire上,单个音量调整总共需要2.5秒才能完成。

编辑2:

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

似乎您必须是输入组的成员(此处为GID = 2004),才能使用'input'生成关键事件。另外,我注意到屏幕不必锁定(和/或关闭),因为锁定最终将消耗所有按键事件。另请注意,该命令将花费几乎1秒钟的时间。


这看起来很有希望。外壳程序会成功接受命令,但不会改变音量。我的权限可能可能要多玩一些。
mirk

它对我有用(通过带有root的“ adb shell”使用本地连接的电话)。最有可能是权限问题。也许看一下logcat,是否有关于拒绝的“输入”调用的输出
ce4 2012年

不,我认为我没有root访问权限。此外,它还告诉我以android用户身份运行时“未找到su”。Logcat提供以下输出:I/Input ( 2502): InjectKeyEvent: KeyEvent { action=ACTION_DOWN, keyCode=KEYCODE_VOLUME_UP, scanCode=0, metaState=0, flags=0x0, repeatCount=0, eventTime=399847, downTime=399847, deviceId=-1, source=0x101 } I/Input ( 2502): InjectKeyEvent: KeyEvent { action=ACTION_UP, keyCode=KEYCODE_VOLUME_UP, scanCode=0, metaState=0, flags=0x0, repeatCount=0, eventTime=399847, downTime=399847, deviceId=-1, source=0x101 }。我必须补充一点,我是Android新手。
mirk,2012年

好的,我不是input(1004)组的成员。有一天,我会启动我的设备,然后重试。
mirk

必须有一个选项使用塔斯克与该意图(塔斯克最有可能对几乎所有必要的权利...)需要根,如(MIS)
CE4
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.