Skip to content

Commit 3b2ebf8

Browse files
ven-coderVen
authored andcommitted
Update README.md
1 parent 86fe4f1 commit 3b2ebf8

File tree

1 file changed

+102
-56
lines changed

1 file changed

+102
-56
lines changed

README.md

Lines changed: 102 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Assists
1+
# Assists v3.0.0
22
Android无障碍服务(AccessibilityService)开发框架,快速开发复杂自动化任务、远程协助、监听等
33
***
44
## Android无障碍服务能做什么
@@ -16,50 +16,44 @@ Android无障碍服务(AccessibilityService)开发框架,快速开发复
1616

1717
在这个框架下开发Android无障碍服务业务可以让你的业务开发更加快速、逻辑更加健壮且容易维护。
1818

19-
## v2.0.0更新日志
20-
1. 整理api
21-
2. 增加
22-
- 浮窗支持拖动修改大小
23-
-
24-
<img src="https://github.com/ven-coder/Assists/blob/master/graphics/scale.gif" width=150>
25-
- 根据类型查找元素
26-
- 在当前元素范围下,根据类型查找元素
27-
- 获取当前页面所有元素
28-
- 获取指定元素下所有子元素
29-
- 查找第一个可点击的父元素
30-
- 拓展-获取元素在屏幕中的范围
31-
- 拓展-手势点击元素所处的位置
32-
- 拓展-点击元素
33-
- 拓展-手势长按元素所处的位置
34-
3. 修复
35-
- 基准分辨率获取对应当前分辨率的坐标部分机型不一致问题
19+
## v3.0.0更新日志
20+
1. 步骤器重构:支持协程、执行下一步方式改为直接指定下一步进行执行
21+
2. 获取屏幕图像
22+
3. 集成opencv,封装图像匹配,结合获取屏幕图像匹配当前屏幕元素
3623

3724
## 功能计划
38-
- 录屏
25+
- 图像识别 (✅完成)
3926
- 图文识别
27+
- 录屏
4028
- js支持
4129
- vue.js支持
4230
- uniapp插件
4331
- flutter插件
4432

45-
## 快速开始
46-
### 1. 添加依赖
47-
#### 1.1 将JitPack仓库添加到根目录build.gradle文件中
33+
## Demo部分演示
34+
| 图像识别支付宝自动收能量 |自动发朋友圈|自动滑动朋友圈|
35+
|:-:|:-:|:-:|
36+
| <img src="https://github.com/ven-coder/Assists/assets/27257149/8d1d09b2-e4b3-44dc-b5df-68fcdcac7a62" width=250 /> |<img src="https://github.com/ven-coder/Assists/assets/27257149/4713656b-a8ff-4c99-9814-a0b883ebbe64" width=250 />|<img src="https://github.com/ven-coder/Assists/assets/27257149/056ef46b-8076-4f90-ab5a-263ff308f8e8" width=250 />
37+
38+
## 使用
39+
### 1. 添加库
40+
#### 1.1 Clone或下载源码
41+
版本v3.0.0:https://github.com/ven-coder/Assists/releases/tag/3.0.0
4842

49-
```groovy
50-
allprojects {
51-
repositories {
52-
//添加JitPack仓库
53-
maven { url 'https://jitpack.io' }
54-
}
55-
}
56-
```
5743

58-
#### 1.2 添加依赖到主模块的build.gradle中,
59-
```groovy
44+
#### 1.2 导入依赖库
45+
解压后以module方式导入assists,opencv图像识别为可选库,如果需要使用到图像识别可导入其中的assists-opencv
46+
<img src="https://github.com/ven-coder/Assists/assets/27257149/592dc0e1-8764-42e5-bede-2be2dfa9ccb8" width=400/>
47+
<br/>
48+
<img src="https://github.com/ven-coder/Assists/assets/27257149/9705e28c-8ff7-4678-bb57-7e475e5c131b" width=400/>
49+
50+
#### 1.3 引用assists
51+
导入成功后在主模块build.gradle添加引用
52+
```
6053
dependencies {
61-
//添加依赖
62-
implementation 'com.github.ven-coder:assists:2.0.0'
54+
...其他依赖
55+
implementation project(':assists')
56+
implementation project(':assists-opencv')//图像识别库,可选,按需添加
6357
}
6458
```
6559

@@ -82,7 +76,7 @@ dependencies {
8276
android:supportsRtl="true"
8377
android:theme="@style/AppTheme"
8478
android:usesCleartextTraffic="true">
85-
<!-- 添加以下代码 -->
79+
<!-- 添加代码 ↓-->
8680
<service
8781
android:name="com.ven.assist.AssistsService"
8882
android:enabled="true"
@@ -95,38 +89,39 @@ dependencies {
9589
android:name="android.accessibilityservice"
9690
android:resource="@xml/assists_service" />
9791
</service>
92+
<!-- 添加代码 ↑-->
9893
</application>
9994

10095
</manifest>
10196
```
102-
至此,开启无障碍服务后即可使用包装的API了
97+
至此,开启无障碍服务后即可使用包装的API,开发文档请查看:[https://github.com/ven-coder/Assists/wiki](https://github.com/ven-coder/Assists/wiki)
10398

10499
## 步骤器-快速实现复杂业务
105100
步骤器可以帮助快速实现复杂的业务场景,比如自动发朋友圈、获取微信所有好友昵称、自动删除好友...等等都是一些逻辑较多的业务场景,步骤器可帮助快速实现。
106101
前提: 已完成前面的[配置](https://github.com/ven-coder/Assists?tab=readme-ov-file#%E5%BF%AB%E9%80%9F%E5%BC%80%E5%A7%8B)
107102
### 1.继承```StepImpl```
108-
直接在接口`onImpl(collector: StepCollector)`写逻辑
103+
直接在接口`onImpl(collector: StepCollector)`写步骤逻辑,每个步骤自定义步骤的序号,用于区分执行的步骤。如果重复则会以最后一个步骤为准
109104

110105
```kotlin
111106
//OpenWechat为该业务场景的分类
112-
class OpenWechat:StepImpl {
107+
class OpenWechat:StepImpl() {
113108
override fun onImpl(collector: StepCollector) {
114-
//步骤1逻辑
115-
collector.next(1) {//1为该步骤的标识
109+
//定义步骤序号为1的逻辑
110+
collector.next(1) {// 1为步骤的序号
116111
//步骤1逻辑
117112
...
118-
//执行步骤2,this::class.java为当前StepImpl实现类的步骤逻辑,如果传其他的StepImpl就会执行指定的StepImpl逻辑
119-
StepManager.execute(this::class.java, 2)
113+
//返回下一步需要执行的序号,通过Step.get([序号]),如果需要重复该步骤可返回Step.repeat,如果返回Step.none则不执行任何步骤,相当于停止
114+
return@next Step.get(2) //将会执行步骤2逻辑
120115
}.next(2) {
121116
//步骤2逻辑
122117
...
123-
//下一步
124-
StepManager.execute(this::class.java, 3)
125-
}.next(2) {
118+
//返回下一步需要执行的序号,通过Step.get([序号])
119+
return@next Step.get(3)
120+
}.next(3) {
126121
//步骤3逻辑
127122
...
128-
//下一步
129-
StepManager.execute(this::class.java, 4)
123+
//返回下一步需要执行的序号,通过Step.get([序号])
124+
return@next Step.get(4)
130125
}
131126
其他步骤
132127
...
@@ -139,27 +134,78 @@ class OpenWechat:StepImpl {
139134
执行前请确保无障碍服务已开启
140135

141136
```kotlin
142-
//从OpenWechat的步骤1开始执行,isBegin需要为true,默认false
137+
//从OpenWechat的步骤序号1开始执行,isBegin需要为true,默认false
143138
StepManager.execute(OpenWechat::class.java, 1, isBegin = true)
144139
```
145-
具体的使用可以下载查看demo源码
146140

147-
### 更多开发文档请查看:[https://github.com/ven-coder/Assists/wiki](https://github.com/ven-coder/Assists/wiki)
141+
## 图像识别模块使用
142+
图像识别模块主要是对opencv的模板匹配api和Android的屏幕图像获取进行了一层封装,下面是所封装api的使用说明
143+
### 检查是否拥有录屏权限
144+
```Assists.isEnableScreenCapture()```
145+
### 请求录屏权限
146+
```Assists.requestScreenCapture()```
147+
### 获取屏幕图像
148+
```OpencvWrapper.getScreen()```
149+
### 通过Assets获取图像
150+
```OpencvWrapper.getTemplateFromAssets()```
151+
### 创建掩膜
152+
```
153+
OpencvWrapper.createMask(
154+
source: Mat, //原图像
155+
lowerScalar: Scalar, 可操作区域最低rgb
156+
upperScalar: Scalar, 可操作区域最高rgb
157+
requisiteExtraRectList: List<Rect> = arrayListOf(), //不可操作区域
158+
redundantExtraRectList: List<Rect> = arrayListOf() //可操作区域,即图像匹配有效区域
159+
)
160+
```
161+
>添加掩膜进行模板匹配可大大提高匹配准确度,掩膜是一个黑白色的图像,白色为匹配的区域,黑色为不匹配区域,通过仅匹配关键区域提高匹配准确度
162+
163+
### 模板匹配
164+
```OpencvWrapper.matchTemplate(image: Mat?, template: Mat?, mask: Mat? = null)```
165+
> ```image``` 大图图像<br/>
166+
> ```template``` 模板图像,即小图<br/>
167+
> ```mask``` 掩膜<br/>
168+
> 返回所有匹配结果,按需求进行筛选
169+
170+
### 模板匹配获取最佳结果
171+
```OpencvWrapper.matchTemplateFromScreenToMinMaxLoc(image: Mat?, template: Mat?, mask: Mat? = null)```
172+
> ```image``` 大图图像<br/>
173+
> ```template``` 模板图像,即小图<br/>
174+
> ```mask``` 掩膜<br/>
175+
> 返回最佳匹配结果
176+
177+
### 筛选匹配结果获取达到阈值的匹配结果
178+
```
179+
OpencvWrapper.getResultWithThreshold(
180+
result: Mat,
181+
threshold: Double,
182+
ignoreX: Double = -1.0,
183+
ignoreY: Double = -1.0,
184+
)
185+
```
186+
> ```result``` 匹配结果<br/>
187+
> ```threshold``` 匹配值,范围0-1,0最低匹配值,1最高匹配值<br/>
188+
> ```ignoreX``` 忽略的x轴范围<br/>
189+
> ```ignoreY``` 忽略的y轴范围<br/>
190+
> 返回符合条件的匹配坐标列表
191+
192+
#### 以上具体的使用最好直接查看demo源码
148193

149-
## 示例&下载
150-
[&#9654;示例视频](https://www.youtube.com/embed/kNuw9sUsDKo)
194+
#### 更多开发文档请查看:[https://github.com/ven-coder/Assists/wiki](https://github.com/ven-coder/Assists/wiki)
151195

196+
## Demo下载
152197
扫码下载
198+
<br/>
199+
<img src="https://github.com/ven-coder/Assists/assets/27257149/b79e53b0-9dab-4568-acc8-c1a915b5fcdb" width=200/>
153200

154-
<img src="https://github.com/ven-coder/Assists/blob/master/graphics/1714263085511.jpg" width=200/>
155-
156-
[&#128229;直接下载](https://www.pgyer.com/1zaijG)
201+
[&#128229;直接下载](https://www.pgyer.com/103aedee063ccf042c82ccece680dc0b)
157202

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

160205
| 交流群 | 个人微信 |
161206
|:---------:|:-----------:|
162-
| <img src="https://github.com/ven-coder/Assists/blob/master/graphics/20240608-221247.jpg" width=200/> | <img src="https://github.com/ven-coder/Assists/blob/master/graphics/me.jpg" width=200/>
207+
| <img src="https://github.com/ven-coder/Assists/assets/27257149/0a787479-d65b-4365-9642-19c1f5e890f6" width=200/> | <img src="https://github.com/ven-coder/Assists/assets/27257149/542e51d1-9f22-4381-b011-618fc0cef959" width=200/>
208+
163209

164210
# License
165211
[GNU General Public License v3.0](https://github.com/ven-coder/Assists/blob/master/LICENSE)

0 commit comments

Comments
 (0)