Zu Hause schließe ich oft mein Android an einige Lautsprecher an, um Internetradio zu hören. Es möchte in der Lage sein, die Lautstärke durch einen Befehl auf meinem Laptop zu ändern.
Ich kann eine SSH-Shell zum Telefon öffnen, aber ich finde keinen Befehl, um die Lautstärke auf dem Android zu ändern.
Gibt es einen Befehl zum Ändern der Lautstärke auf der Android-Shell? Oder gibt es vielleicht einen anderen Ansatz ohne ssh, den ich komplett übersehen habe?
Ich verwende Android 4.1.
Bearbeiten
Die akzeptierte Antwort sollte für gerootete Geräte funktionieren. Ich bin immer noch gespannt auf eine Antwort für ein nicht gerootetes Gerät.
Sehen Sie sich die Simulation von Tastenereignissen auf Android an und suchen Sie nach „KEYCODE_VOLUME_UP“ und „KEYCODE_VOLUME_DOWN“.
Ereignisse können durch Ausführen von "input" generiert werden:
#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"
Ihre Shell benötigt wahrscheinlich die entsprechenden Berechtigungen, um Eingabeereignisse auszulösen, denke ich. Wenn Sie die Authentifizierung mit öffentlichem Schlüssel durchführen und Ihren privaten Schlüssel im Speicher geladen halten (ssh-add), können Sie ein Wrapper-Skript erstellen und dieses einfach ausführen, ohne nach einer Passphrase gefragt zu werden. Hinweis: Sowohl für „su“ als auch für „input“ gibt es einen erheblichen Overhead, alles in allem dauert eine einzige Lautstärkeanpassung auf meinem HTC Desire 2,5 Sekunden.
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
Anscheinend müssen Sie Mitglied der Eingabegruppe sein (hier GID = 2004), um Keyevents mit "Eingabe" generieren zu können. Außerdem ist mir aufgefallen, dass der Bildschirm nicht gesperrt (und/oder ausgeschaltet) sein muss, da die Sperre schließlich alle Keyevents verbrauchen würde. Beachten Sie auch, dass der Befehl fast 1 Sekunde dauert.
mirk
ce4
mirk
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 }
. Ich muss hinzufügen, dass ich neu bei Android bin.mirk
ce4
Wutzebär