diff --git a/app/src/main/assets/docs/all.html b/app/src/main/assets/docs/all.html index f01e96e2..dafff867 100644 --- a/app/src/main/assets/docs/all.html +++ b/app/src/main/assets/docs/all.html @@ -2,7 +2,7 @@
-索引 | @@ -244,15 +246,19 @@
images模块提供了一些手机设备中常见的图片处理函数,包括截图、读写图片、图片剪裁、找色、找图等。
-向系统申请屏幕截图权限,返回是否请求成功。
第一次使用该函数会弹出截图权限请求,建议选择“总是允许”。
-这个函数只是申请截图权限,并不会真正执行截图,真正的截图函数是[captureScreen][]都调用一次。
+这个函数只是申请截图权限,并不会真正执行截图,真正的截图函数是[captureScreen][]。
该函数在截图脚本中只需执行一次,而无需每次调用[captureScreen][]都调用一次。
-不指定参数时默认为屏幕宽高。指定参数时,并不会严格以width和height为截图宽度和高度,而是以和width, height接近的最适合的宽高为截图宽高。例如在1920*1080屏幕中requestScreenCapture(600, 1000)请求的截图的高度一般是540*960。
-如果在第一次权限请求时选择"总是允许", 之后的脚本执行该函数通常耗时200毫秒以内(测试机型:小米6)。
-建议在本软件界面运行该函数,在其他软件界面运行时容易出现一闪而过的黑屏。
-如果要进行截图、找色的软件界面为横屏,则requestScreenCapture函数需要在横屏状态下执行,否则后续截图将会异常,调用findColor等函数时坐标变换会出现错误。
-截取当前屏幕并返回一个[Image][]对象。
+如果不指定landscape值,则截图方向由当前设备屏幕方向决定,因此务必注意执行该函数时的屏幕方向。
+建议在本软件界面运行该函数,在其他软件界面运行时容易出现一闪而过的黑屏现象。
+示例:
+//请求截图
+if(!requestScreenCapture()){
+ toast("请求截图失败");
+ exit();
+}
+//连续截图10张图片(间隔1秒)并保存到存储卡目录
+for(var i = 0; i < 10; i++){
+ captureScreen("/sdcard/screencapture" + i + ".png");
+ sleep(1000);
+}
+该函数也可以作为全局函数使用。
+截取当前屏幕并返回一个Image对象。
没有截图权限时执行该函数会抛出SecurityException。
-该函数不会返回null,两次调用可能返回相同的Image对象。这是因为设备截图的更新需要一定的时间,短时间内(几十ms)连续调用则会返回同一张截图。
-该函数不会返回null,两次调用可能返回相同的Image对象。这是因为设备截图的更新需要一定的时间,短时间内(一般来说是16ms)连续调用则会返回同一张截图。
+截图需要转换为Bitmap格式,从而该函数执行需要一定的时间(0~20ms)。
+另外在requestScreenCapture()执行成功后需要一定时间后才有截图可用,因此如果立即调用captureScreen(),会等待一定时间后(一般为几百ms)才返回截图。
+例子:
+//请求横屏截图
+requestScreenCapture(true);
+//截图
+var img = captureScreen();
+//获取在点(100, 100)的颜色值
+var color = images.pixel(img, 100, 100);
+//显示该颜色值
+toast(colors.toString(color));
+该函数也可以作为全局函数使用。
+截取当前屏幕并以PNG格式保存到path中。如果文件不存在会被创建;文件存在会被覆盖。
-该函数不会返回任何值。
+该函数不会返回任何值。该函数也可以作为全局函数使用。
返回图片image在点(x, y)处的像素的ARGB值。
-该值的格式为0xAARRGGBB,是一个"32位整数"(虽然JavaScript中并不区分整数类型和其他数值类型。
+该值的格式为0xAARRGGBB,是一个"32位整数"(虽然JavaScript中并不区分整数类型和其他数值类型)。
坐标系以图片左上角为原点。以图片左侧边为y轴,上侧边为x轴。
把图片image以PNG格式保存到path中。如果文件不存在会被创建;文件存在会被覆盖。
+path <string> 图片路径读取在路径path的图片文件并返回一个Image对象。如果文件不存在或者文件无法解码则返回null。
+url <string> 图片URL地址加载在地址URL的网络图片并返回一个Image对象。如果地址不存在或者图片无法解码则返回null。
在图片中寻找颜色color。找到时返回找到的点[Point][],找不到时返回null。
+在图片中寻找颜色color。找到时返回找到的点Point,找不到时返回null。
选项包括:
region <Array> 找色区域。是一个两个或四个元素的数组。(region[0], region[1])表示找色区域的左上角;region[2]*region[3]表示找色区域的宽高。如果只有region只有两个元素,则找色区域为(region[0], region[1])到屏幕右下角。如果不指定region选项,则找色区域为整张图片。threshold <number> 找色时颜色相似度的临界值,范围为0~255(越小越相似,0为颜色相等,255为任何颜色都能匹配)。默认为16。threshold和浮点数相似度(0.0~1.0)的换算为 similarity = (255 - threshold) / 255.该函数也可以作为全局函数使用。
+一个循环找色的例子如下:
+requestScreenCapture();
+
+//循环找色,找到红色(#ff0000)时停止并报告坐标
+while(true){
+ var img = captureScreen();
+ var point = findColor(img, "#ff0000");
+ if(point){
+ toast("找到红色,坐标为(" + point.x + ", " + point.y + ")");
+ }
+}
+一个区域找色的例子如下:
+//读取本地图片/sdcard/1.png
+var img = images.read("/sdcard/1.png");
+//判断图片是否加载成功
+if(!img){
+ toast("没有该图片");
+ exit();
+}
+//在该图片中找色,指定找色区域为在位置(400, 500)的宽为300长为200的区域,指定找色临界值为4
+var point = findColor(img, "#00ff00", {
+ region: [400, 500, 300, 200],
+ threshold: 4
+ });
+if(point){
+ toast("找到啦:" + point);
+}else{
+ toast("没找到");
+}
+区域找色的简便方法。
+相当于
+images.findColor(img, color, {
+ region: [x, y, width, height],
+ threshold: threshold
+});
+该函数也可以作为全局函数使用。
+严格找色的简便方法。找色时要求颜色完全相等才匹配。
+相当于
+images.findColor(img, color, {
+ region: [x, y, width, height],
+ threshold: 0
+});
+该函数也可以作为全局函数使用。
+示例: +(通过找QQ红点的颜色来判断是否有未读消息)
+requestScreenCapture();
+launchApp("QQ");
+sleep(1200);
+var p = findColorEquals(captureScreen(), "#f64d30");
+if(p){
+ toast("有未读消息");
+}else{
+ toast("没有未读消息");
+}
+image <Image> 图片color <number> | <string> 要检测的颜色x <number> 要检测的位置横坐标y <number> 要检测的位置纵坐标threshold <number> 颜色相似度临界值,默认为16。取值范围为0~255。algorithm <string> 颜色匹配算法,包括:返回图片image在位置(x, y)处是否匹配到颜色color。用于检测图片中某个位置是否是特定颜色。
+一个判断微博客户端的某个微博是否被点赞过的例子:
+requestScreenCapture();
+//找到点赞控件
+var like = id("ly_feed_like_icon").findOne();
+//获取该控件中点坐标
+var x = like.bounds().centerX();
+var y = like.bounds().centerY();
+//截图
+var img = captureScreen();
+//判断在该坐标的颜色是否为橙红色
+if(images.detectsColor(img, "#fed9a8", x, y)){
+ //是的话则已经是点赞过的了,不做任何动作
+}else{
+ //否则点击点赞按钮
+ like.click();
+}
+img <Image> 大图片template <Image> 小图片(模板)options <Object> 找图选项找图。在大图片img中查找小图片template的位置(模块匹配),找到时返回位置坐标(Point),找不到时返回null。
+选项包括:
+threshold <number> 图片相似度。取值范围为0~1的浮点数。默认值为0.9。region <Array> 找图区域。参见findColor函数关于region的说明。level <number> 一般而言不必修改此参数。不加此参数时该参数会根据图片大小自动调整。找图算法是采用图像金字塔进行的, level参数表示金字塔的层次, level越大可能带来越高的找图效率,但也可能造成找图失败(图片因过度缩小而无法分辨)或返回错误位置。因此,除非您清楚该参数的意义并需要进行性能调优,否则不需要用到该参数。该函数也可以作为全局函数使用。
-相当于
-images.findColor(img, color, {
- region: [x, y, width, height],
- algorithm: algorithm,
- threshold: threshold,
- threads: threads
+一个最简单的找图例子如下:
+var img = images.read("/sdcard/大图.png");
+var templ = images.read("/sdcard/小图.png");
+var p = findImage(img, templ);
+if(p){
+ toast("找到啦:" + p);
+}else{
+ toast("没找到");
+}
+
稍微复杂点的区域找图例子如下:
+auto();
+requestScreenCapture();
+var wx = images.read("/sdcard/微信图标.png");
+//返回桌面
+home();
+//截图并找图
+var p = findImage(captureScreen(), wx, {
+ region: [0, 50],
+ threshold: 0.8
});
+if(p){
+ toast("在桌面找到了微信图标啦: " + p);
+}else{
+ toast("在桌面没有找到微信图标");
+}
+
images.findImageInRegion(img, template, x, y[, width, height, threshold])#
+区域找图的简便方法。相当于:
+images.findImage(img, template, {
+ region: [x, y, width, height],
+ threshold: threshold
+})
该函数也可以作为全局函数使用。
-images.findColorEquals(img, color, x, y, width, height, threads)#
-相当于
-images.findColor(img, color, {
- region: [x, y, width, height],
- algorithm: "equal",
- threads: threads
-});
-
该函数也可以作为全局函数使用。
-images.detectsColor(image, color, x, y[, threshold = 16, algorithm = "rgb"])#
-
-返回图片image在位置(x, y)处是否匹配到颜色color。有关threshold和algorithm的信息,参考findColor函数。
colors#
Stability: 2 - Stablecolors是颜色处理的工具对象。包含一些常用方法,包括android.graphics.Color的所有方法以及toString方法。
colors.toString(color)#
返回颜色值的字符串,格式为 #AARRGGBB。
colors.red(color)#
返回颜色color的R通道的值,范围0~255.
colors.green(color)#
返回颜色color的G通道的值,范围0~255.
colors.blue(color)#
返回颜色color的B通道的值,范围0~255.
colors.alpha(color)#
返回颜色color的Alpha通道的值,范围0~255.
colors.rgb(red, green, blue)#
@@ -1424,20 +1590,33 @@ sleep(500);
返回这些颜色通道构成的整数颜色值。Alpha通道将是255(不透明)。
返回这些颜色通道构成的整数颜色值。
[captureScreen][] 返回的对象。
+表示一张图片,可以是截图的图片,或者本地读取的图片,或者从网络获取的图片。
返回以像素为单位图片宽度。
返回以像素为单位的图片高度。
+path <string> 路径把图片保存到路径path。(如果文件存在则覆盖)
+返回图片image在点(x, y)处的像素的ARGB值。
+该值的格式为0xAARRGGBB,是一个"32位整数"(虽然JavaScript中并不区分整数类型和其他数值类型)。
+坐标系以图片左上角为原点。以图片左侧边为y轴,上侧边为x轴。
findColor返回的对象。
+findColor, findImage返回的对象。表示一个点(坐标)。
横坐标。
相当于context.sendBroadcast(intent)。
+ +http模块提供一些进行http请求的函数。
+url <string> 请求的URL地址,需要以"http://"或"https://"开头。如果url没有以"http://"开头,则默认为"http://"。options <Object> 请求选项。参见[http.request()][]。callback <Function> 回调函数,可选,其参数是一个[Response][]对象。如果不加回调函数,则该请求将阻塞、同步地执行。对地址url进行一次HTTP GET 请求。如果没有回调函数,则在请求完成或失败时返回此次请求的响应(参见[Response][])。
+最简单GET请求如下:
+console.show();
+var r = http.get("www.baidu.com");
+log("code = " + r.statusCode);
+log("html = " + r.body.string());
+采用回调形式的GET请求如下:
+console.show();
+http.get("www.baidu.com", {}, function(res, err){
+ if(err){
+ console.error(err);
+ return;
+ }
+ log("code = " + r.statusCode);
+ log("html = " + r.body.string());
+});
+如果要增加HTTP头部信息,则在options参数中添加,例如:
+console.show();
+var r = http.get("www.baidu.com", {
+ headers: {
+ "Accept-Language": "zh-cn,zh;q=0.5",
+ "User-Agent: "Mozilla/5.0 (Macintosh; Intel Mac OS X
+10_7_0) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56
+Safari/535.11"
+ }
+});
+log("code = " + r.statusCode);
+log("html = " + r.body.string());
+一个请求天气并解析返回的天气JSON结果的例子如下:
+var city = "广州";
+var res = http.get("http://www.sojson.com/open/api/weather/json.shtml?city=" + city);
+if(res.statusCode != 200){
+ toast("请求失败: " + res.statusCode + " " + res.statusMessage);
+}else{
+ var weather = res.body.json();
+ log(weather);
+ toast(util.format("温度: %s 湿度: %s 空气质量: %s", weather.data.wendu,
+ weather.data.shidu, weather.quality));
+}
+url <string> 请求的URL地址,需要以"http://"或"https://"开头。如果url没有以"http://"开头,则默认为"http://"。data <string> | <Object> POST数据。options <Object> 请求选项。callback <Function> 回调,其参数是一个[Response][]对象。如果不加回调参数,则该请求将阻塞、同步地执行。对地址url进行一次HTTP POST 请求。如果没有回调函数,则在请求完成或失败时返回此次请求的响应(参见[Response][])。
+其中POST数据可以是字符串或键值对。具体含义取决于options.contentType的值。默认为"application/x-www-form-urlencoded"(表单提交), 这种方式是JQuery的ajax函数的默认方式。
+一个模拟表单提交登录淘宝的例子如下:
+var url = "https://login.taobao.com/member/login.jhtml";
+var username = "你的用户名";
+var password = "你的密码";
+var res = http.post(url, {
+ "TPL_username": username,
+ "TPL_password": password
+});
+var html = res.body.string();
+if(html.contains("页面跳转中")){
+ toast("登录成功");
+}else{
+ toast("登录失败");
+}
+url <string> 请求的URL地址,需要以"http://"或"https://"开头。如果url没有以"http://"开头,则默认为"http://"。data <Object> POST数据。options <Object> 请求选项。callback <Function> 回调,其参数是一个[Response][]对象。如果不加回调参数,则该请求将阻塞、同步地执行。以JSON格式向目标Url发起POST请求。如果没有回调函数,则在请求完成或失败时返回此次请求的响应(参见[Response][])。
+JSON格式指的是,将会调用JSON.stringify()把data对象转换为JSON字符串,并在HTTP头部信息中把"Content-Type"属性置为"application/json"。这种方式是AngularJS的ajax函数的默认方式。
一个调用图灵机器人接口的例子如下:
+url <string> 请求的URL地址,需要以"http://"或"https://"开头。如果url没有以"http://"开头,则默认为"http://"。options <Object> 请求选项。参见[http.buildRequest()][]。callback <Function> 回调,其参数是一个[Response][]对象。如果不加回调参数,则该请求将阻塞、同步地执行。对目标地址url发起一次HTTP请求。如果没有回调函数,则在请求完成或失败时返回此次请求的响应(参见[Response][])。
+选项options可以包含以下属性:
+headers <Object> 键值对形式的HTTP头部信息。有关HTTP头部信息,参见菜鸟教程:HTTP响应头信息。method <string> HTTP请求方法。包括"GET", "POST", "PUT", "DELET", "PATCH"。contentType <string> HTTP头部信息中的"Content-Type", 表示HTTP请求的内容类型。例如"text/plain", "application/json"。更多信息参见菜鸟教程:HTTP contentType。body <string> | <Array> | <Function> HTTP请求的内容。可以是一个字符串,也可以是一个字节数组;或者是一个以BufferedSink为参数的函数。该函数是get, post, postJson等函数的基础函数。因此除非是PUT, DELET等请求,或者需要更高定制的HTTP请求,否则直接使用get, post, postJson等函数会更加方便。
+HTTP请求的响应。
+当前响应的HTTP状态码。例如200(OK), 404(Not Found)等。
+有关HTTP状态码的信息,参见菜鸟教程:HTTP状态码。
+当前响应的HTTP状态信息。例如"OK", "Bad Request", "Forbidden"。
+有关HTTP状态码的信息,参见菜鸟教程:HTTP状态码。
+例子:
+var res = http.get("www.baidu.com");
+if(res.statusCode >= 200 && res.statusCode < 300){
+ toast("页面获取成功!");
+}else if(res.statusCode == 404){
+ toast("页面没找到哦...");
+}else{
+ toast("错误: " + res.statusCode + " " + res.statusMessage);
+}
+当前响应的HTTP头部信息。该对象的键是响应头名称,值是各自的响应头值。 所有响应头名称都是小写的(吗)。
+有关HTTP头部信息,参见菜鸟教程:HTTP响应头信息。
+例子:
+console.show();
+var res = http.get("www.qq.com");
+console.log("HTTP Headers:")
+for(var headerName in res.headers){
+ console.log("%s: %s", headerName, res.headers[headerName]);
+}
+当前响应的内容。他有以下属性和函数:
+dialogs 模块允许用户通过对话框与脚本进行交互。
+显示一个包含输入框的对话框。如果指定了 default ,那么对话框显示时输入框的内容就为该值。
该函数也可通过 rawInput(title[, default]) 、 prompt(title[, default]) 或者 dialogs.prompt(title[, default]) 来调用。调用时脚本将阻塞直至对话框被关闭。如果用户输入内容并点击确定,函数将返回输入的内容;否则返回 null 。
等效于 eval(dialogs.rawInput(title, default))
见 dialogs.rawInput
+显示一个只包含“确定”按钮的提示对话框。
+该函数也可通过 alert(title[, content]) 来调用。调用时脚本将阻塞直至对话框被关闭。该函数无返回值。
显示一个包含“确定”和“取消”按钮的提示对话框。
+该函数也可通过 confirm(title[, content]) 来调用。调用时脚本将阻塞直至对话框被关闭。如果用户点击“确定”则返回 true ,否则返回 false 。
显示一个带有选项列表的对话框。
+该函数也可通过 dialogs.select(title, ...items) 来调用。
例如: dialogs.select("标题", ["A", "B", "C"]) 可以用 dialogs.select("标题", "A", "B", "C") 替代。
调用时脚本将阻塞直至对话框被关闭。如果用户点击了对话框中的某个选项,该函数会返回该选项的位置(选中第一个选项返回0,第二个选项返回1,以此类推),否则返回-1。
+显示一个带有单选框选项列表的对话框。
+调用时脚本将阻塞直至对话框被关闭。如果用户选中了对话框中的某个选项并点击“确定”,该函数会返回该选项的位置(选中第一个选项返回0,第二个选项返回1,以此类推),否则返回-1。
+显示一个带有多选框选项列表的对话框。
+调用时脚本将阻塞直至对话框被关闭。如果用户点击“确定”按钮,该函数会返回所有已选选项的位置组成的数组,否则返回空数组。 +
engines模块包含了一些与脚本引擎有关的函数,包括运行其他脚本,关闭脚本等。
diff --git a/app/src/main/assets/docs/app.html b/app/src/main/assets/docs/app.html index 7cd468b3..c0007f8f 100644 --- a/app/src/main/assets/docs/app.html +++ b/app/src/main/assets/docs/app.html @@ -2,7 +2,7 @@ -索引 | diff --git a/app/src/main/assets/docs/console.html b/app/src/main/assets/docs/console.html index 92e2274b..38fc5249 100644 --- a/app/src/main/assets/docs/console.html +++ b/app/src/main/assets/docs/console.html @@ -2,7 +2,7 @@
-索引 | diff --git a/app/src/main/assets/docs/coordinates-based-automation.html b/app/src/main/assets/docs/coordinates-based-automation.html index 2692be6b..b76a6b8f 100644 --- a/app/src/main/assets/docs/coordinates-based-automation.html +++ b/app/src/main/assets/docs/coordinates-based-automation.html @@ -2,7 +2,7 @@
-索引 | diff --git a/app/src/main/assets/docs/documentation.html b/app/src/main/assets/docs/documentation.html index 9c6e28e7..a93989f7 100644 --- a/app/src/main/assets/docs/documentation.html +++ b/app/src/main/assets/docs/documentation.html @@ -2,7 +2,7 @@
-索引 | diff --git a/app/src/main/assets/docs/engines.html b/app/src/main/assets/docs/engines.html index 1527834b..a5c404ee 100644 --- a/app/src/main/assets/docs/engines.html +++ b/app/src/main/assets/docs/engines.html @@ -2,7 +2,7 @@
-索引 | diff --git a/app/src/main/assets/docs/events.html b/app/src/main/assets/docs/events.html index 8b783f06..0b0dfa38 100644 --- a/app/src/main/assets/docs/events.html +++ b/app/src/main/assets/docs/events.html @@ -2,7 +2,7 @@
-索引 | diff --git a/app/src/main/assets/docs/files.html b/app/src/main/assets/docs/files.html index 97d8d9a3..9f86bb40 100644 --- a/app/src/main/assets/docs/files.html +++ b/app/src/main/assets/docs/files.html @@ -2,7 +2,7 @@
-索引 | diff --git a/app/src/main/assets/docs/globals.html b/app/src/main/assets/docs/globals.html index c3d4c28d..9f04af7b 100644 --- a/app/src/main/assets/docs/globals.html +++ b/app/src/main/assets/docs/globals.html @@ -2,7 +2,7 @@
-索引 | diff --git a/app/src/main/assets/docs/images.html b/app/src/main/assets/docs/images.html index af75e99c..01d8b3bf 100644 --- a/app/src/main/assets/docs/images.html +++ b/app/src/main/assets/docs/images.html @@ -2,7 +2,7 @@
-索引 | @@ -65,15 +67,19 @@
images模块提供了一些手机设备中常见的图片处理函数,包括截图、读写图片、图片剪裁、找色、找图等。
-向系统申请屏幕截图权限,返回是否请求成功。
第一次使用该函数会弹出截图权限请求,建议选择“总是允许”。
-这个函数只是申请截图权限,并不会真正执行截图,真正的截图函数是[captureScreen][]都调用一次。
+这个函数只是申请截图权限,并不会真正执行截图,真正的截图函数是[captureScreen][]。
该函数在截图脚本中只需执行一次,而无需每次调用[captureScreen][]都调用一次。
-不指定参数时默认为屏幕宽高。指定参数时,并不会严格以width和height为截图宽度和高度,而是以和width, height接近的最适合的宽高为截图宽高。例如在1920*1080屏幕中requestScreenCapture(600, 1000)请求的截图的高度一般是540*960。
-如果在第一次权限请求时选择"总是允许", 之后的脚本执行该函数通常耗时200毫秒以内(测试机型:小米6)。
-建议在本软件界面运行该函数,在其他软件界面运行时容易出现一闪而过的黑屏。
-如果要进行截图、找色的软件界面为横屏,则requestScreenCapture函数需要在横屏状态下执行,否则后续截图将会异常,调用findColor等函数时坐标变换会出现错误。
-截取当前屏幕并返回一个[Image][]对象。
+如果不指定landscape值,则截图方向由当前设备屏幕方向决定,因此务必注意执行该函数时的屏幕方向。
+建议在本软件界面运行该函数,在其他软件界面运行时容易出现一闪而过的黑屏现象。
+示例:
+//请求截图
+if(!requestScreenCapture()){
+ toast("请求截图失败");
+ exit();
+}
+//连续截图10张图片(间隔1秒)并保存到存储卡目录
+for(var i = 0; i < 10; i++){
+ captureScreen("/sdcard/screencapture" + i + ".png");
+ sleep(1000);
+}
+该函数也可以作为全局函数使用。
+截取当前屏幕并返回一个Image对象。
没有截图权限时执行该函数会抛出SecurityException。
-该函数不会返回null,两次调用可能返回相同的Image对象。这是因为设备截图的更新需要一定的时间,短时间内(几十ms)连续调用则会返回同一张截图。
-该函数不会返回null,两次调用可能返回相同的Image对象。这是因为设备截图的更新需要一定的时间,短时间内(一般来说是16ms)连续调用则会返回同一张截图。
+截图需要转换为Bitmap格式,从而该函数执行需要一定的时间(0~20ms)。
+另外在requestScreenCapture()执行成功后需要一定时间后才有截图可用,因此如果立即调用captureScreen(),会等待一定时间后(一般为几百ms)才返回截图。
+例子:
+//请求横屏截图
+requestScreenCapture(true);
+//截图
+var img = captureScreen();
+//获取在点(100, 100)的颜色值
+var color = images.pixel(img, 100, 100);
+//显示该颜色值
+toast(colors.toString(color));
+该函数也可以作为全局函数使用。
+截取当前屏幕并以PNG格式保存到path中。如果文件不存在会被创建;文件存在会被覆盖。
-该函数不会返回任何值。
+该函数不会返回任何值。该函数也可以作为全局函数使用。
返回图片image在点(x, y)处的像素的ARGB值。
-该值的格式为0xAARRGGBB,是一个"32位整数"(虽然JavaScript中并不区分整数类型和其他数值类型。
+该值的格式为0xAARRGGBB,是一个"32位整数"(虽然JavaScript中并不区分整数类型和其他数值类型)。
坐标系以图片左上角为原点。以图片左侧边为y轴,上侧边为x轴。
把图片image以PNG格式保存到path中。如果文件不存在会被创建;文件存在会被覆盖。
+path <string> 图片路径读取在路径path的图片文件并返回一个Image对象。如果文件不存在或者文件无法解码则返回null。
+url <string> 图片URL地址加载在地址URL的网络图片并返回一个Image对象。如果地址不存在或者图片无法解码则返回null。
在图片中寻找颜色color。找到时返回找到的点[Point][],找不到时返回null。
+在图片中寻找颜色color。找到时返回找到的点Point,找不到时返回null。
选项包括:
region <Array> 找色区域。是一个两个或四个元素的数组。(region[0], region[1])表示找色区域的左上角;region[2]*region[3]表示找色区域的宽高。如果只有region只有两个元素,则找色区域为(region[0], region[1])到屏幕右下角。如果不指定region选项,则找色区域为整张图片。threshold <number> 找色时颜色相似度的临界值,范围为0~255(越小越相似,0为颜色相等,255为任何颜色都能匹配)。默认为16。threshold和浮点数相似度(0.0~1.0)的换算为 similarity = (255 - threshold) / 255.该函数也可以作为全局函数使用。
+一个循环找色的例子如下:
+requestScreenCapture();
+
+//循环找色,找到红色(#ff0000)时停止并报告坐标
+while(true){
+ var img = captureScreen();
+ var point = findColor(img, "#ff0000");
+ if(point){
+ toast("找到红色,坐标为(" + point.x + ", " + point.y + ")");
+ }
+}
+一个区域找色的例子如下:
+//读取本地图片/sdcard/1.png
+var img = images.read("/sdcard/1.png");
+//判断图片是否加载成功
+if(!img){
+ toast("没有该图片");
+ exit();
+}
+//在该图片中找色,指定找色区域为在位置(400, 500)的宽为300长为200的区域,指定找色临界值为4
+var point = findColor(img, "#00ff00", {
+ region: [400, 500, 300, 200],
+ threshold: 4
+ });
+if(point){
+ toast("找到啦:" + point);
+}else{
+ toast("没找到");
+}
+区域找色的简便方法。
+相当于
+images.findColor(img, color, {
+ region: [x, y, width, height],
+ threshold: threshold
+});
+该函数也可以作为全局函数使用。
+严格找色的简便方法。找色时要求颜色完全相等才匹配。
+相当于
+images.findColor(img, color, {
+ region: [x, y, width, height],
+ threshold: 0
+});
+该函数也可以作为全局函数使用。
+示例: +(通过找QQ红点的颜色来判断是否有未读消息)
+requestScreenCapture();
+launchApp("QQ");
+sleep(1200);
+var p = findColorEquals(captureScreen(), "#f64d30");
+if(p){
+ toast("有未读消息");
+}else{
+ toast("没有未读消息");
+}
+image <Image> 图片color <number> | <string> 要检测的颜色x <number> 要检测的位置横坐标y <number> 要检测的位置纵坐标threshold <number> 颜色相似度临界值,默认为16。取值范围为0~255。algorithm <string> 颜色匹配算法,包括:返回图片image在位置(x, y)处是否匹配到颜色color。用于检测图片中某个位置是否是特定颜色。
+一个判断微博客户端的某个微博是否被点赞过的例子:
+requestScreenCapture();
+//找到点赞控件
+var like = id("ly_feed_like_icon").findOne();
+//获取该控件中点坐标
+var x = like.bounds().centerX();
+var y = like.bounds().centerY();
+//截图
+var img = captureScreen();
+//判断在该坐标的颜色是否为橙红色
+if(images.detectsColor(img, "#fed9a8", x, y)){
+ //是的话则已经是点赞过的了,不做任何动作
+}else{
+ //否则点击点赞按钮
+ like.click();
+}
+img <Image> 大图片template <Image> 小图片(模板)options <Object> 找图选项找图。在大图片img中查找小图片template的位置(模块匹配),找到时返回位置坐标(Point),找不到时返回null。
+选项包括:
+threshold <number> 图片相似度。取值范围为0~1的浮点数。默认值为0.9。region <Array> 找图区域。参见findColor函数关于region的说明。level <number> 一般而言不必修改此参数。不加此参数时该参数会根据图片大小自动调整。找图算法是采用图像金字塔进行的, level参数表示金字塔的层次, level越大可能带来越高的找图效率,但也可能造成找图失败(图片因过度缩小而无法分辨)或返回错误位置。因此,除非您清楚该参数的意义并需要进行性能调优,否则不需要用到该参数。该函数也可以作为全局函数使用。
-相当于
-images.findColor(img, color, {
- region: [x, y, width, height],
- algorithm: algorithm,
- threshold: threshold,
- threads: threads
+一个最简单的找图例子如下:
+var img = images.read("/sdcard/大图.png");
+var templ = images.read("/sdcard/小图.png");
+var p = findImage(img, templ);
+if(p){
+ toast("找到啦:" + p);
+}else{
+ toast("没找到");
+}
+
稍微复杂点的区域找图例子如下:
+auto();
+requestScreenCapture();
+var wx = images.read("/sdcard/微信图标.png");
+//返回桌面
+home();
+//截图并找图
+var p = findImage(captureScreen(), wx, {
+ region: [0, 50],
+ threshold: 0.8
});
+if(p){
+ toast("在桌面找到了微信图标啦: " + p);
+}else{
+ toast("在桌面没有找到微信图标");
+}
+
images.findImageInRegion(img, template, x, y[, width, height, threshold])#
+区域找图的简便方法。相当于:
+images.findImage(img, template, {
+ region: [x, y, width, height],
+ threshold: threshold
+})
该函数也可以作为全局函数使用。
-images.findColorEquals(img, color, x, y, width, height, threads)#
-相当于
-images.findColor(img, color, {
- region: [x, y, width, height],
- algorithm: "equal",
- threads: threads
-});
-
该函数也可以作为全局函数使用。
-images.detectsColor(image, color, x, y[, threshold = 16, algorithm = "rgb"])#
-
-返回图片image在位置(x, y)处是否匹配到颜色color。有关threshold和algorithm的信息,参考findColor函数。
colors#
Stability: 2 - Stablecolors是颜色处理的工具对象。包含一些常用方法,包括android.graphics.Color的所有方法以及toString方法。
colors.toString(color)#
返回颜色值的字符串,格式为 #AARRGGBB。
colors.red(color)#
返回颜色color的R通道的值,范围0~255.
colors.green(color)#
返回颜色color的G通道的值,范围0~255.
colors.blue(color)#
返回颜色color的B通道的值,范围0~255.
colors.alpha(color)#
返回颜色color的Alpha通道的值,范围0~255.
colors.rgb(red, green, blue)#
@@ -226,20 +364,33 @@
返回这些颜色通道构成的整数颜色值。Alpha通道将是255(不透明)。
返回这些颜色通道构成的整数颜色值。
[captureScreen][] 返回的对象。
+表示一张图片,可以是截图的图片,或者本地读取的图片,或者从网络获取的图片。
返回以像素为单位图片宽度。
返回以像素为单位的图片高度。
+path <string> 路径把图片保存到路径path。(如果文件存在则覆盖)
+返回图片image在点(x, y)处的像素的ARGB值。
+该值的格式为0xAARRGGBB,是一个"32位整数"(虽然JavaScript中并不区分整数类型和其他数值类型)。
+坐标系以图片左上角为原点。以图片左侧边为y轴,上侧边为x轴。
findColor返回的对象。
+findColor, findImage返回的对象。表示一个点(坐标)。
横坐标。
索引 | @@ -86,6 +88,8 @@
索引 | diff --git a/app/src/main/assets/docs/modules.html b/app/src/main/assets/docs/modules.html index 9fa037c3..41b0d2a0 100644 --- a/app/src/main/assets/docs/modules.html +++ b/app/src/main/assets/docs/modules.html @@ -2,7 +2,7 @@
-索引 | diff --git a/app/src/main/assets/docs/overview.html b/app/src/main/assets/docs/overview.html index 5769cb99..9555aebc 100644 --- a/app/src/main/assets/docs/overview.html +++ b/app/src/main/assets/docs/overview.html @@ -2,7 +2,7 @@
-索引 | diff --git a/app/src/main/assets/docs/qa.html b/app/src/main/assets/docs/qa.html index 96139d94..de92f4b1 100644 --- a/app/src/main/assets/docs/qa.html +++ b/app/src/main/assets/docs/qa.html @@ -2,7 +2,7 @@
-索引 | diff --git a/app/src/main/assets/docs/shell.html b/app/src/main/assets/docs/shell.html index 2b2269b6..0c6c4b95 100644 --- a/app/src/main/assets/docs/shell.html +++ b/app/src/main/assets/docs/shell.html @@ -2,7 +2,7 @@
-索引 | diff --git a/app/src/main/assets/docs/timers.html b/app/src/main/assets/docs/timers.html index a55d17f3..e706a598 100644 --- a/app/src/main/assets/docs/timers.html +++ b/app/src/main/assets/docs/timers.html @@ -2,7 +2,7 @@
-索引 | diff --git a/app/src/main/assets/docs/ui.html b/app/src/main/assets/docs/ui.html index d7f61fd2..89614620 100644 --- a/app/src/main/assets/docs/ui.html +++ b/app/src/main/assets/docs/ui.html @@ -2,7 +2,7 @@
-索引 | diff --git a/app/src/main/assets/docs/util.html b/app/src/main/assets/docs/util.html index 7860ca6b..0958af14 100644 --- a/app/src/main/assets/docs/util.html +++ b/app/src/main/assets/docs/util.html @@ -2,7 +2,7 @@
-索引 | diff --git a/app/src/main/assets/docs/widgets-based-automation.html b/app/src/main/assets/docs/widgets-based-automation.html index 3732d9c9..2a4cacc6 100644 --- a/app/src/main/assets/docs/widgets-based-automation.html +++ b/app/src/main/assets/docs/widgets-based-automation.html @@ -2,7 +2,7 @@
-索引 | diff --git a/app/src/main/assets/docs/work-with-java.html b/app/src/main/assets/docs/work-with-java.html index 3e3d2480..e516c19d 100644 --- a/app/src/main/assets/docs/work-with-java.html +++ b/app/src/main/assets/docs/work-with-java.html @@ -2,7 +2,7 @@
-索引 |