#android #touch-event
#Android #сенсорное событие
Вопрос:
Возможно ли, чтобы фоновый процесс или программная клавиатура создавали события касания и отправляли их на экран, как если бы экран действительно касался?
т.е. имитация событий сенсорного экрана.
Комментарии:
1. Вы хотите сделать это для целей тестирования или для фактического производственного кода?
Ответ №1:
Существует инструмент, который поставляется с SDK под названием Monkey, который генерирует псевдослучайные потоки пользовательских событий, такие как:
- щелчки
- прикосновения
- жесты
- ряд событий системного уровня.
Вы можете использовать обезьяну для стресс-тестирования приложений, которые вы разрабатываете, случайным, но повторяющимся образом.
Существует также инструмент monkeyrunner, который предоставляет API для написания программ, управляющих устройством или эмулятором Android из-за пределов кода Android. С помощью monkeyrunner вы можете написать программу на Python, которая устанавливает приложение или тестовый пакет для Android, запускает его, отправляет ему нажатия клавиш, делает скриншоты пользовательского интерфейса и сохраняет скриншоты на рабочей станции.
Ответ №2:
Для нажатия кнопок вы можете использовать следующее:
dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN,
KeyEvent.KEYCODE_BACK));
dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_UP,
KeyEvent.KEYCODE_BACK));
Список доступных кодов клавиш можно найти здесь:
http://developer.android.com/reference/android/view/KeyEvent.html
Для событий на сенсорном экране вы можете использовать:
dispatchTouchEvent(MotionEvent.obtain(
SystemClock.uptimeMillis(), SystemClock.uptimeMillis(),
MotionEvent.ACTION_DOWN, Xinput, Yinput, 0));