Android ADB Shell Sendevent funktioniert nicht

0

Ich möchte das Drücken des Netzschalters auf einem gerooteten Samsung Galaxy Tab 2 GT-P5100Android 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

Woher weiß ich, ob dies erfolgreich war?

Ich dachte, dass der folgende Befehl den Sperrbildschirm anzeigen würde:

input keyevent 116

Ich bekomme keine Fehler, aber nichts passiert ...

Alternativ habe ich die Textform des Schlüsselcodes verwendet, die so aussieht:

input keyevent KEY_POWER

In diesem Fall lautet die Ausgabe Killed- Was bedeutet das?

Zuletzt habe ich versucht:

sendevent dev/input/event1 1 116 1 ; sendevent dev/input/event1 1 116 0

Ohne glück :(

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 0074hat die Beschriftung KEY_POWER.

Hennes
quelle

Antworten:

1

Das Drücken des Netzschalters besteht aus einigen Ereignissen. Sie können dies überprüfen, indem Sie den folgenden Befehl eingeben:

adb shell getevent -l

und drücken Sie dann die Ein / Aus-Taste. 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 Eingabedatei für Berührungsereignisse / 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 Berührungsereignisdatei ändern:

adb shell
chmod 666 /dev/input/event0

Alle Definitionen von Schlüsseln finden Sie unter http://androidxref.com/4.4_r1/xref/prebuilts/ndk/6/platforms/android-9/arch-arm/usr/include/linux/input.h

Der Wert von Sendevent-Schlüsseln sollte dezimal sein

Um den Einschaltknopf zu emulieren, müssen Sie alle diese Ereignisse schreiben:

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.

androriv1996
quelle
0

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 versuchen Sie es einfach mit dem folgenden;)

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
Berkan Yapicioglu
quelle