Android 模拟点击
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 模拟点击相关推荐
- android 模拟电脑按键精灵,Android 模拟点击 按键精灵 ADB方案
Android 模拟点击的方案 模拟MotionEvent ADB控制 Instrumentation 通过使用sendevent 这里我们只讨论ADB控制方案,因为这个方案可以点击本APP以外的东西 ...
- android 模拟点击某点,Android后台模拟点击探索(附源码)
工作中我们需要自制一套工具,其中遇到需要模拟点击事件的需求,类似按键精灵的功能,支持后台持续运行,满足触发条件时完成点击. 经过一番探索,一共整理出两种不同的方案:AccessibilityServi ...
- android模拟点击滑动,android模拟点击,长按和滑动
1.模拟长按 private void sendLongTouch(){ new Thread(new Runnable() { @Override public void run() { Instr ...
- Android模拟点击事件
安卓模拟点击事件,可以实现的方法,目前我知道的有两种,都有不同的限制条件 1.通过设备与PC连接,并且ABD接通,PC上运行事先生成好的bat文件,达到点击或者其他目的 bat文件内容:adb ...
- android 模拟点击localinstrumentation,Android Instrumentation模拟鼠标点击事件
看了几遍网上的博客一直没有 模拟出鼠标点击事件和按钮事件,后来抱着试试态度再重试的时候终于有所斩获.下面把具体的情况记录一下: 首先我们必须了解类 Instrumentation: Instrumen ...
- android 模拟点击 不发出声音,【Android】代码实现模拟屏幕点击和键盘按键事件...
最近参加某比赛写了一个Android手机控制Android电视的程序,其中需要控制电视端模拟"鼠标"点击,和模拟按键盘的事件. 下面直接贴上程序: // 模拟屏幕点击事件 publ ...
- android模拟点击滑动,模拟Android的view点击和滑动监听
一,简单形式的 /*模拟Android中的view 点击和滑动监听 * */ public class View { private OnClickListener onClickListener; ...
- android模拟点击系统打开apk按钮,Android开发系列: 电脑端Android模拟器安装使用教程...
如今说到什么智能手机最火,那很多人肯定会说android系统的手机.如果你还没有Android手机,又想买一部试试,可是价格都不便宜,买来不适合自己怎么办?那么可以先在电脑上安装一个Android模拟 ...
- android 辅助功能 模拟点击,Android模拟点击的四种方式
导论 在Android中模拟一个点击事件有三种方式是通过模拟MotionEvent来实现:一种是通过ADB来实现:一种是通过Instrumentation测试框架来实现 第一种:模拟MotionEve ...
最新文章
- mysql error code 145,MYSQL 错误#145解决方法
- 这家创新学校是如何用钉钉宜搭构建了数字化管理网络的?
- 在Ubuntu 18.04系统中使用Netplan工具配置网络
- 【2019百度之星初赛二1002=HDU6675】度度熊与排列(贪心)
- 现金支票打印模板excel_施工表格填写不规范?500套最全施工资料表格模板,可直接套用|面层|分项...
- java 托盘 气泡 菜单_C#如何使用NotifyIcon实现任务栏托盘菜单及气泡提示
- CentOS利用WebHook实现PHP自动部署Git代码
- python上传图片到钉钉_python实现钉钉群机器人报告推送
- 某机主存容量为4Nx16位,且存储字长等于指令字长,若该机指令系统可完成108种操作,操作码位数固定,且具有直接、间接、变址、基址、相对、立即等六种寻址方式
- 安卓开发实战!一年后斩获腾讯T3,年薪超过80万!
- 中国十大险峻山路:最弯的公路,7公里68个拐(组图)(ZT)
- ZigBee3.0_JENNIC-JN516x-ZigBeeBaseDevice_20170604_1.0
- Linux操作系统(Centos7)零基础入门,超详细!
- revit 学习园地
- (软件/it)项目管理课程笔记(新手入门,未完待续……)
- 江山易改本性难移之SPI要点
- mybatis一级缓存和二级缓存的区别?
- Android使用Webview播放Swf文件,实现与Flash数据交互
- 云原生时代的DevOps平台设计之道
- 【实用工具】文件扫描
热门文章
- EasyExcel实现Mysql数据库Excel数据导出
- GIONEE A1 金立A1 root 刷机包 GIONEE SWW1609_0201 mt6755
- 页面返回 上一页 下一页
- 抖音跳转微信加好友功能实现解析
- 计算机数据表格展示,利用工具,一分钟完成数据可视化,快速输出美观的数据图表...
- sqlserver官网下载地址
- git解决代码冲突、合并代码
- win10计算机睡眠 隔几分钟就唤醒,Win10电脑睡眠时经常被自动唤醒如何解决
- 关于Introduction、Discussion的杂记
- Springboot餐饮点餐系统毕业设计源码301749