Android adb shell 获得点击屏幕的位置坐标
来源:互联网 发布:迪达拉的手嘴 知乎 编辑:程序博客网 时间:2024/04/28 22:47
Android adb shell 获得点击屏幕的位置坐标
通过
adb shell getevent
命令获得点击屏幕的位置坐标的方法:
第一步:计算比例
首先通过命令
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
注释:如果是windows环境,没有“|” 管道 和 grep 命令,可以直接用
adb shell getevent -p
然后在打印信息里自己过滤 0035 和 0036 找对应如上两行信息
我们需要的就是 其中的max
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)
==============================================================================
当然还有其他很多方法获得点击屏幕位置坐标。
如果有点击页面的源码,嗯嗯,你可以打印log。TouchEvent里面的位置直接就是你在屏幕上的点击位置
或者
用自动化测试工具,直接输出点击位置坐标,
当然也是OK滴
adb shell getevent 只是其中之一方法,
它的使用就是没有源码,也木有自动化测试工具时。
一旦算出比例后,
每次计算坐标位置的计算量也不算大。可以忍啦^_^
- Android adb shell 获得点击屏幕的位置坐标
- Android adb shell 获得点击屏幕的位置坐标
- Android adb shell 获得点击屏幕的位置坐标
- Android获取点击屏幕的位置坐标
- Android利用adb shell命令获取屏幕的点击坐标之横屏竖屏的区别
- 获得副屏幕坐标位置
- iOS开发--点击屏幕获得屏幕坐标
- iOS开发--点击屏幕获得屏幕坐标
- android view 屏幕的点击位置分析
- android 根据点击屏幕坐标,确定点击的item位子
- 获得控件的屏幕坐标
- android 获得当前view在屏幕的坐标
- android 获得当前view在屏幕的坐标
- 【Android】控件与屏幕的位置、坐标、大小
- js获得屏幕的位置
- 基于Swift的iOS应用程序开发:获得屏幕点击的坐标
- adb shell getevent中获取到的屏幕事件的坐标转换
- [Android]通过adb shell input上报命令模拟屏幕点击事件
- 使用PRId64
- Android开发者必知的5个开源库
- 字符串转换系列三:VARIANT、COleVariant 和_variant_t
- 求一元二次方程ax^2+bx+c=0的根
- 通过广域网(Intelnet)进行远程唤醒[或开机] 图解
- Android adb shell 获得点击屏幕的位置坐标
- C++快速学习笔记
- 無法將工作階段狀態要求送至工作階段狀態伺服器。請確定 ASP.NET 狀態服務已經啟動且用戶端與伺服器的通訊埠都相同。如果伺服器是在遠端電腦上,請檢查 HKEY_LOCAL_MACHINE\SYSTE
- 树形控件CTreeCtrl的使用
- 传至博客ios视频基础班-就业班全套视频
- QSqlTableModel 使用方法
- 谈谈RTP传输中的负载类型和时间戳
- Java 多线程及线程池理论分析
- window.pen() 详解