导论

在Android中模拟一个点击事件有三种方式是通过模拟MotionEvent来实现;一种是通过ADB来实现;一种是通过Instrumentation测试框架来实现

第一种:模拟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(); }

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

第二种:ADB控制

ADB中通过input来实现,用于输入touch,key等事件:
The sources are:       trackball      joystick      touchnavigation      mouse      keyboard      gamepad      touchpad      dpad      stylus      touchscreenThe 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

第三种:Instrumentation

Instrumentation是Android的测试框架,通过他,可以模拟很多Activity操作
        //KeyEvent.KEYCODE_MENU //KeyEvent.KEYCODE_BACK  public static void sendKeyEvent(final int KeyCode) {        new Thread() {     //不可在主线程中调用             public void run() {                 try {                     Instrumentation inst = new Instrumentation();                     inst.sendKeyDownUpSync(KeyCode);                } catch (Exception e) {                     e.printStackTrace();                 }              }             }.start();  }

第四种:通过使用sendevent

adb提供了控制手机的另一种实现:sendevent [device] [type] [code] [value]
eg:229就是menu的type值
sendevent /dev/input/event0 1 229 1

sendevent /dev/input/event0 1 229 0

这两句需要一起执行,因为一个点击事件包含down和up,不然不能执行操作

Android模拟点击的四种方式相关推荐

  1. android 辅助功能 模拟点击,Android模拟点击的四种方式

    导论 在Android中模拟一个点击事件有三种方式是通过模拟MotionEvent来实现:一种是通过ADB来实现:一种是通过Instrumentation测试框架来实现 第一种:模拟MotionEve ...

  2. Android按钮响应事件的四种方式

    一.按钮响应事件的四种方式 整体布局 沿用登录界面,对登录按钮进行事件响应处理 <?xml version="1.0" encoding="utf-8"? ...

  3. android xpath解析xml,Android 中处理 XML 的四种方式-DOM

    Android 中处理 XML 的几种方式连载中,我们就不介绍合成 XML 了,因为合成 XML 可以直接拼接字符串,虽然看起很不高大上,但却很有效.我们主要介绍如何取 XML 中的值. 适用 DOM ...

  4. Android中模拟点击的两种方式

    目前这两种方式,后面有的再继续添加. 1.当我们知道View的时候可以采用 view. performClick()方法 是使用代码主动去调用控件的点击事件(模拟人手去触摸控件) 2.点击也就是相当于 ...

  5. android四种点击事件,android点击事件的四种方式

    android点击事件的四种方式 第一种方式:创建内部类实现点击事件 代码如下: package com.example.dail; import android.text.TextUtils; im ...

  6. android+定时器+动画,Android 实现定时器的四种方式总结及实现实例_Android_脚本之家...

    Android中实现定时器的四种方式 第一种方式利用Timer和TimerTask 1.继承关系 java.util.Timer 基本方法 schedule 例如: timer.schedule(ta ...

  7. android 实现挂断电话【四种方式】,亲测可用

    网上查到两种挂断电话方式 第一种:通过反射得到隐藏的API,需要aidl文件,但是这种方式测试后,无效.方法写出来吧,也许对你有你有帮助. 首先在main文件下创建报名com.android.inte ...

  8. Android:按键响应方式第一种onClick属性,第二种方法接口类,第三种方式匿名内部类,第四种方式Activity

    一.在xml 中设置按键的onClick 绑定的函数 新建一个工程 然后在相关的页面添加一个Button 运行一下 实际上,现在这个按键一,我们去运行的时候,他是没有任何的反馈的,我们按完它,他没有任 ...

  9. android java 多线程,Android多线程的四种方式

    当我们启动一个App的时候,Android系统会启动一个Linux Process,该Process包含一个Thread,称为UI Thread或Main Thread.通常一个应用的所有组件都运行在 ...

最新文章

  1. UVALive 6093 Emergency Room --优先队列实现的模拟
  2. CentOS 5.x 系统下使用yum 升级php到5.2.x
  3. cassandra使用心得_使用Spring Data Cassandra缓存的预备语句
  4. PCA,ZCA,ICA,白化,稀疏编码和自编码器
  5. 虚拟服务器不识别网银盾,建行u盾插电脑没反应网页不自动跳出 3步教你快速解决...
  6. Max Script|控制摄像机
  7. AI和人工智能入门级视频
  8. cad插入块_CAD中块插入点定义错了,插入位置不对怎么办?
  9. 如何在华为应用市场上传APP
  10. 小程序将页面转为图片--Wxml2Canvas
  11. 最新彩虹DS网源码V6.0.8完美运营防黑版
  12. php 获取数组长度
  13. FCN学习:Semantic Segmentation(摘自知乎)
  14. nnet3-chain-copy-egs用于chain模型输入数据
  15. 云栖大会:两万人参会 十大亮点抢先看
  16. list.isEmpty() CollectionUtils.isEmpty(list)区别?
  17. 【USB】USB video class (UVC)相关概念学习
  18. mcnpf5输出结果_MCNP使用说明解读.ppt
  19. Matlab 添加工具包的操作
  20. 广州土地市场有所回暖?分析广州房价,看看有什么新发现

热门文章

  1. 开发Enterprise JavaBeans
  2. Java String 格式化示例
  3. 模式识别的一些基本概念
  4. .net 微信开发
  5. PHP fscanf
  6. Cacti的基本使用
  7. Android的MotionEvent和事件处理
  8. java实用教程第五版电子书,爱了爱了
  9. DMZ主机(路由器)
  10. 笔记本安装固态涉及到的注意事项