android+usb模拟点击,Android后台模拟点击探索(附源码)

本文介绍了在Android中实现后台模拟点击的两种方法:无障碍服务(AccessibilityService)和adb shell命令。通过AccessibilityService,可以监听并模拟屏幕上的点击操作,文章详细讲解了配置服务和遍历视图树的过程。另外,还介绍了使用adb shell的input tap命令进行点击,但这种方法适用于坐标固定的情况。文章强调了后台运行和应对不同厂商系统限制的挑战,并提供了相关代码示例。

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

工作中我们需要自制一套工具,其中遇到需要模拟点击事件的需求,类似按键精灵的功能,支持后台持续运行,满足触发条件时完成点击。

经过一番探索,一共整理出两种不同的方案:AccessibilityService 和 adb shell命令,读者可自行选择合适的场景。

AccessibilityService

无障碍模式是我首先想到的方案,对于不知道Android无障碍模式的,可自行百度。这里简单说明一下,AccessibilityService是Android为残障人士提供的贴心功能,比如可以报出当前页面有哪些按钮balabala。使用官方提供的一些列API,我们还可以完成一些自动运行的“黑科技”操作,比如早些年的红包插件、微信自动回复插件、自动点赞插件等。

本方案原理比较简单:扫描当前页面的View树,找到目标控件,模拟点击操作,下面详细阐述。

添加配置文件

首先需要在res目录下建立配置文件:accessible_service_config.xml ,名字随意取。

xmlns:android="http://schemas.android.com/apk/res/android"

android:accessibilityEventTypes="typeAllMask"

android:accessibilityFeedbackType="feedbackGeneric"

android:accessibilityFlags="flagReportViewIds"

android:canRetrieveWindowContent="true"

android:notificationTimeout="100"

android:description="@string/description"

android:packageNames="目标包名"/>

accessibilityEventTypes:设置响应事件的类型,这里设置typeAllMask,就是响应全部类型的事件。

accessibilityFeedbackType:设置回馈给用户的方式,有语音播出和振动,这里使用通用类型。

notificationTimeout:设置响应时间。

packageNames:目标包名,比如红包插件就要设置微信包名,关于包名如何获取,下文会提到。

继承AccessibilityService编码

接着我们继承AccessibilityService新建AutoClickAccessibilityService,重写onAccessibilityEvent(AccessibilityEvent event)。

public class AutoClickAccessibilityService extends AccessibilityService {

private static final String TAG = "GK";

@Override

public void onAccessibilityEvent(AccessibilityEvent event) {

ztLog("===start===");

try {

//拿到根节点

AccessibilityNodeInfo rootInfo = getRootInActiveWindow();

if (rootInfo == null) {

return;

//开始遍历,这里拎出来细讲,直接往下看正文

if (rootInfo.getChildCount() != 0) {

……

}

} catch (Exception e) {

ztL

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值