Autojs基础-device(设备)

1.前言

这部分内容是获取当前环境中的设备信息,能够有效提高多环境运行脚本的兼容性。这个部分内容是非常多的,很多内容我平时也没有使用,但是一起学习下还是有必要的。由于device这部分内容过多,我分为属性和函数两部分进行就介绍,但是所有的属性或者函数都是基于device对象进行调用。由于我当前环境为模拟器,可能会出现一些没找到的信息。我为了测试Android版本的兼容性,我以最新版雷电模拟器(Android 9)为例进行测试,出现特殊情况我会切换为Android 7测试。如果两者有什么不同,我会指出,但是还是推荐使用雷电模拟器4(Android 7)作为开发和生产环境。

如果第一次调用setBrightness或setBrightnessMode等修改函数会提示修改系统配置权限,需要开启这个权限后,函数才能生效。

2.属性

1.width与height

width和height属性分别表示屏幕分辨率的宽度和高度。

arduino 复制代码
console.log("屏幕宽度:" + device.width);
console.log("屏幕高度:" + device.height);

2.buildId与broad

buildId和broad属性分别表示修订版本号和主板型号。

arduino 复制代码
console.log("修订版本号:" + device.buildId);
console.log("主板型号:" + device.broad);

3.brand、device、model与product

brand、device、model和product属性分别表示品牌、工业名称、型号和产品名称。

arduino 复制代码
console.log("品牌:" + device.brand);
console.log("工业名称:" + device.device);
console.log("设备型号:" + device.model);
console.log("产品名称:" + device.product);

4.bootloader、hardware、fingerprint与serial

bootloader、hardware、fingerprint和serial属性分别表示bl版本、硬件名称、硬件唯一标识和序列号。

arduino 复制代码
console.log("bl版本:" + device.bootloader);
console.log("硬件名称:" + device.hardware);
console.log("硬件唯一标识:" + device.fingerprint);
console.log("序列号:" + device.serial);

切换为Android 7环境后,序列号能够查到了。

5.sdkInt、incremental、release与baseOS

sdkInt、incremental、release和baseOS属性分别表示sdk版本、内部版本号、系统版本号(Android版本)和底层系统版本。

arduino 复制代码
console.log("sdk版本:" + device.sdkInt);
console.log("内部版本号:" + device.incremental);
console.log("系统版本号:" + device.release);
console.log("底层系统版本:" + device.baseOS);

6.securityPatch与codename

securityPatch和codename属性分别表示安全补丁级别和开发代号。

arduino 复制代码
console.log("安全补丁级别:" + device.securityPatch);
console.log("开发代号:" + device.codename);

3.函数

1.getIMEI、getAndroidId与getMacAddress

getIMEI、getAndroidId和getMacAddress函数分别用于获取IMEI、Android Id和Mac地址。在雷电模拟器9(Android 9)和雷电模拟器4(Android 7)中调用getIMEI函数,均报错无权限。导致出现这个问题的原因可能有两个,一个是模拟器,另一个是这个函数已经无法使用了,大家谨慎使用getIMEI这个函数吧。

另外两个函数可以正常使用。

arduino 复制代码
console.log("Android Id:" + device.getAndroidId());
console.log("Mac地址:" + device.getMacAddress());

2.getBrightness、getBrightnessMode、setBrightness与setBrightnessMode

getBrightness和getBrightnessMode函数分别用于获取手动模式下当前屏幕亮度和当前亮度模式(0代表手动模式,1代表自动模式)。

setBrightness函数用于设置手动模式下屏幕亮度,需要传亮度一个参数,参数类型为数字,数字范围为0~255。

setBrightnessMode函数用于设置亮式模式,需要传模式编号一个参数,参数类型为数字,只允许传递0或1两个参数,分别代表手动亮度和自动亮度两种模式。

arduino 复制代码
// 重置模式和亮度
device.setBrightnessMode(0);
device.setBrightness(50);
console.log("当前屏幕亮度:" + device.getBrightness());
console.log("当前亮度模式:" + device.getBrightnessMode());

// 重新设置屏幕亮度
device.setBrightness(100);
console.log("修改后屏幕亮度:" + device.getBrightness());


// 设置自动亮度模式
device.setBrightnessMode(1);
console.log("修改后亮度模式:" + device.getBrightnessMode());

3.getMusicVolume、getNotificationVolume、getAlarmVolume、getMusicMaxVolume、getNotificationMaxVolume、getAlarmMaxVolume、setMusicVolume、setNotificationVolume与setAlarmVolume

getMusicVolume、getNotificationVolume和getAlarmVolume函数分别用于获取当前媒体音量、当前通知音量和当前闹钟音量。

getMusicMaxVolume、getNotificationMaxVolume和getAlarmMaxVolume函数分别用于获取最大媒体音量、最大通知音量和最大闹钟音量。当然最小值不用获取了,三个音量的最少值当然是0了。这三个获取最大音量的函数是为了我们方便按照百分比设置音量,尤其在三个音量最大值不同的情况下作用最明显。

setMusicVolume、setNotificationVolume和setAlarmVolume函数分别用于设置媒体音量、通知音量和闹钟音量,均需要传递音量值一个参数,参数类型均为数字。调用这三个函数之前,先要获取对应的最大音量值,要设置的音量值不要超过最大音量值。

less 复制代码
console.log("当前媒体音量:" + device.getMusicVolume());
console.log("当前通知音量:" + device.getNotificationVolume());
console.log("当前闹钟音量:" + device.getAlarmVolume());

console.log("最大媒体音量:" + device.getMusicMaxVolume());
console.log("最大通知音量:" + device.getNotificationMaxVolume());
console.log("最大闹钟音量:" + device.getAlarmMaxVolume());

// 修改音量
device.setMusicVolume(4);
device.setNotificationVolume(7);
device.setAlarmVolume(2);


console.log("修改后媒体音量:" + device.getMusicVolume());
console.log("修改后通知音量:" + device.getNotificationVolume());
console.log("修改后闹钟音量:" + device.getAlarmVolume());

4.getBattery与isCharging

getBattery和isCharging函数分别用于获取当前电量百分比和当前设备是否在充电。

arduino 复制代码
console.log("当前电量百分比:" + device.getBattery());
console.log("当前设备是否在充电:" + device.isCharging());

5.getTotalMem与getAvailMem

getTotalMem和getAvailMem函数分别用于获取当前设备总内存和当前设备可用内存,单位均为字节(B)。

javascript 复制代码
let totalMemory = device.getTotalMem();
let availMemory = device.getAvailMem();
console.log("当前设备总内存:" + totalMemory + "B,相当于" + (totalMemory / 1024 / 1024).toFixed(2) + "M");
console.log("当前设备可用内存:" + availMemory + "B,相当于" + (availMemory / 1024 / 1024).toFixed(2) + "M");

6.isScreenOn、wakeUp与wakeUpIfNeeded

isScreenOn、wakeUp和wakeUpIfNeeded函数分别用于获取屏幕是否亮着、唤醒屏幕和屏幕不亮时唤醒屏幕。由于我使用的环境是模拟器,不会息屏,无法测试后面两个函数,但是我调用这两个函数没有报错,代表是可以使用的。

arduino 复制代码
console.log("屏幕是否亮着:" + device.isScreenOn());

7.keepScreenOn、keepScreenDim与cancelKeepingAwake

keepScreenOn和keepScreenDim函数均用于保持屏幕常亮,均需要传递常亮时间一个参数,单位为毫秒。如果不传递参数,均表示一直保持屏幕常亮。

cancelKeepingAwake函数用于取消两个函数的常量状态。由于在模拟器中执行代码,没法看常亮状态,但是以下代码执行不报错。

scss 复制代码
device.keepScreenOn();
device.cancelKeepingAwake();

sleep(5000);
device.keepScreenDim(600 * 1000);
device.cancelKeepingAwake();

8.vibrate与cancelVibration

vibrate函数用于设备振动,需要传递振动时间一个参数,单位为毫秒。

cancelVibration函数用于设备振动取消。由于在模拟器中执行代码,没法激活振动状态,但是以下代码执行不报错。

scss 复制代码
// 振动10秒
device.vibrate(10 * 1000);
sleep(2000);

device.cancelVibration();

4.总结

特别注意,只有通过个人主页博客或者个人介绍中方式,才能获取源码

相关推荐
csdn飘逸飘逸1 小时前
Autojs基础-文件系统(files)
javascript
wuhen_n1 小时前
patch算法:新旧节点的比对与更新
前端·javascript·vue.js
十里八乡有名的后俊生1 小时前
深度解析:JavaScript中的import方式 - 静态导入、动态导入与CSS处理机制
前端·javascript·面试
用户60648767188962 小时前
Claude Sonnet 4.6 实战测评:代码生成、推理能力、长文本处理全面拆解
javascript
wuhen_n2 小时前
Diff算法基础:同层比较与key的作用
前端·javascript·vue.js
颜酱2 小时前
队列练习系列:从基础到进阶的完整实现
javascript·后端·算法
Qinana2 小时前
手搓 AI Agent:从零构建能自动写代码、跑命令的“数字员工”
前端·javascript·agent
YukiMori232 小时前
深入理解 JavaScript 箭头函数的 this:为什么 DOM 事件不推荐用箭头函数?
前端·javascript·dom
不会敲代码12 小时前
防抖与节流:从输入框看性能优化
前端·javascript·面试