Я не знаю, как ОНИ это делают, но один из возможных способов - через команду оболочки input
.Я ожидаю, что обычные программы не имеют разрешения на его использование, но adb shell
имеет, и, вероятно, будут иметь корневые программы.Использование печатается следующим образом:
Usage: input [<source>] <command> [<arg>...]
The sources are:
mouse
keyboard
joystick
touchnavigation
touchpad
trackball
stylus
dpad
touchscreen
gamepad
The commands and default sources are:
text <string> (Default: touchscreen) [delay]
keyevent [--longpress] <key code number or name> ... (Default: keyboard)
tap <x> <y> (Default: touchscreen)
swipe <x1> <y1> <x2> <y2> [duration(ms)] (Default: touchscreen)
press (Default: trackball)
roll <dx> <dy> (Default: trackball)
Вы бы сделали что-то вроде
List<String> commandLine = Arrays.asList("input touchscreen swipe 500 10 500 500 100".split(" "));
Process process = Runtime.getRuntime().exec(commandLine);
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
, как упомянуто в Любой способ запуска команд оболочки на Android программно? .(Я немного адаптировал его и фактически не тестировал, так что это может занять некоторое время.)
Обратите внимание, что он не позволяет вам, например, видеть, где находятся кнопки, поэтому вы 'Вам нужно будет заранее знать, что вы делаете.
Вы также можете попробовать Instrumentation
, как упомянуто здесь: Нажатие клавиши имитации Android