我的Autojs学习日记

autojs学习日记

    • 软件的准备工作
    • 模拟点击
    • 控制台
    • 设备
    • 未完待续

软件的准备工作

1.下载VS code(free),安装
2.准备一部安卓手机或者安卓模拟器(建议模拟器)
3.在安卓平台上安装auto.js
4.在VS中安装插件:如下

我的Autojs学习日记_第1张图片
我的Autojs学习日记_第2张图片
关于python 、C的插件是不需要下载的
5.操作步骤:
1).查看—控制面板—运行(autojs:new project )–在main,js里写代码(第一次用必须要做,如果新建也是)
2).查看—控制面板—运行(autojs:start server)—又下角会显示成功运行的弹窗(每次打开VS后必须要经过此步骤)
3).打开autojsApp,打开他要的服务,点击连接电脑,输入电脑的IP 地址,如果是手机端,需要电脑手机在同一局域网下,VS也会显示连接成功。
4).完成上述操作后可以在VS上面写代码,运行代码按F5.

模拟点击

1.点击位置(x, y)。其中id是一个整数值,用于区分多点触摸,不同的id表示不同的"手指",例如:

var ra = new RootAutomator();
//让"手指1"点击位置(100, 100)
ra.tap(100, 100, 1);
//让"手指2"点击位置(200, 200);
ra.tap(200, 200, 2);
ra.exit();

2.滑动位置(x, y)——(x1,y1)。其中id是一个整数值,用于区分多点触摸,不同的id表示不同的"手指",例如:

var ra = new RootAutomator();
//让"手指1"滑动
ra.swipe(x, y,x,y,time, 1);
//让"手指2"滑动
ra.ra.swipe(x, y,x,y,time, 2);
ra.exit();

3.按住位置(x, y)。其中id是一个整数值,用于区分多点按压,不同的id表示不同的"手指",例如:

var ra = new RootAutomator();
//让"手指1"点击位置(100, 100)
ra.press(100, 100,time, 1);
//让"手指2"点击位置(200, 200);
ra.press(200, 200,time, 2);
ra.exit();

4.模拟手指按下位置(x, y)。

RootAutomator.touchUp([id])
	RootAutomator.touchDown(x, y[, id])
	x  横坐标
	y  纵坐标
	id  多点触摸id,可选,默认为1

5.模拟移动手指到位置(x, y)。

RootAutomator.touchMove(x, y[, id])
x  横坐标
y  纵坐标
id  多点触摸id,可选,默认为1

6.模拟手指弹起。

RootAutomator.touchUp([id])
	id  多点触摸id,可选,默认为1

7.点击某点(安卓7+,以上的全部需要root)

click(x,y):

8.滑动

swipe(x,y);

9.模拟长按坐标(x, y), 并返回是否成功。只有在长按执行完成(大约600毫秒)时脚本才会继续执行。

一般而言,只有长按过程中被其他事件中断(例如用户自行点击)才会长按失败(安卓7+)

longClick(x,y):

10.模拟按住坐标(x, y), 并返回是否成功。只有按住操作执行完成时脚本才会继续执行。

如果按住时间过短,那么会被系统认为是点击;如果时长超过500毫秒,则认为是长按。(安卓7+)

press(x, y, duration)
click(x,y):

一个连点器的例子如下:

//循环100次
for(var i = 0; i < 100; i++){
  //点击位置(500, 1000), 每次用时1毫秒
  press(500, 1000, 1);
}

11.模拟从坐标(x1, y1)滑动到坐标(x2, y2),并返回是否成功。(安卓7+)

swipe(x1, y1, x2, y2, duration)


12.模拟手势操作。例如gesture(1000, [0, 0], [500, 500], [500, 1000])为模拟一个从(0, 0)到(500, 500)到(500, 100)的手势操作,时长为2秒。(安卓7+)

gesture(duration, [x1, y1], [x2, y2], ...)


13.同时模拟多个手势。每个手势的参数为[delay, duration, 坐标], delay为延迟多久(毫秒)才执行该手势;duration为手势执行时长;坐标为手势经过的点的坐标。其中delay参数可以省略,默认为0。(安卓7+)

gestures([delay1, duration1, [x1, y1], [x2, y2], ...], [delay2, duration2, [x3, y3], [x4, y4], ...], ...)

例如手指捏合:
gestures([0, 500, [800, 300], [500, 1000]],
         [0, 500, [300, 1500], [500, 1000]]);

控制台

console.show();//打开
console.log('cont:%d',m);//printf相似
console.verbose('cont:%d',m);输出的颜色不一样
console.info('cont:%d',m);
console.warn('cont:%d',m+8);
console.error('cont:%d',m+8);
n = console.input("淑妃");输入
console.clear();//清除内容
console.hide();//关闭
console.assert(value, message)//看翻译
console.time([label])
console.timeEnd(label)
console.trace([data][, ...args])
console.rawInput(data[, ...args])
console.setSize(w, h)
console.setPosition(x, y)
console.setGlobalLogConfig(config)
print(text)

设备

(以下是复制的)
1.evice模块提供了与设备有关的信息与操作,例如获取设备宽高,内存使用率,IMEI,调整设备亮度、音量等。

此模块的部分函数,例如调整音量,需要"修改系统设置"的权限。如果没有该权限,会抛出SecurityException并跳转到权限设置界面。

2.device.width#

设备屏幕分辨率宽度。例如1080。

3.device.height#

设备屏幕分辨率高度。例如1920。

4.device.buildId#

Either a changelist number, or a label like “M4-rc20”.

修订版本号,或者诸如"M4-rc20"的标识。

5.device.broad#

The name of the underlying board, like “goldfish”.

设备的主板(?)型号。

6.device.brand#

The consumer-visible brand with which the product/hardware will be associated, if any.

与产品或硬件相关的厂商品牌,如"Xiaomi", "Huawei"等。

7.device.device#

The name of the industrial design.

设备在工业设计中的名称。

8.deivce.model#

The end-user-visible name for the end product.

设备型号。

9.device.product#

The name of the overall product.

整个产品的名称。

10.device.bootloader#

The system bootloader version number.

设备Bootloader的版本。

11.device.hardware#

The name of the hardware (from the kernel command line or /proc).

设备的硬件名称(来自内核命令行或者/proc)。

12.device.fingerprint#

A string that uniquely identifies this build. Do not attempt to parse this value.

构建(build)的唯一标识码。

13.device.serial#

A hardware serial number, if available. Alphanumeric only, case-insensitive.

硬件序列号。

14.device.sdkInt#

The user-visible SDK version of the framework; its possible values are defined in Build.VERSION_CODES.

安卓系统API版本。例如安卓4.4的sdkInt为19。

15.device.incremental#

The internal value used by the underlying source control to represent this build. E.g., a perforce changelist number or a git hash.

16.device.release#

The user-visible version string. E.g., “1.0” or “3.4b5”.

Android系统版本号。例如"5.0", “7.1.1”。

17.device.baseOS#

The base OS build the product is based on.

18.device.securityPatch#

The user-visible security patch level.

安全补丁程序级别。

19.device.codename#

The current development codename, or the string “REL” if this is a release build.

开发代号,例如发行版是"REL"。

20.device.getIMEI()#

返回设备的IMEI.

21.device.getAndroidId()#

返回设备的Android ID。

Android ID为一个用16进制字符串表示的64位整数,在设备第一次使用时随机生成,之后不会更改,除非恢复出厂设置。

22.device.getMacAddress()#

返回设备的Mac地址。该函数需要在有WLAN连接的情况下才能获取,否则会返回null。

可能的后续修改:未来可能增加有root权限的情况下通过root权限获取,从而在没有WLAN连接的情况下也能返回正确的Mac地址,因此请勿使用此函数判断WLAN连接。

23.device.getBrightness()#

返回当前的(手动)亮度。范围为0~255。

24.device.getBrightnessMode()#

返回当前亮度模式,0为手动亮度,1为自动亮度。

25.device.setBrightness(b)#
b 亮度,范围0~255
设置当前手动亮度。如果当前是自动亮度模式,该函数不会影响屏幕的亮度。

此函数需要"修改系统设置"的权限。如果没有该权限,会抛出SecurityException并跳转到权限设置界面。

26.device.setBrightnessMode(mode)#
mode 亮度模式,0为手动亮度,1为自动亮度
设置当前亮度模式。

此函数需要"修改系统设置"的权限。如果没有该权限,会抛出SecurityException并跳转到权限设置界面。

27.device.getMusicVolume()#
整数值
返回当前媒体音量。

28.device.getNotificationVolume()#
整数值
返回当前通知音量。

29.device.getAlarmVolume()#
整数值
返回当前闹钟音量。

30.device.getMusicMaxVolume()#
整数值
返回媒体音量的最大值。

31.device.getNotificationMaxVolume()#
整数值
返回通知音量的最大值。

32.device.getAlarmMaxVolume()#
整数值
返回闹钟音量的最大值。

33.device.setMusicVolume(volume)#
volume 音量
设置当前媒体音量。

此函数需要"修改系统设置"的权限。如果没有该权限,会抛出SecurityException并跳转到权限设置界面。

34.device.setNotificationVolume(volume)#
volume 音量
设置当前通知音量。

此函数需要"修改系统设置"的权限。如果没有该权限,会抛出SecurityException并跳转到权限设置界面。

35.device.setAlarmVolume(volume)#
volume 音量
设置当前闹钟音量。

此函数需要"修改系统设置"的权限。如果没有该权限,会抛出SecurityException并跳转到权限设置界面。

36.device.getBattery()#
0.0~100.0的浮点数
返回当前电量百分比。

37.device.isCharging()#

返回设备是否正在充电。

38.device.getTotalMem()#

返回设备内存总量,单位字节(B)。1MB = 1024 * 1024B。

39.device.getAvailMem()#

返回设备当前可用的内存,单位字节(B)。

40.device.isScreenOn()#
返回
返回设备屏幕是否是亮着的。如果屏幕亮着,返回true; 否则返回false。

需要注意的是,类似于vivo xplay系列的息屏时钟不属于"屏幕亮着"的情况,虽然屏幕确实亮着但只能显示时钟而且不可交互,此时isScreenOn()也会返回false。

41.device.wakeUp()#
唤醒设备。包括唤醒设备CPU、屏幕等。可以用来点亮屏幕。

42.device.wakeUpIfNeeded()#
如果屏幕没有点亮,则唤醒设备。

43.device.keepScreenOn([timeout])#
timeout 屏幕保持常亮的时间, 单位毫秒。如果不加此参数,则一直保持屏幕常亮。
保持屏幕常亮。

此函数无法阻止用户使用锁屏键等正常关闭屏幕,只能使得设备在无人操作的情况下保持屏幕常亮;同时,如果此函数调用时屏幕没有点亮,则会唤醒屏幕。

在某些设备上,如果不加参数timeout,只能在Auto.js的界面保持屏幕常亮,在其他界面会自动失效,这是因为设备的省电策略造成的。因此,建议使用比较长的时长来代替"一直保持屏幕常亮"的功能,例如device.keepScreenOn(3600 * 1000)。

可以使用device.cancelKeepingAwake()来取消屏幕常亮。

//一直保持屏幕常亮
device.keepScreenOn()
device.keepScreenDim([timeout])#

timeout 屏幕保持常亮的时间, 单位毫秒。如果不加此参数,则一直保持屏幕常亮。
保持屏幕常亮,但允许屏幕变暗来节省电量。此函数可以用于定时脚本唤醒屏幕操作,不需要用户观看屏幕,可以让屏幕变暗来节省电量。

此函数无法阻止用户使用锁屏键等正常关闭屏幕,只能使得设备在无人操作的情况下保持屏幕常亮;同时,如果此函数调用时屏幕没有点亮,则会唤醒屏幕。

可以使用device.cancelKeepingAwake()来取消屏幕常亮。

44.device.cancelKeepingAwake()#
取消设备保持唤醒状态。用于取消device.keepScreenOn(), device.keepScreenDim()等函数设置的屏幕常亮。

45.device.vibrate(millis)#
millis 震动时间,单位毫秒
使设备震动一段时间。

//震动两秒
46.device.vibrate(2000);
device.cancelVibration()#
如果设备处于震动状态,则取消震动。

未完待续

你可能感兴趣的:(学习笔记,javascript)