android root 模拟点击,免ROOT实现模拟点击任意位置
微信7.0版本之前抢红包插件点击基本上都借助AccessibilityService无障碍的performClick方法点击控件,不过7.0版本的微信的红包控件(view)没有id这一项了,所以performClick就无法使用了,但是抢红包就在此停止了吗?非也,下面给出2种点击方法。
方法一(验证有效)
此方法免root,不过需要Android7.0及以上版本,AccessibilityService有个新的选项,canPerformGestures: 安卓7.0后可通过dispatchGesture实现点击屏幕的操作,如需用此方法需将canPerformGestures设置为true<?xml version="1.0" encoding="utf-8"?>
android:canPerformGestures="true"
android:description="@string/accessibility_service_description" />
模拟点击的方法dispatchGesture@TargetApi(24)
public void click(Point point) {
//只有7.0才可以用
GestureDescription.Builder builder = new GestureDescription.Builder();
Path path = new Path();
path.moveTo((float) point.x, (float) point.y);
path.lineTo((float) point.x, (float) point.y);
/**
* 参数path:笔画路径
* 参数startTime:时间 (以毫秒为单位),从手势开始到开始笔划的时间,非负数
* 参数duration:笔划经过路径的持续时间(以毫秒为单位),非负数
*/
builder.addStroke(new GestureDescription.StrokeDescription(path, 1, 1));
final GestureDescription build = builder.build();
/**
* 参数GestureDescription:翻译过来就是手势的描述,如果要实现模拟,首先要描述你的腰模拟的手势嘛
* 参数GestureResultCallback:翻译过来就是手势的回调,手势模拟执行以后回调结果
* 参数handler:大部分情况我们不用的话传空就可以了
* 一般我们关注GestureDescription这个参数就够了,下边就重点介绍一下这个参数
*/
dispatchGesture(build, new GestureResultCallback() {
public void onCancelled(GestureDescription gestureDescription) {
super.onCancelled(gestureDescription);
}
public void onCompleted(GestureDescription gestureDescription) {
super.onCompleted(gestureDescription);
}
}, null);
}
然后配合MediaProjection录屏进行图片识别即可。/**
* 申请屏幕录取权限
*/
private void requestScreenShot() {
startActivityForResult(
((MediaProjectionManager) this.getActivity().getSystemService("media_projection")).createScreenCaptureIntent(),
REQUEST_MEDIA_PROJECTION);
}
public Bitmap getScreenShotSync() {
if (!isShotterUseful()) {
return null;
}
if (mImageReader == null) {
mImageReader = ImageReader.newInstance(
getScreenWidth(),
getScreenHeight(),
PixelFormat.RGBA_8888,//此处必须和下面 buffer处理一致的格式 ,RGB_565在一些机器上出现兼容问题。
1);
}
VirtualDisplay tmpDisplay = virtualDisplay();
try{
Thread.sleep(50); //需要稍微停一下,否则截图为空
}catch (InterruptedException e){
e.printStackTrace();
}
Image img = mImageReader.acquireLatestImage();
if (img == null) {
return null;
}
int width = img.getWidth();
int height = img.getHeight();
final Image.Plane[] planes = img.getPlanes();
final ByteBuffer buffer = planes[0].getBuffer();
//每个像素的间距
int pixelStride = planes[0].getPixelStride();
//总的间距
int rowStride = planes[0].getRowStride();
int rowPadding = rowStride - pixelStride * width;
Bitmap bitmap = Bitmap.createBitmap(width + rowPadding / pixelStride, height,
Bitmap.Config.ARGB_8888);//虽然这个色彩比较费内存但是 兼容性更好
bitmap.copyPixelsFromBuffer(buffer);
bitmap = Bitmap.createBitmap(bitmap, 0, 0, width, height);
img.close();
//mImageReader.close();
tmpDisplay.release();
return bitmap;
}
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
private VirtualDisplay virtualDisplay() {
return mMediaProjection.createVirtualDisplay("screen-mirror",
getScreenWidth(),
getScreenHeight(),
Resources.getSystem().getDisplayMetrics().densityDpi,
DisplayManager.VIRTUAL_DISPLAY_FLAG_AUTO_MIRROR,
mImageReader.getSurface(), null, null);
}
抢红包开源地址:https://github.com/LnJan/WechatLuckyMoneyGetter
方法二(未验证)
此方法依然使用的是adb shell,不过并不需要root方法。其中奥秘在于app_process启动一个dex的java程序(shell启动的程序必然有shell权限),利用此程序的shell启动权限进行点击点击,程序的后台卸载、安装都可以。
这个引用一个已经实现的项目
android root 模拟点击,免ROOT实现模拟点击任意位置相关推荐
- Android屏幕共享及远程控制【免root】
Android屏幕共享及远程控制[免root] 使用方式 对于mac 笔记本用户: Android手机开启开发者选项 用数据线连接Android手机和mac 运行lib目录下的Client,用于显示和 ...
- android 免root调用系统工具,免root自动化助手
免root自动化助手软件是一款手机自动执行软件,免root自动化助手软件功能非常的强大,可以帮助用户进行一键重复操作或点击,支持多方面功能设置,赶快来下载体验吧! 基本简介 免ROOT自动化助手是一款 ...
- lbe+android6.0+免root,lbe安全大师免root版下载-LBE安全大师 安卓版v6.1.2563-PC6安卓网...
lbe安全大师最新版是一款安卓手机必备的应用App,lbe安全大师app全新骚扰拦截,将垃圾电话.诈骗短信拒之门外! 功能介绍 LBE安全大师,一直被模仿,从未被超越!Android手机安全专家! 新 ...
- root内核下载,免root开核下载
手机权限获取步骤 你们的root如果显示不完美就用我的吧,没有黄三角,已经root过但不完美的朋友可以再次使用我的root直接覆盖不完美的root,没有root过的朋友可以直接获得最完美的root了, ...
- lgg6可以root的版本_LGG6免root
这是LGG6免root,使用adb可以在g6没有root的情况下达到最大精简系统以做到省电和流畅以及最大化释放内存等目的. 软件介绍 看到G6吧里没有人发这个教程,就在这里发一下吧-- 准备内容:电脑 ...
- 安卓免root运行linux,linuxdeploy免root版
linuxdeploy免root版(Linux Deploy),帮你在手机上轻松部署安装Linux系统.新系统的应用程序在chroot环境中运行,并与Android平台协同工作.在设备上进行的所有更改 ...
- root过程重启,免root的高级重启
360一键root的过程中,为什么会重复的重启手机? 如下: 1.正常情况下,手机在ROOT过程中会重启1~2次. 2.如果多次重启可能是手机ROOT不成功,或系统文件出问题. 3.遇此情况可按关机键 ...
- root后自启动,免root自启动管理
开机后以root身份自启动一个脚本,怎么设置 嵌入式 Linux 如何以root身份自动登录 并开机自动执行脚本文件 下面操作步骤记录如下: 要设置自启动程序需要解决两个问题:1.系统自动登录:2.自 ...
- lbe+android6.0+免root,lbe安全大师免root版下载
手机安全软件,可以高质量的保护你的手机安全,还可以帮你清理手哦!更有权限管理功能!快来当易网下载体验吧! lbe安全大师纯净版简介: lbe安全大师,安卓手机必备的安全软件!权限管理工能让你驯服你手机 ...
- 自动阅读脚本root的好还是免root的好?
「自动阅读脚本」的root好还是免root的好,root即需要刷机,让系统获得最高权限,这时候谁可以对系统中的任何文件(包括系统文件)执行所有增.删.改.查的操作,很多新闻平台是不支持root的,也容 ...
最新文章
- 安卓2.2系统上网设置
- Android中pendingIntent的深入理解
- 年后跳槽必备的 Java 题库,全网最全!
- 接口测试质量评估标准
- python接口脚本实例_python图形用户接口实例详解
- PHP (20140510)深入浅出 JavaScript 变量、作用域和内存 v 0.5
- 【php写日志】php将日志写入文件
- 最新的AOC有源光缆介绍,看这一篇就够了
- 中国不承认国际驾驶证
- Win10“启动”文件夹在哪里?如何打开Win10启动文件夹?
- WhatsAPP营销详细攻略,带你一镜到底的了解WhatsAPP营销
- VC++的GDI+中,DrawImage方法的应用入门
- 计算机教室日常维护制度,现代信息技术教室管理制度
- python输入与输出--名片打印
- Elasticsearch2.4.4自定义词典同义词配置
- 同城物流附近的物流公司电话源码
- ZOJ 3872 Beauty of Array (The 12th Zhejiang Provincial Collegiate Programming Contest )
- 计算机网络实验之路由器配置(子网划分)
- 新一代虚拟驾驶仿真平台
- 数字图像处理第八章——图像压缩