Android(安卓)自动点击
最近在在看怎么样让android实现自动点击活动里面的任意位置,不通过获得控件的id来得到点击效果;
看了很多之后发现其实要通过adb shell来实现 什么?adb shell是啥?emmmmm 自行百度吧,我们在这儿把它看为android的命令行工具;废话不说 我们开始在代码里面实现自动点击 让程序可以自动点击。两个方法 一个不需要root,一个需要
当然 先看方法一:先创建一个AutoTouch类 代码如下:
import android.app.Activity;import android.util.Log;import android.widget.Toast;public class AutoTouch { public void autoClickPos(final double x1, final double y1,final double x2, final double y2){ new Thread(new Runnable() { @Override public void run() { try{ Thread.sleep(500); }catch (Exception e){ e.printStackTrace(); } String[] order = {"input", "swipe", "" + x1, "" + y1, "" + x2, "" + y2,}; try{ new ProcessBuilder(order).start(); }catch (Exception e){ e.printStackTrace(); } } }).start(); }}
2.再来调用
AutoTouch autoTouch = new AutoTouch();autoTouch.autoClickPos(900,1800,920,1800);
来看看这个
new ProcessBuilder(order).start();
这就是让adb shell执行的代码 order 是要执行的命令
你可能会觉得不对呀 String[] order = {"input", "swipe", "" + x1, "" + y1, "" + x2, "" + y2,};
这swipe不是滑动的意思吗?我读书少你可别骗我。不好意思,我读书也不多,不过真的没有骗你;
真正的点击应该把swipe改为tap但是 但是 注意重点来了 但是这么用andriod没有反应 所以就只能用swipe
至于swipe这儿还有什么参数我在此简短的列出来
1.text 相当于输入内容;
2.keyevent 手机物理按键和屏幕按键
常见 input keyevent 3 表示home键
input keyevent 4表示back键
input keyevent 19 表示up键
input keyevent 24 表示volume+键
input keyevent 25 表示volume-键
3.tap 点击事件
input tap x y xy是点击的坐标 不过在android中tap好像失效了不知道为什么
4.swipe 滑动事件
input swipe x1 y1 x2 y2 x1 y1 起始坐标 x2 y2 滑动到的目标 我们在这儿就是这样来实现点击效果的。
方法二:这个方法需要获取root权限 依旧用到的是adb shell在此就不赘述了直接上代码:
private void exeShellcmd(String cmd){ try{ Process process = Runtime.getRuntime().exec("su"); OutputStream outputStream = process.getOutputStream(); DataOutputStream dataOutputStream = new DataOutputStream(outputStream); dataOutputStream.writeBytes(cmd); dataOutputStream.flush(); dataOutputStream.close(); outputStream.close(); }catch (Exception e){ e.printStackTrace(); }}
调用的时候 这样调用:
exeShellcmd("input swipe 900 1800 920 1800");
就说这么多啦,有问题可以一起交流哦
更多相关文章
- 没有一行代码,「2020 新冠肺炎记忆」这个项目却登上了 GitHub 中
- 重磅来袭!2020 年需要关注的 5 大 Android(安卓)开发技术,抓破脑袋
- Android的Linux“心”
- Android(安卓)的签名
- Android(安卓)Studio JNI学习之(3)-使用SWIG自动生成Jni代码
- Android学习之路——简易版微信为例(二)
- android中的数据存取-方式一:preference(配置)
- [原创] 在Android系统使用socket在framework和native之间通信
- Kivy A to Z -- 如何从Python创建一个基于Binder的Service及如何