Android自动化无障碍服务开源库 Assists v3.0.0

Assists v3.0.0

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


Android无障碍服务能做什么

利用Android无障碍服务可以开发一些Android系统内的自动化任务,比如经典的微信自动抢红包、支付宝蚂蚁森林自动浇水、芭芭农场自动施肥等

还可以开发远程协助功能,市面上向日葵等一些远程协助功能就是利用无障碍服务和投屏权限开发的

还能开发一些拓客、引流、营销系统,抖音自动点赞评论、微博自动转发评论关注等

总之,利用Android的无障碍服务可以开发各种自动化的任务或者界面信息监听、远程协助等

Assists开发框架能做什么

按照Google官方文档继承实现的无障碍服务,对于复杂的自动化任务,不仅代码逻辑实现不清晰,后期的修改维护也会很头疼,所以在实践过程中实现了这个框架

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

v3.0.0更新日志

  1. 步骤器重构:支持协程、执行下一步方式改为直接指定
  2. 获取屏幕图像
  3. 集成opencv,封装图像匹配

v2.0.0版本查看这里

功能计划

  • 图像识别 (✅完成)
  • 图文识别
  • 录屏
  • js支持
  • vue.js支持
  • uniapp插件
  • flutter插件

Demo部分演示

图像识别支付宝自动收能量 自动发朋友圈 自动滑动朋友圈

使用

1. 添加库

1.1 Clone或下载源码

版本v3.0.0:https://github.com/ven-coder/Assists/releases/tag/3.0.0

1.2 导入依赖库

解压后以module方式导入assists,opencv图像识别为可选库,如果需要使用到图像识别可导入其中的assists-opencv



1.3 引用assists

导入成功后在主模块build.gradle添加引用

dependencies {
    ...其他依赖
    implementation project(':assists')
    implementation project(':assists-opencv')//图像识别库,可选,按需添加
}

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=
### 使用Python爬取NBA数据并实现数据可视化的解决方案 #### 1. 数据爬取部分 为了从网络上获取NBA球员的相关数据,可以采用`requests`库来发起HTTP请求,并利用`BeautifulSoup`或`lxml`库解析网页内容。以下是基于引用的内容所描述的技术栈和方法[^2]: ```python import requests from lxml import etree def fetch_nba_data(url): headers = { &#39;User-Agent&#39;: &#39;Mozilla/5.0 (Windows NT 10.0; Win64; x64)&#39; } response = requests.get(url, headers=headers) if response.status_code == 200: html = etree.HTML(response.text) player_names = html.xpath(&#39;//div[@class="player-name"]/text()&#39;) # 假设这是球员名字的选择器 player_stats = html.xpath(&#39;//table/tr/td/text()&#39;) # 假设这是统计数据的选择器 return dict(zip(player_names, player_stats)) else: raise Exception(f"Failed to retrieve data with status code {response.status_code}") ``` 上述代码展示了如何通过指定URL抓取页面中的球员名称及其统计信息。 --- #### 2. 后端服务搭建 在完成数据采集之后,可以通过Spring Boot创建RESTful API接口供前端调用。后端的主要职责是对原始数据进行清洗、存储以及按需返回给客户端。这里不展开具体代码细节,但推荐按照MVC架构设计应用逻辑[^1]。 --- #### 3. 数据预处理与归一化 对于某些数值型字段(如时间、篮板数等),可能需要对其进行标准化处理以便于后续绘图比较。例如,在雷达图绘制前通常会执行如下操作[^3]: ```python import numpy as np def normalize(data_list): max_val = max(data_list) min_val = min(data_list) return [(d - min_val) / (max_val - min_val) for d in data_list] # 示例:假设詹姆斯的各项场均数据为[james_time, james_fg_pct, ...] data_to_normalize = [james[0], james[2], james[3], james[4], james[5]] # 排除命中率项 normalized_data = normalize(data_to_normalize) print(normalized_data) ``` 此函数接受一个列表作为输入参数,并输出经过线性变换后的结果集。 --- #### 4. 可视化呈现 最终阶段便是借助ECharts或者Matplotlib这样的图形渲染引擎制作交互性强的仪表板界面。下面给出一段生成雷达图的例子[^4]: ```javascript var chartDom = document.getElementById(&#39;main&#39;); var myChart = echarts.init(chartDom); var option; const indicator = [ { name: &#39;Time&#39;, max: 1 }, { name: &#39;Rebounds&#39;, max: 1 }, { name: &#39;Assists&#39;, max: 1 }, { name: &#39;Turnovers&#39;, max: 1 }, { name: &#39;Points&#39;, max: 1 } ]; option = { radar: { indicator: indicator, center: [&#39;50%&#39;, &#39;50%&#39;], radius: &#39;80%&#39; }, series: [{ type: &#39;radar&#39;, data : [ { value : normalizedData, name : &#39;LeBron James&#39; } ] }] }; myChart.setOption(option); ``` 以上脚本定义了一组指标维度及对应的最大阈值范围;接着配置series属性指定了实际测量值序列。 --- ### 总结 综上所述,整个流程涵盖了从前端展示层到后台业务逻辑再到数据库持久化等多个层面的工作内容。每一步都紧密相连缺一不可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值