说明
本文提供的代码仅供参考。不建议用于生产环境。
可能有些地方在最新版本的Auto.js上面需要做修改,才能运行。
Auto.js简介
Auto.js是利用安卓系统的“辅助功能”实现类似于按键精灵一样,可以通过代码模拟一系列界面动作的辅助工作。
与“按键精灵”不同的是,它的模拟动作并不是简单的使用在界面定坐标点来实现,而是类似与win一般,找窗口句柄来实现的。
Auto.js使用JavaScript作为脚本语言,目前使用Rhino 1.7.7.2作为脚本引擎,支持ES5与部分ES6特性。
推荐教程
Auto.js Pro安卓全分辨率免ROOT引流脚本开发视频教程(HD超清1080p)
开发文档
Auto.js Pro开发文档
文档尚在完善中,可能有文档描述和代码实际行为有出入的情况。
为什么要使用Auto.js Pro开发脚本,有什么特点?
吸引我使用Auto.js Pro的原因有很多。最主要的几个原因是:
- Auto.js Pro能开发免ROOT的安卓脚本
- Auto.js Pro基于节点操作,能开发全分辨率的脚本,自动适配各种安卓机型
- Auto.js Pro丰富的UI组件,能自定义各种样式的安卓界面
- Auto.js Pro使用的javascript的语法比较优雅,代码可读性强
- Auto.js Pro的命令库非常的丰富,接口比较多
- Auto.js Pro脚本文件体积比较小。1000行的代码,打包后的apk文件只有3-5M,还没有广告
示例代码
//此代码由飞云脚本圈整理提供(www.feiyunjs.com)
"ui";
//花了几个小时搜了一下网上的示例
//用surfaceView搞的一个画布
//写一些小游戏应该可以更流畅一些
var linear = new android.widget.LinearLayout(activity);
var surface = new android.view.SurfaceView(activity);
linear.addView(surface);
activity.setContentView(linear);
surface.setFocusable(true)
surface.setFocusableInTouchMode(true)
surface.setKeepScreenOn(true);
var mPaint = new Paint(Paint.ANTI_ALIAS_FLAG | Paint.DITHER_FLAG);
//mPaint.setStrokeWidth("10f");
mPaint.setColor(android.graphics.Color.parseColor("#FF4081"));
mPaint.setStyle(Paint.Style.STROKE);
mPaint.setStrokeJoin(Paint.Join.ROUND);
mPaint.setStrokeCap(Paint.Cap.ROUND);
var mPath = new android.graphics.Path();
var holder = surface.getHolder();
holder.addCallback(new android.view.SurfaceHolder.Callback({
surfaceCreated: function(holder) {
isDrawing = true;
new java.lang.Thread(new java.lang.Runnable({run: function() {
while (isDrawing) {
try{
var mCanvas = holder.lockCanvas();
mCanvas.drawColor(android.graphics.Color.WHITE);
mCanvas.drawPath(mPath,mPaint);
//这里进行内容的绘制
}catch(e){
}finally {
if (mCanvas != null){
holder.unlockCanvasAndPost(mCanvas);
}
}
}
}})).start();
},
surfaceChanged: function(holder, format, width, height) { //改变
},
surfaceDestroyed: function(holder) { //销毁
isDrawing = false;
}
}));
surface.setOnTouchListener(new android.view.View.OnTouchListener({
onTouch:function(view,event){
var x = event.getX();
var y = event.getY();
switch (event.getAction()) {
case android.view.MotionEvent.ACTION_DOWN:
mLastX = x;
mLastY = y;
mPath.moveTo(mLastX, mLastY);
break;
case android.view.MotionEvent.ACTION_MOVE:
var dx = Math.abs(x - mLastX);
var dy = Math.abs(y - mLastY);
if (dx >= 3 || dy >= 3) {
mPath.quadTo(mLastX, mLastY, (mLastX + x) / 2, (mLastY + y) / 2);
}
mLastX = x;
mLastY = y;
break;
case android.view.MotionEvent.ACTION_UP:
break;
}
return true;
}}));