Android 模拟点击

前言

最近提出一个需求让做模拟点击,什么意思呢?就是有一个按钮,你点击这个按钮触发的不是按钮本身,而是其他的地方。其实就是在用户不触摸手机屏幕的时候,模拟触发手机屏幕的某个地方。

不知道大家平时开发的过程用到的 adb shell命令 的地方多不多呢?

今天这个需求,我们就用adb shell命令 来完成。

真机实验

我们先用USB连接真机,在cmd命令行工具里:

adb shell
shell@PRO6:/ $ input tap 125 521
shell@PRO6:/ $

这里的意思就是点击屏幕上 (x, y) = (125, 521)的地方。果然手机响应了,缺点就是响应时间略长,感觉有1秒左右。

同理其他手势操作也可以完成,这里不作详解,感兴趣的可以自行搜索。

下面我们需要做的就是在代码里完成上述操作,并且可以持续在后台运行。这里我也是踩坑无数,听我慢慢吐槽

方式一 ProcessBuilder

直接上代码:

    /*** 传入在屏幕中的坐标,坐标左上角为基准* 模拟点击** @param x 需要点击的x坐标* @param y 需要点击的y坐标*/public static void autoClickPos(final double x, final double y) {new Thread(new Runnable() {@Overridepublic void run() {// 利用ProcessBuilder执行shell命令String[] order = {"input", "tap", "" + x, "" + y};try {new ProcessBuilder(order).start();LogUtil.e("命令执行了");} catch (IOException e) {e.printStackTrace();LogUtil.e("命令执行了,但是出错啦");}}}).start();}

方式二:Instrumentation

/*** 传入在屏幕中的坐标,坐标左上角为基准* 模拟点击** @param x 需要点击的x坐标* @param y 需要点击的y坐标*/
public static void onStartClickView(final float x, final float y) {new Thread(new Runnable() {@Overridepublic void run() {try {Instrumentation inst = new Instrumentation();inst.sendPointerSync(MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(), MotionEvent.ACTION_DOWN, x, y, 0));inst.sendPointerSync(MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(), MotionEvent.ACTION_UP, x, y, 0));LogUtil.i("模拟点击" + x + ", " + y);} catch (Exception e) {LogUtil.e(e.toString());}}}).start();}

注意:该方式必须跑在子线程里面,不能跑在主线程里面。

Android 模拟点击相关推荐

  1. android 模拟电脑按键精灵,Android 模拟点击 按键精灵 ADB方案

    Android 模拟点击的方案 模拟MotionEvent ADB控制 Instrumentation 通过使用sendevent 这里我们只讨论ADB控制方案,因为这个方案可以点击本APP以外的东西 ...

  2. android 模拟点击某点,Android后台模拟点击探索(附源码)

    工作中我们需要自制一套工具,其中遇到需要模拟点击事件的需求,类似按键精灵的功能,支持后台持续运行,满足触发条件时完成点击. 经过一番探索,一共整理出两种不同的方案:AccessibilityServi ...

  3. android模拟点击滑动,android模拟点击,长按和滑动

    1.模拟长按 private void sendLongTouch(){ new Thread(new Runnable() { @Override public void run() { Instr ...

  4. Android模拟点击事件

    安卓模拟点击事件,可以实现的方法,目前我知道的有两种,都有不同的限制条件 1.通过设备与PC连接,并且ABD接通,PC上运行事先生成好的bat文件,达到点击或者其他目的    bat文件内容:adb ...

  5. android 模拟点击localinstrumentation,Android Instrumentation模拟鼠标点击事件

    看了几遍网上的博客一直没有 模拟出鼠标点击事件和按钮事件,后来抱着试试态度再重试的时候终于有所斩获.下面把具体的情况记录一下: 首先我们必须了解类 Instrumentation: Instrumen ...

  6. android 模拟点击 不发出声音,【Android】代码实现模拟屏幕点击和键盘按键事件...

    最近参加某比赛写了一个Android手机控制Android电视的程序,其中需要控制电视端模拟"鼠标"点击,和模拟按键盘的事件. 下面直接贴上程序: // 模拟屏幕点击事件 publ ...

  7. android模拟点击滑动,模拟Android的view点击和滑动监听

    一,简单形式的 /*模拟Android中的view 点击和滑动监听 * */ public class View { private OnClickListener onClickListener; ...

  8. android模拟点击系统打开apk按钮,Android开发系列: 电脑端Android模拟器安装使用教程...

    如今说到什么智能手机最火,那很多人肯定会说android系统的手机.如果你还没有Android手机,又想买一部试试,可是价格都不便宜,买来不适合自己怎么办?那么可以先在电脑上安装一个Android模拟 ...

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

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

最新文章

  1. mysql error code 145,MYSQL 错误#145解决方法
  2. 这家创新学校是如何用钉钉宜搭构建了数字化管理网络的?
  3. 在Ubuntu 18.04系统中使用Netplan工具配置网络
  4. 【2019百度之星初赛二1002=HDU6675】度度熊与排列(贪心)
  5. 现金支票打印模板excel_施工表格填写不规范?500套最全施工资料表格模板,可直接套用|面层|分项...
  6. java 托盘 气泡 菜单_C#如何使用NotifyIcon实现任务栏托盘菜单及气泡提示
  7. CentOS利用WebHook实现PHP自动部署Git代码
  8. python上传图片到钉钉_python实现钉钉群机器人报告推送
  9. 某机主存容量为4Nx16位,且存储字长等于指令字长,若该机指令系统可完成108种操作,操作码位数固定,且具有直接、间接、变址、基址、相对、立即等六种寻址方式
  10. 安卓开发实战!一年后斩获腾讯T3,年薪超过80万!
  11. 中国十大险峻山路:最弯的公路,7公里68个拐(组图)(ZT)
  12. ZigBee3.0_JENNIC-JN516x-ZigBeeBaseDevice_20170604_1.0
  13. Linux操作系统(Centos7)零基础入门,超详细!
  14. revit 学习园地
  15. (软件/it)项目管理课程笔记(新手入门,未完待续……)
  16. 江山易改本性难移之SPI要点
  17. mybatis一级缓存和二级缓存的区别?
  18. Android使用Webview播放Swf文件,实现与Flash数据交互
  19. 云原生时代的DevOps平台设计之道
  20. 【实用工具】文件扫描

热门文章

  1. EasyExcel实现Mysql数据库Excel数据导出
  2. GIONEE A1 金立A1 root 刷机包 GIONEE SWW1609_0201 mt6755
  3. 页面返回 上一页 下一页
  4. 抖音跳转微信加好友功能实现解析
  5. 计算机数据表格展示,利用工具,一分钟完成数据可视化,快速输出美观的数据图表...
  6. sqlserver官网下载地址
  7. git解决代码冲突、合并代码
  8. win10计算机睡眠 隔几分钟就唤醒,Win10电脑睡眠时经常被自动唤醒如何解决
  9. 关于Introduction、Discussion的杂记
  10. Springboot餐饮点餐系统毕业设计源码301749