Android simulated clicks
Introduction
One click event can be simulated in Android by simulating MotionEvent. The other is implemented by ADB.
First, the general method for simulating MotionEvent is as follows:
private void setSimulateClick(View view, float x, float y) {long downTime = SystemClock.uptimeMillis();final MotionEvent downEvent = MotionEvent.obtain(downTime, downTime,MotionEvent.ACTION_DOWN, x, y, 0);downTime += 1000;final MotionEvent upEvent = MotionEvent.obtain(downTime, downTime,MotionEvent.ACTION_UP, x, y, 0);view.onTouchEvent(downEvent);view.onTouchEvent(upEvent);downEvent.recycle();upEvent.recycle();}
Demo:
package com.xys.simulateevent;import android.app.Activity;import android.os.Bundle;import android.os.SystemClock;import android.view.MotionEvent;import android.view.View;import android.widget.Button;import android.widget.Toast;public class MainActivity extends Activity {Button button;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);button = (Button) findViewById(R.id.button1);}public void clickeMe(View view) {Toast.makeText(this, "clicked", Toast.LENGTH_LONG).show();}public void simulate(View view) {setSimulateClick(button, 160, 100);}private void setSimulateClick(View view, float x, float y) {long downTime = SystemClock.uptimeMillis();final MotionEvent downEvent = MotionEvent.obtain(downTime, downTime,MotionEvent.ACTION_DOWN, x, y, 0);downTime += 1000;final MotionEvent upEvent = MotionEvent.obtain(downTime, downTime,MotionEvent.ACTION_UP, x, y, 0);view.onTouchEvent(downEvent);view.onTouchEvent(upEvent);downEvent.recycle();upEvent.recycle();}}
Second, ADB controls ADB through input to input events such as touch and key:
The sources are: trackball joystick touchnavigation mouse keyboard gamepad touchpad dpad stylus touchscreenThe commands and default sources are: text
(Default: touchscreen) keyevent [--longpress]
... (Default: keyboard) tap
(Default: touchscreen) swipe
[duration(ms)] (Default: touchscreen) press (Default: trackball) roll
(Default: trackball)
Demo enter key:
adb shell input keyevent 66
Demo input slide operation:
adb shell input touchscreen swipe 18 665 18 350