Android adb shell 获得点击屏幕的位置坐标

本文介绍如何使用ADB shell命令获取在Android设备屏幕上点击的具体位置坐标,包括计算屏幕比例及转化坐标等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

通过

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 只是其中之一方法,

它的使用就是没有源码,也木有自动化测试工具时。

一旦算出比例后,

每次计算坐标位置的计算量也不算大。可以忍啦^_^





### 使用 `adb shell input tap` 模拟点击特定坐标的方法 `adb shell input tap` 是 Android Debug Bridge (ADB) 提供的一个命令,用于在指定的屏幕坐标上模拟用户的点击操作。该命令的基本格式如下: ```bash adb shell input tap X Y ``` 其中,`X` 和 `Y` 表示屏幕上的坐标位置。例如,如果需要在屏幕上的 (300, 250) 位置进行点击操作,则可以使用以下命令[^3]: ```bash adb shell input tap 300 250 ``` 此命令会向设备发送一个触摸事件,模拟用户在屏幕上 (300, 250) 的点击动作。 #### 示例代码 以下是几个具体的示例,展示如何使用 `adb shell input tap` 命令: 1. **点击屏幕中心点**(假设屏幕分辨率为 1080x1920): ```bash adb shell input tap 540 960 ``` 2. **点击某个应用的登录按钮**(假设登录按钮位于 (400, 600)): ```bash adb shell input tap 400 600 ``` 3. **结合启动应用与点击操作**: - 启动某个应用(如 `yf.o2o.store` 的登录界面): ```bash adb shell am start -n yf.o2o.store/yf.o2o.store.activity.LoginActivity ``` - 在登录界面上点击某个按钮(假设按钮位于 (300, 250)): ```bash adb shell input tap 300 250 ``` #### 注意事项 - 确保设备已正确连接,并且 ADB获得调试权限。 - 屏幕分辨率会影响坐标的有效性,请根据实际设备的分辨率调整坐标值。 - 如果需要批量执行多个点击操作,可以将命令写入脚本文件中并逐行执行[^5]。 ```python import os # 定义一系列点击操作 commands = [ "adb shell input tap 300 250", "adb shell input tap 400 600", "adb shell input tap 500 700" ] # 执行所有命令 for command in commands: os.system(command) ```
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值