Имитация событий сенсорного экрана на Android

#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));