Wie simuliere ich ein Touch-Ereignis mit Android, während ich die X- und Y-Koordinaten manuell gebe?
android
adb
gesture-recognition
indira
quelle
quelle
Antworten:
Die Methode von Valentin Rocher funktioniert, wenn Sie Ihre Ansicht erweitert haben. Wenn Sie jedoch einen Ereignis-Listener verwenden, verwenden Sie Folgendes:
Weitere Informationen zum Abrufen eines MotionEvent-Objekts finden Sie hier: Android: Wie erstelle ich ein MotionEvent?
quelle
downTime
ist die Zeit, in der der Benutzer auf dem Bildschirm aufsetzt, währendeventTime
in diesem Fall der Benutzer seinen Finger nach oben hebt (ACTION_UP
). Ich bin nicht sicher, ob es noch funktionieren wird, wenn beide gleich sind. Sie können es testen und Ihre Ergebnisse veröffentlichen.Hier ist ein Monkeyrunner-Skript, das Berührungen sendet und an eine Anwendung zieht. Ich habe dies verwendet, um zu testen, ob meine Anwendung schnelle, sich wiederholende Wischgesten verarbeiten kann.
quelle
MonkeyDevice.DOWN_AND_UP
anstelle von verwenden'DOWN_AND_UP'
. (DOWN_AND_UP
ist die Standardeinstellung, damit Ihr Code immer noch funktioniert)UP
Aktion neuVerwenden Sie adb Shell-Befehle, um das Berührungsereignis zu simulieren
quelle
Wenn ich das klar verstehe, möchten Sie dies programmatisch tun. Anschließend können Sie die onTouchEvent- Methode von verwenden
View
und eineMotionEvent
mit den von Ihnen benötigten Koordinaten erstellen .quelle
Sie sollten den neuen Monkeyrunner ausprobieren . Vielleicht kann dies Ihre Probleme lösen. Sie geben zum Testen Schlüsselcodes ein, möglicherweise sind auch Berührungsereignisse möglich.
quelle
adb shell monkey
dasmonkeyrunner
, was ein anderes Werkzeug ist.Bei der Verwendung von Monkey Script ist mir aufgefallen, dass DispatchPress (KEYCODE_BACK) nichts tut, was wirklich scheiße ist. In vielen Fällen liegt dies daran, dass die Aktivität das Schlüsselereignis nicht verwendet. Die Lösung für dieses Problem besteht darin, eine Mischung aus Monkey-Skript und ADB-Shell-Eingabebefehl in einer Sequenz zu verwenden.
1 Die Verwendung des Affenskripts ermöglichte eine hervorragende Zeitsteuerung. Warten Sie eine bestimmte Sekunde auf die Aktivität und es handelt sich um einen blockierenden AdB-Aufruf.
2 Wenn Sie schließlich den Eingabeschlüssel-Eingabeschlüsselereignis 4 senden, wird die laufende APK beendet.
Z.B
adb shell monkey -p com.my.application -v -v -v -f /sdcard/monkey_script.txt 1
adb shell input keyevent 4
quelle
MotionEvent wird nur durch Berühren des Bildschirms generiert.
quelle