Jak zasymulować zdarzenie dotykowe za pomocą Androida, podając ręcznie współrzędne X i Y?
android
adb
gesture-recognition
indira
źródło
źródło
Odpowiedzi:
Metoda Valentina Rochera działa, jeśli rozszerzyłeś swój widok, ale jeśli używasz detektora zdarzeń, użyj tego:
Aby uzyskać więcej informacji na temat uzyskiwania obiektu MotionEvent, oto doskonała odpowiedź: Android: Jak utworzyć MotionEvent?
źródło
downTime
byłby czas, w którym użytkownik dotyka ekranu, podczas gdyeventTime
w tym przypadku byłby to czas, w którym użytkownik podnosi palec w górę (ACTION_UP
). Nie jestem pewien, czy to nadal będzie działać, jeśli oba będą takie same. Możesz to przetestować i opublikować swoje wyniki.Oto skrypt monkeyrunner, który wysyła dotyk i przeciąga do aplikacji. Używam tego do sprawdzenia, czy moja aplikacja obsługuje szybkie, powtarzalne gesty machnięcia.
źródło
MonkeyDevice.DOWN_AND_UP
zamiast'DOWN_AND_UP'
. (DOWN_AND_UP
jest to ustawienie domyślne, więc Twój kod nadal działa)UP
akcjiużyj poleceń powłoki adb, aby zasymulować zdarzenie dotykowe
źródło
Jeśli dobrze rozumiem, chcesz to zrobić programowo. Następnie możesz użyć metody onTouchEvent programu
View
i utworzyćMotionEvent
z potrzebnymi współrzędnymi.źródło
Powinieneś dać szansę nowemu monkeyrunnerowi . Może to rozwiąże Twoje problemy. Umieszczasz w nim kody do testów, być może zdarzenia dotykowe są również możliwe.
źródło
adb shell monkey
jest tomonkeyrunner
, co jest innym narzędziem.Używając Monkey Script zauważyłem, że DispatchPress (KEYCODE_BACK) nie robi nic, co naprawdę jest do niczego. W wielu przypadkach jest to spowodowane faktem, że działanie nie zużywa zdarzenia klucza. Rozwiązaniem tego problemu jest użycie kombinacji skryptu małpy i polecenia wejściowego powłoki adb w sekwencji.
1 Używanie skryptu małpy dało świetną kontrolę czasu. Poczekaj sekundę na działanie i jest to blokujące wywołanie adb.
2 Na koniec wysłanie keyevent 4 wejścia powłoki adb zakończy działający plik APK.
NA PRZYKŁAD
adb shell monkey -p com.my.application -v -v -v -f /sdcard/monkey_script.txt 1
adb shell input keyevent 4
źródło
MotionEvent jest generowane tylko przez dotknięcie ekranu.
źródło