リモートで音量を変更するにはどうすればよいですか?


9

家では、Androidをスピーカーに接続して、インターネットラジオを聴くことがよくあります。私のラップトップでコマンドを使用してサウンドレベルを変更できるようにしたいと考えています。

電話にsshシェルを開くことはできますが、Androidの音量を変更するコマンドを見つけられません。

android-shellのオーディオ音量を変更するコマンドはありますか?それとも、私が完全に見逃したsshなしの別のアプローチがあるのでしょうか?

Android 4.1を実行しています。

編集する

受け入れられた回答は、ルート化されたデバイスで機能するはずです。ルート権限を取得されていないデバイスに対する回答を得ることに私はまだ熱心です。

回答:


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」の両方にかなりのオーバーヘッドがあります。すべて1つのボリューム調整で、HTCの欲望を完了するには2.5秒かかります。

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

'input'を使用してキーイベントを生成する機能を使用するには、入力グループ(ここではGID = 2004)のメンバーである必要があるようです。また、ロックは最終的にすべてのキーイベントを消費するため、画面をロック(および/またはオフ)する必要がないことに気付きました。また、コマンドの実行には約1秒かかることに注意してください。


これは非常に有望に見えます。コマンドは失敗することなくシェルによって受け入れられますが、ボリュームは変更されません。私はおそらく私の許可でもう少しプレイする必要があります。
12

それは私のために機能します(rootで「adb shell」経由でローカルに接続された電話を使用)。おそらくそれは許可の問題です。拒否された「入力」呼び出しに関する出力がある場合は、logcatを確認してください
ce4

いいえ、ルートアクセス権はないと思います。さらに、androidユーザーとして実行すると、「su not found」と表示されます。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

OK、私はinput(1004)グループのメンバーではありません。いつかデバイスをルート化して、再試行します。
mirk

ルートを必要としないオプションが必要です。たとえば、その目的でタスカーを(誤)使用する(タスカーはほとんどすべてに必要な権限を持っている...)
ce4
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.