Android模拟发送点击的两种方式

来源:互联网 发布:php抢红包源代码 编辑:程序博客网 时间:2024/05/29 03:33

在Android中模拟一个点击事件有两种方式是通过模拟MotionEvent来实现;一种是通过ADB来实现。

第一种:模拟MotionEvent

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();}
调用方式:

//调用方法setSimulateClick(edit1,(edit2.getLeft()+edit2.getRight())/2,(edit2.getTop()+edit2.getBottom())/2);

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();}

第二种:ADB控制

ADB中通过input来实现,用于输入 touch,key等事件 :


The commands and default sources are:  text <string> (Default: touchscreen)  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)
Demo 输入按键enter key:
adb shell input keyevent 66
Demo 输入 输入滑动操作:
adb shell input touchscreen swipe 18 665 18 350



0 0