android 使用shell模拟触屏_[Android]通过adb shell input上报命令模拟屏幕点击事件【转】...

本文介绍了如何使用ADB Shell的input命令模拟Android设备的屏幕点击、滑动等事件,包括`input tap`、`input swipe`等。通过获取设备的坐标比例并计算实际屏幕坐标,可以精确控制模拟触屏操作。此外,文章还提到了在不同场景下使用这些命令的实用性和在项目中的应用。

常用的 input上报命令:

input text 1234 实际向界面注入1234文字,有输入框,能明显看到效果

input keyevent 4 键盘事件,4 为返回

input tap 100 300 单击触屏事件 ,模拟点击x=100 y = 300 位置

input swipe 100 300 500 300 触屏滑动事件,模拟滑动,从x =100

y = 300 滑动到x=500 y=300位置

input press 模拟按下轨迹球

input roll 100 300 模拟轨迹球滑动 x 方向100 y方向300

获取坐标方法:

第一步:计算比例

adb shell getevent -p | grep -e “0035” -e “0036”

获得event 体系里 宽(0035)和高(0036)

以当前我使用的手机为例,命令会输出如下信息:

0035 : value 0, min 0, max 1602, fuzz 0, flat 0, resolution 0

0036 : value 0, min 0, max 2503, fuzz 0, flat 0, resolution 0

0035(宽) max 1602

0036(高) max 2503

计算比例(用已知的屏幕分辨率,如1080p即:1080(宽) * 1920(高)):

rateW = 1080(手机屏幕的宽) / 1602(event里0035的max) = 0.674

rateH = 1920(手机屏幕的高) / 2503(event里0036的max) = 0.767

第二步:点击屏幕计算点击位置的坐标

adb shell getevent | grep -e “0035” -e “0036”

点击屏幕上需要的位置,会有如下输出:

/dev/input/event0: 0003 0035 00000341

/dev/input/event0: 0003 0036 000008ec

把0035和0036后面的位置数据从16进制转化为10进制

width = 0x341 = 3*16*16 + 4*16 + 1 = 833

height = 0x8ec = 8*16*16 + 14*16 + 12 = 2284

这是在event体系里的位置,将其转化为屏幕位置

screenW = width*rateW = 833*0.674 = 561

screenH = height*rateH = 2284*0.767 = 1751

终于算出来了

刚刚点击的屏幕位置坐标就是(561, 1751)

android adb shell input各种妙用

项目中使用一个开发版,预留两个usb接口.类似华硕TinkerBoard. 一个用户连接摄像头,一个用于adb调试.结果就没了鼠标的接口.多次切换鼠标和摄像头插头,非常不方便,带摄像头的app没法调试 ...

Android模拟屏幕点击input tap替代解决方案

动机解释 本来直接使用 adb shell -> input 即可模拟 键盘事件,触屏事件keyevent ,text,tap 但是手上的这台目标Android机4.0.3系统的input只支持 ...

我的Android进阶之旅------>Android中通过adb shell input来模拟滑动、按键、点击事件

今天在维护公司的一个小项目的时候,发现按公司手机的某个物理按键,激活相应的Service后,会在屏幕上模拟的点击了屏幕的某个坐标点.好家伙,原来是之前该项目的版本是按这个物理按键后,会弹出一个对话框, ...

Android:adb shell 命令详解

安卓系统是基于Linux系统开发,也就支持常见的Linux的命令,这些命令都保存在手机“/system/bin”的目录下,通过adb shell 便可以调用这些命令. 进入“/system/bin”该 ...

Android 执行 adb shell 命令

Android 执行Adb shell 命令大多需要root权限,Android自带的Runtime. getRuntime().exec()容易出错,在网上找到了一个执行adb shell命令的类 ...

Android 通过adb shell命令查看内存,CPU,启动时间,电量等信息

Android 通过adb shell命令查看内存,CPU,启动时间,电量等信息   by:授客 QQ:1033553122 1.  查看内存信息 1)查看所有内存信息 命令: dumpsys mem ...

adb shell input keyevent code详解

adb shell input keyevent 7 # for key '0' adb shell input keyevent 8 # for key '1' adb shell input ke ...

Android自动化----adb shell,appium,uiautomator2

1.区别 1,adb shell脚本的方式 不但可以在有电脑的情况下使用,通过数据线连接电脑然后adb shell命令,而且还可以打包成app,在手机的终端使用adb shell命令. 2,appiu ...

python(或BAT脚本)自动执行adb shell以后的命令

最近在用python做一个小工具,自动执行一些adb shell命令,使用subprocess.Popen来实现.   不过遇到个问题就是执行adb shell后就无法执行后面adb shell里的命 ...

随机推荐

小结一下前段时间做的rpgdemo

虽然说已经是彻底放弃继续做那个demo了(代码结构混乱,想增加新功能非常的不方便),不过还是花了一点心血在里面的,毕竟这是我开始学习unity游戏制作的初衷,不过果然是学的越多越发现自己的不足... ...

T-SQL 语句创建Database的SQL mirroring关系

1 证书部分:principle 和 secondary 端执行同样操作,更改相应name即可 USE master; --1.1 Create the database Master Key, if ...

MySQL bug:server-id默认被自己主动置为1

昨天同事在做主从时,从库报例如以下错误: Got fatal error 1236 from master when reading data from binary log: 'Misconfigu ...

C++ 常见容器

迭代器. 基本介绍(来源于网络):迭代器是一种抽象的概念.能够遍历容器内的 部分/全部 元素.每个迭代器中包含着元素的地址.  它可以将 抽象容器 和 泛型算法 结合起来.   大致原理: 1)迭代器 ...

ftp一些东东

ftp如果绑定域名 登录时登录名应该写成 域名|用户名

关于s2sh框架关于hibernate懒加载问题的说明和解决方案

首先我们来看下面这个图,解释了一个web程序的一次请求流程! 懒加载异常的说明: 懒加载就是我们在查询一个对象时,它所有的属性是否要被查出来! 如果懒加载开启的话,session在service层就被 ...

Centos-ip配置详解

1 搭建好Centos ,我这里是CentOS-6.7-x86_64-minimal  提供一个下载地址 链接:http://pan.baidu.com/s/1nvTUTh3 密码:xewk 2 我是 ...

C# 处理Excel公式(一)——创建、读取Excel公式

对于数据量较大的表格,需要计算一些特殊数值时,我们通过运用公式能有效提高我们数据处理的速度和效率,对于后期数据的增删改查等的批量操作也很方便.此外,对于某些数值的信息来源,我们也可以通过读取数据中包含 ...

hive数据查询

Fetch task 丢弃了mapreduce的作业的繁重任务,查询方便简单 1.第一种方式 2.linux命令行 3.地3中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值