
Ich möchte das Drücken des Netzschalters auf einem gerooteten Samsung Galaxy Tab 2 GT-P5100
Betriebssystem mit Android 4.0.4 mithilfe der ADB-Shell simulieren.
Dazu habe ich die entsprechenden Berechtigungen geändert mit:
adb shell
su
chmod 666 /dev/input/event1
Wie erkenne ich, ob dies erfolgreich war?
Ich dachte, dass der folgende Befehl den Sperrbildschirm anzeigen würde:
input keyevent 116
Ich erhalte keine Fehlermeldungen, aber es passiert nichts ...
Alternativ habe ich die Textform des Schlüsselcodes verwendet, die folgendermaßen aussieht:
input keyevent KEY_POWER
In diesem Fall lautet die Ausgabe Killed
:Was bedeutet das?
Zuletzt habe ich Folgendes versucht:
sendevent dev/input/event1 1 116 1 ; sendevent dev/input/event1 1 116 0
Ohne Erfolg :(
Was mache ich falsch?
getevent -i /dev/input/event1
gibt folgendes aus:
add device 1: /dev/input/event1
bus: 0000
vendor: 0000
product: 0000
version: 0000
name: "sec_key"
location: ""
id: ""
version: 1.0.1
events:
KEY (0001): 0072 0073 0074
input props:
<none>
Der Schlüssel 0074
hat die Textbeschriftung KEY_POWER
.
Antwort1
Das Drücken des Netzschalters besteht aus mehreren Ereignissen. Sie können dies überprüfen, indem Sie den folgenden Befehl eingeben:
adb shell getevent -l
und drücken Sie dann den Einschaltknopf. Auf dem Nexus 5-Emulator ist das Ergebnis:
/dev/input/event0: EV_KEY KEY_POWER DOWN
/dev/input/event0: EV_SYN SYN_REPORT 00000000
/dev/input/event0: EV_KEY KEY_POWER UP
/dev/input/event0: EV_SYN SYN_REPORT 00000000
Die Touch-Event-Eingabedatei /dev/input/event kann von Gerät zu Gerät unterschiedlich sein. In diesem Fall ist es event0.
Bevor Sie Ereignisse auf das Gerät schreiben, müssen Sie den Modus der Touch-Ereignisdatei ändern:
adb shell
chmod 666 /dev/input/event0
Alle Schlüsseldefinitionen finden Sie in http://androidxref.com/4.4_r1/xref/prebuilts/ndk/6/platforms/android-9/arch-arm/usr/include/linux/input.h
Der Wert der Sendevent-Schlüssel sollte seinDezimal
Um das Drücken des Netzschalters zu emulieren, müssen Sie alle diese Ereignisse aufschreiben:
adb shell sendevent /dev/input/event0 1 116 108
adb shell sendevent /dev/input/event0 0 0 0
adb shell sendevent /dev/input/event0 1 116 103
adb shell sendevent /dev/input/event0 0 0 0
Ich habe es auf dem Nexus 5-Emulator getestet und es funktioniert.
Antwort2
Weil Sie nicht richtig senden. Es reicht nicht aus, nur zu senden
sendevent dev/input/event1 1 116 1 ; sendevent dev/input/event1 1 116 0
Bitte probiere einfach das Folgende aus ;)
sendevent dev/input/event1 1 116 1 ; sendevent dev/input/event1 0 0 0 ;sendevent dev/input/event1 1 116 0 ;sendevent dev/input/event1 0 0 0