Skip to content
forked from ven-coder/Assists

🔥Android无障碍服务(AccessibilityService)开发框架,Android自动化脚本框架,快速开发复杂自动化任务、远程协助、监听等

License

Notifications You must be signed in to change notification settings

iyutong/Assists

 
 

Repository files navigation

利用Android无障碍服务(AccessibilityService)能做什么

可以开发各种各样的自动化脚本程序以及协助脚本,比如:

  1. 微信自动抢红包
  2. 微信自动接听电话
  3. 支付宝蚂蚁森林自动浇水
  4. 支付宝芭芭农场自动施肥、自动收集能量...
  5. 各种平台的拓客、引流、营销系统
  6. 远程控制

Assists作用

基于Android无障碍服务(AccessibilityService)封装的框架

  1. 简化自动化脚本开发
  2. 为自动化脚本提供各种增强能力
  3. 提高脚本易维护性

主要能力

  1. 易于使用的无障碍服务API
  2. 浮窗管理器:易于实现及管理浮窗
  3. 步骤器:为快速实现、可复用、易维护的自动化步骤提供框架及管理
  4. 配套屏幕管理:快速生成输出屏幕截图、元素截图
  5. 屏幕管理结合opencv:便于屏幕内容识别为自动化提供服务

一些示例

基础示例 进阶示例 高级示例
自动收能量 自动发朋友圈 自动滑动朋友圈 无障碍服务开启引导
防止下拉通知栏 通知/Toast监听 自动接听微信电话 窗口缩放&拖动
更多示例可以直接下载demo查看

📥直接下载

🚀 快速开始

1. 导入依赖

1.1 项目根目录build.gradle添加

allprojects {
    repositories {
	//添加jitpack仓库
        maven { url 'https://jitpack.io' }
    }
}

1.2 主模块build.gradle添加

最新版本:

dependencies {
    //按需添加
    //基础库(必须)
    implementation "com.github.ven-coder.Assists:assists-base:最新版本"
    //屏幕录制相关(可选)
    implementation "com.github.ven-coder.Assists:assists-mp:最新版本"
    //opencv相关(可选)
    implementation "com.github.ven-coder.Assists:assists-opcv:最新版本"
    
}

2. 注册&开启服务

1.1 主模块AndroidManifest.xml中注册服务

一定要在主模块中注册服务,不然进程被杀服务也会自动被关闭需要再次开启(小米可保持杀进程保持开启,其他vivo、oppo、鸿蒙机型似乎不行)

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.ven.assists.simple">

    <application
        android:name="com.ven.assists.simple.App"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:requestLegacyExternalStorage="true"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme"
        android:usesCleartextTraffic="true">
        <!-- 添加代码 ↓-->
        <service
            android:name="com.ven.assists.service.AssistsService"
            android:enabled="true"
            android:exported="true"
            android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE">
            <!--android:priority="10000" 可提高服务在设置中的权重,排在前面-->
            <intent-filter android:priority="10000">
                <action android:name="android.accessibilityservice.AccessibilityService" />
            </intent-filter>
            <meta-data
                android:name="android.accessibilityservice"
                android:resource="@xml/assists_service" />
        </service>
        
        <!-- 或者使用下面的服务可以解决一些应用混淆节点的问题,比如微信8.0.51以上版本获取的节点元素错乱问题 -->
        <!-- ⚠️ 选其一 -->
        <service
            android:name="com.google.android.accessibility.selecttospeak.SelectToSpeakService"
            android:enabled="true"
            android:exported="true"
            android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE">
            <!--android:priority="10000" 可提高服务在设置中的权重,排在前面     -->
            <intent-filter android:priority="10000">
                <action android:name="android.accessibilityservice.AccessibilityService" />
            </intent-filter>
            <meta-data
                android:name="android.accessibilityservice"
                android:resource="@xml/assists_service" />
        </service>
        
        <!-- 添加代码 ↑-->
    </application>

</manifest>

1.2 开启服务

调用AssistsCore.openAccessibilitySetting()跳转到无障碍服务设置页面,找到对应的应用开启服务。 服务开启后执行以下API测试是否成功集成:

AssistsCore.getAllNodes().forEach { it.logNode() }

这段代码是获取当前页面所有节点元素的基本信息在Logcat(tag:assists_log)打印出来,如下图:

至此,已成功集成Assists。如果没有任何输出请检查集成步骤是否正确。

步骤器-快速实现复杂自动化脚本

步骤器可以帮助快速实现复杂的业务场景,比如自动发朋友圈、获取微信所有好友昵称、自动删除好友...等等都是一些逻辑较多的业务场景,步骤器可帮助快速实现。

1.继承StepImpl

直接在接口onImpl(collector: StepCollector)写步骤逻辑,每个步骤自定义步骤的序号,用于区分执行的步骤。如果重复则会以最后一个步骤为准

class MyStepImpl:StepImpl() {
    override fun onImpl(collector: StepCollector) {
	//定义步骤序号为1的逻辑
        collector.next(1) {// 1为步骤的序号
            //步骤1逻辑
	    ...
            //返回下一步需要执行的序号,通过Step.get([序号]),如果需要重复该步骤可返回Step.repeat,如果返回Step.none则不执行任何步骤,相当于停止
            return@next Step.get(2) //将会执行步骤2逻辑
        }.next(2) {
            //步骤2逻辑
	    ...
	    //返回下一步需要执行的序号,通过Step.get([序号])
	    return@next Step.get(3)
        }.next(3) {
            //步骤3逻辑
	    ...
	    //返回下一步需要执行的序号,通过Step.get([序号])
	    return@next Step.get(4)
        }
	其他步骤
	...
    }
}

2. 开始执行

执行前请确保无障碍服务已开启

//从MyStepImpl步骤1开始执行,isBegin是否作为起始步骤,默认false
StepManager.execute(MyStepImpl::class.java, 1, isBegin = true)

3. 停止执行

// 设置停止标志,将取消所有正在执行的步骤
StepManager.isStop = true

其他教程博客

获取节点信息

示例教程

更新日志

v3.2.12

更新时间:2025-03-25

  1. assists-mp去掉对于opencv减少不必要的包体积
  2. 兼容微信8.0.51以上版本获取的节点元素被混淆问题

有问题欢迎反馈交流(微信群二维码失效可以加我拉进群)

交流群 个人微信
1群已满200人,要进1群可加我拉进1群

❤️ 已入驻爱发电,感谢支持

我的付费社群

付费社群提供的服务:

  1. 完整易于阅读的开发文档
  2. Assists开发指导
  3. 开发疑难解答
  4. 群友互助资源对接
  5. 基于Assists开发的抖音养号,小红书养号,支付宝能量收集,支付宝农场,无线远程控制等源码(补充中...)
image
微信扫扫即可加入
定制开发可直接联系个人微信:x39598

License

GNU General Public License v3.0

About

🔥Android无障碍服务(AccessibilityService)开发框架,Android自动化脚本框架,快速开发复杂自动化任务、远程协助、监听等

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Kotlin 100.0%