全局模块
说明
全局模块是指直接调用方法就可以使用的模块,无需使用前缀对象名称
版本判断
checkApkVersion8
- 检查apk主版本是否是8版本,如果不是会有异常发生
- 该函数可以在程序中调用,防止iec和apk版本不一致
- 适合版本 EC 8.2.0+
checkApkVersion8()
checkApkVersion9
- 检查apk主版本是否是9版本,如果不是会有异常发生
- 该函数可以在程序中调用,防止iec和apk版本不一致
- 适合版本 EC 9.1.0+
checkApkVersion9()
中控投屏相关
getCenterTaskInfo 获取中控任务
- 取得中控发过来的任务参数信息
- 中控启动脚本,可以配置参数,在这里使用本函数获取参数,给脚本使用
- 适合版本 EC 安卓 9.27.0+
- 注意:这个需要使用参数配置,读取顺序是 优先读取单个设备配置 ,如果单个设备配置无任何数据,就读取 全局配置,
- 返回参数中 含有 from_global 这样的key,代表是来源于全局参数
- @return
{json}
对象
function main() {
while (true) {
logd("---> " + new Date())
sleep(2000);
let info = getCenterTaskInfo()
logd("info -> " + JSON.stringify(info))
if (info) {
logd("test param => " + info['valueJson']['test']);
}
sleep(2000);
}
}
main()
插件模块加载
loadDex 载入dex或者apk
- 载入dex文件
- @param path 路径,加载顺序分别是插件目录(例如 ab.apk)或者是文件路径(例如 /sdcard/ab.apk)加载
- @return true 载入成功, false载入失败
function main() {
//类似这样会先从IEC文件的插件目录查找
//loadDex("ocr.apk");
//下面这个是从sdcard查找
loadDex("/sdcard/a.apk");
// a.apk中存在com.A这个这个类,可以直接使用
var obj = new com.A();
}
main();
setRepeatLoadDex 设置重复加载dex或者apk
- 设置重复加载dex,apk,防止插件过大导致加载时间过长
- 适合版本 EC 7.1.0+
- @param r 是否重复加载,true 可以重复加载,false 不可以重复加载
- @return true 载入成功, false载入失败
function main() {
setRepeatLoadDex(false)
//类似这样会先从IEC文件的插件目录查找
//loadDex("ocr.apk");
//下面这个是从sdcard查找
loadDex("/sdcard/a.apk");
// a.apk中存在com.A这个这个类,可以直接使用
var obj = new com.A();
}
main();
require 导入JS
- 导入JS模块
- @param path 路径,例如 本地/sdcard/a.js或者 EC工程中的文件路径 slib/a.js
- @return 模块对象
function main() {
//注意,js文件不要放在js目录或下级目录中
//注意,EC3.5版本不支持,EC已经6.15了兄弟
test = require("slib/a.js")
logd(test.c());
}
main();
//视频介绍:https://www.bilibili.com/video/BV1ES4y1f7qV?vd_source=2abc6be820f5a6382ebc0ceafc5dbe00&p=39&spm_id_from=333.788.videopod.episodes
importClass 导入JAVA类
- 导入java的class给js用
- @param clz class的名称例如: com.A
function main() {
importClass(com.A);
var obj = new com.A();
}
main();
importPackage 导入JAVA包
- 导入java包下面所有类给js用
- @param clz class的名称例如: com.b
function main() {
importPackage(com.b);
var obj = new com.b.A();
}
main();
脚本启停和暂停
exit 退出脚本
exit();
isScriptExit 是否已退出脚本
- 判断EC运行的当前线程是否处于退出状态,可用判断脚本是否退出,或者子线程是否退出
- 适用版本(EC 6.2.0+)
- @return true 已退出
function main() {
try {
while (true) {
sleep(1000)
logd("222")
if (isScriptExit()) {
break
}
}
logd("222")
} catch (e) {
logd(e)
if (isScriptExit()) {
return
}
}
}
main();
sleep 暂停执行
- 休眠
- @param miSecond 毫秒
function main() {
sleep(1000);
}
main();
execScript 载入JS
- 执行JS文件或者内容, [如果出 现illegalStateException,可以尝试修改eval函数执行js脚本]
- eval函数是js自带的,直接传入js内容就行
- @param type 1=文件,2=直接是JS内容
- @param content 路径例如/sdcard/a.js或者js的内容
- @return 布尔型,true代表执行成功, false代表失败
function main() {
var d = 'while(true){sleep(1000);logd(111111);}';
thread.execAsync(function () {
//execScript(1,"/sdcard/ad.js")
execScript(2, d);
});
while (true) {
sleep(2000);
loge("fsadffsad")
}
}
main();
restartScript 重启脚本
- 重启脚本,适合无限循环,或者有异常的情况可以下载最新的iec再次执行,避免进入UI才能热更新,
- 注意: 该方法威力巨大,请自行控制好是否自动重启,否则只能强杀进程才能停止
- @param path 新的IEC路径,如果不需要可以填写null
- @param stopCurrent 是否停止当前的脚本
- @param delay 延迟多少秒后执行
- @return bool true 代表成功 false 代表失败
function main() {
logd("我是在脚本运行的");
setStopCallback(function () {
restartScript(null, true, 3)
});
//setExceptionCallback(function (){
// restartScript(null,true,3)
//});
sleep(1000);
logd("脚本结束")
}
main();
setScriptPause 设置脚本暂停或者继续
- 设置脚本暂停或者继续
- 适配 EC 10.0.0+
- @param pause true 代表暂停脚本,false代表继续
- @param timeout 自动恢复时间单位毫秒,0 代表不自动恢复,等待外部交互后恢复,大于0代表到了时间自动恢复运行
- @return
{boolean}
true 代表脚本处于暂停中,false 代表继续运行中
function main() {
sleep(1000);
logd("start....")
// 代表暂停脚本执行,3秒后会自动化继续
// 这里仅仅是演示,实际情况需要根据自己的业务逻辑做判断或者从ui进行暂 停脚本
setScriptPause(true, 3000)
logd("我是三秒后的日志")
}
main();
isScriptPause 脚本是否处于暂停中
- 脚本是否处于暂停中
- 适配 EC 10.0.0+
- @return
{boolean}
true 代表脚本处于暂停中
function main() {
sleep(1000);
logd("start....")
// 代表暂停脚本执行,3秒后会自动化继续
// 这里仅仅是演示,实际情况需要根据自己的业务逻辑做判断或者从ui进行暂停脚本
// 仅仅是函数调用演示,实际情况根据业务处理
logd("isScriptPause " + isScriptPause())
setScriptPause(true, 3000)
logd("isScriptPause " + isScriptPause())
logd("我是三秒后的日志")
}
main();
JSON处理
JSON.stringify 格式化为JSON字符串
- 格式化对象为JSON字符串
- @param 对象
- @return 字符串
function main() {
var m = {"sss": "a"};
var d = JSON.stringify(m);
toast(d);
}
main();