Getevent und Zeigerposition
Ich versuche, das (x, y) - Koordinaten der Berührung durch den Mauszeiger Standort-option in den Entwickler-Optionen, und ich benutze diesen Koordinaten Tippen Sie auf den Bildschirm mit sendevent. Hier ist mein Skript, das das sendevent.
tap.sh
sendevent /dev/input/event0 3 57 2421
sendevent /dev/input/event0 3 58 232
sendevent /dev/input/event0 3 53 $1
sendevent /dev/input/event0 3 54 $2
sendevent /dev/input/event0 0 0 0
sendevent /dev/input/event0 3 57 4294967295
sendevent /dev/input/event0 0 0 0
Rufe ich das Skript aus der adb shell sh tap.sh <x> <y>
aber es ist nicht das Antippen der richtigen Koordinate. Stattdessen ist es ein klopfen an einem anderen Ort.
Auch, wenn ich Tippen Sie auf den Bildschirm, und überprüfen Sie das Ergebnis in getevent adb shell getevent
. Ich finde, dass die Koordinaten, die auf der Zeigerposition und der getevent unterschiedlich sind.
Warum unterscheiden Sie sich und wie löse ich dieses Problem?
PS: die Geräte, Die ich habe versucht sind, Nexus 7, Nexus 10.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den X-und Y-Koordinaten, erhalten aus der getevent und die, erhalten Sie von der Zeigerposition in den Entwickler-Optionen sind nicht die gleichen. Sie zugeordnet sind, mit Hilfe einer Formel.
Quelle: Touch-Geräte
Wiederum auf Entwickler Optionen und aktivieren Sie
Pointer Location
und Sie können die x-und y-Koordinaten, die oben auf dem Bildschirm, wenn Sie Tippen auf dem Bildschirm verwenden Sie diejenigen, die Koordinaten zu senden, Tippen Sie auf Ereignisse.adb shell settings put system pointer_location 1
Sind Sie sich bewusst, dass getevent (in meiner Erfahrung, diese möglicherweise variiert zwischen Geräten) zeigt base 16 Werte?
(Randbemerkung:
getevent -l
ist oft einfacher zu Lesen als es gibt eine string-Darstellung des event-Typen)d.h. wenn
getevent -l
sagtdie position des touch ist
(459, 886)
eigentlichjedoch scheint es, dass sendevent ist nicht nach verlangen, hex-Werte, wenn der code überhaupt funktioniert, wie Ihr (wie)
53
und54
arbeiten, wo ich gebraucht hätte0035
und0036
.Edit:
Versucht haben, den ursprünglichen code auf einem Nexus 5 (richtige Geräte-Datei ersetzt), habe ich festgestellt, dass kein touch-event generiert wird (oder wenn das hexadezimale äquivalent ersetzt wird, für experimentelle strenge), noch aus der Wiederverwendung Werte erfasst (und konvertiert) aus
getevent
. Zuvor hatte ich bessere Erfahrung bei der Konvertierung der Ereignisse mit einem Python-Skript basierend auf der C-one hier und das schreiben der Ausgabe direkt in die device-Datei.Edit 2:
Diese Frage hier deutet darauf hin, dass der erste code sollte funktionieren.