屏幕截图
发布时间
阅读量:
阅读量
截图分为两步:
- 获取截图权限
/* 请求截图权限 */
if(!requestScreenCapture())
{
toast("请求截图失败!");
exit();
}
- 进行截图
captureScreen(path);
问题1 :
在 autojs 中,调用 requestScreenCapture 函数,系统会弹出询问框,问是否允许 autojs 截图,此时脚本就会阻塞,直到手动点击“取消”或“立即开始”按钮才会继续运行。
这个情况,会导致定时脚本无法完全脱离人工进行操作了。

方案 :
思路上,通过点击“立即开始”,就可以允许脚本继续往下跑了,但是由于此时脚本已经阻塞,所以它自己是点不了自己的了。所以,通过新建一个线程,让那个线程帮忙点,那就可以了。
/* 开启线程,找到并点击立即开始,并且触发事件(只需要执行一次就可以) */
threads.start(function () {
var beginBtn;
if (beginBtn = classNameContains("Button").textContains("立即开始").findOne(2000)) {
beginBtn.click();
}
});
问题2 :
截图时captureScreen(path)中的path是指截图保存的文件名称,包括路径名和文件名,为了便于查找,我们希望把截图放在相机文件夹下;同时,为了防止文件名重复,可以用当前日期时间对截图的文件进行命名。
方案 :
相机的文件夹路径为:
/DCIM/Camera/
获取当前网络时间:
function IntTime() {
try {
var recode_suning = http.get("http://quan.suning.com/getSysTime.do");
var suningTime = recode_suning.body.json();
return suningTime.sysTime1;
} catch (e) {}
}
var myDateTime = IntTime();
详见文章“获取当前时间。
下面是打开支付宝首页进行截图的例子:
toast("begin");
app.launchApp('支付宝');
sleep(1500);
/* 获取日期用于生成截图文件名 */
function IntTime() {
try {
var recode_suning = http.get("http://quan.suning.com/getSysTime.do");
var suningTime = recode_suning.body.json();
return suningTime.sysTime1;
} catch (e) {}
}
var myDateTime = IntTime();
/* 开启线程,找到并点击立即开始,并且触发事件(只需要执行一次就可以) */
threads.start(function () {
var beginBtn;
if (beginBtn = classNameContains("Button").textContains("立即开始").findOne(2000)) {
beginBtn.click();
}
});
/* 请求截图权限 */
if(!requestScreenCapture())
{
toast("请求截图失败!");
exit();
}
/* 截图 */
var path = files.getSdcardPath() + "/DCIM/Camera/" + myDateTime + ".png";
sleep(1000);
captureScreen(path);
toast("end");
全部评论 (0)
还没有任何评论哟~
