【按键精灵】解决部分点击失效的方法

在一些App中会出现使用脚本的点击函数失效导致无法点击的情况,此时可以尝试使用adb(Android Debug Bridge)进行模拟操作,其常见的有两种方法,如下:


  • input的tap方法
    参数为x和y,例如:

此方法较为简单,这里也不过多赘述。当然input里还有别的方法,感兴趣的可以自行百度。

相关推荐:

adb input命令介绍: blog.csdn.net/qq_296634

安卓按键映射表: bbs.anjian.com/showtopi

sendevent方法(这才是本帖的重点介绍的)
getevent&sendevent是android系统下的一个工具,可以模拟多种按键和触屏操作,产生的是raw event,raw event经过event hub处理产生最终的gesture事件。

getevent是监控当前的事件, 鼠标事件, 按键事件, 拖动滑动以及其他类型的event事件。

使用命令getevent -pl可以获取当前所有event设备的基本信息:


其中含有ABS的为含有坐标元素的events设备,也是我们需要获取和使用的。如上图,此手机中用作点击的设备为/dev/input/event1,此时我们使用getevent -p /dev/input/event1获取到文字(功能)对应的十六进制编码:


KEY表示事件,编码为0001

ABS表示坐标,编码为0003

BTN_TOOL_FINGER表示按键的是finger(手指),编码为0145

BTN_TOUCH表示点击的id,编码为014a

ABS_MT_POSITION_X表示点击的X轴绝对坐标,编码为0035

ABS_MT_POSITION_Y表示点击的Y轴绝对坐标,编码为0036

ABS_MT_TOUCH_MAJOR表示接触部分的长轴长度(相当于椭圆的长轴),编码为0030

ABS_MT_TOUCH_MINOR表示接触部分的短轴长度(相当于椭圆的短轴),编码为0031

记录完成以上编码后,此时我们还要将ABS_MT_POSITION_X和ABS_MT_POSITION_Y的最大范围(max)取出(如果没有修改分辨率,此值跟分辨率一致),用作计算坐标在屏幕的比例位置。

运行getevent -t -c 30 /dev/input/event1并快速点击屏幕会发现,一个短触最少都有十来个事件。

参考文献:

Touch各参数含义: blog.csdn.net/cassie_hu

getevent用法详解: blog.csdn.net/wenjin359

上述工作完毕,我们就可以使用sendevent发挥点击作用, 命令格式 : sendevent [device] [type] [coding] [value]。

需要注意的是在getevent中code显示的是十六进制, 而sendevent中需要用十进制

好了,至此原理基本讲完了,插件的使用方法也很简单:

想要获取源码命令素材,推荐关注按键精灵论坛,知乎账号,微信公众号“按键精灵”获取!!有任何问题也可以在底部留言或者私信小编


本篇详细内容可点击: 【安卓】解决部分点击失效的方法 _ 【集结令●英雄归来】教程比武大赛 - 按键精灵论坛

发布于 2022-03-08 19:35