AutoTouchDocuments

AutoTouch 文档

用户许可协议

该文档适用于5.2.6或以上版本

English Document

常见问题与答案

目录

Top

用法

怎样安装?

Top

怎样使用Activator?

Top

怎样录制?

Top

怎样播放?

Top

怎样截屏?

Top

怎样写一个脚本

Top

怎样在编辑脚本时使用函数“帮助”来方便地插入函数和参数?

Top

怎样在电脑上编写和管理脚本?

Top

怎样创建一个脚本Package项目?

Top

怎样加密脚本?

Top

怎样发布脚本到商城?

Top

怎样从商城下载和购买脚本?

Top

怎样购买授权?

License View

Top

脚本

基础

您可以从这里学习Lua语言的使用:《Lua Official Reference Manual

Top

开发工具

LuaStudio

Top

Coordinate, Size and Orientation System

AutoTouch的坐标体系是建立在像素的基础上,请看不同设备的像素尺寸, 比如iPhone X 的屏幕尺寸是1125 x 2436.

无论设备的方向是怎样的,坐标远点(0, 0)总是在App界面的左上角。所以在为AutoTouch编写脚本时,您只需要考虑相应的App的界面即可:坐标原点永远在App界面左上角。

比如

Top

扩展库

AutoTouch自带了一些第三方扩展库,但您也可以自己添加扩展库,只要将符合格式的 .so库文件放置在/usr/local/lib/lua/5.3,以及.lua文件放置在/var/mobile/Library/AutoTouch/Library/LuaLibraries,Respring即可启用这个库。当然为iOS平台编译扩展库是有点技术门槛的。

警告: 一定不要 使用跟扩展库相同的名字作为您自己脚本的文件名,如lcurl, lfs, lsqlite3

Top

LuaCURL

curl is used in command lines or scripts to transfer data. It is also used in cars, television sets, routers, printers, audio equipment, mobile phones, tablets, settop boxes, media players and is the internet transfer backbone for thousands of software applications affecting billions of humans daily.

It supports DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, Telnet and TFTP. curl supports SSL certificates, HTTP POST, HTTP PUT, FTP uploading, HTTP form based upload, proxies, HTTP/2, cookies, user+password authentication (Basic, Plain, Digest, CRAM-MD5, NTLM, Negotiate and Kerberos), file transfer resume, proxy tunneling and more.

Learn More

Examples:

-- HTTP Get
local curl = require('lcurl')
curl.easy{
    url = 'http://httpbin.org/get',
    httpheader = {
      "X-Test-Header1: Header-Data1",
      "X-Test-Header2: Header-Data2",
    },
    writefunction = alert -- use io.stderr:write()
  }
  :perform()
:close()

-- HTTP Post
curl.easy()
  :setopt_url('http://posttestserver.com/post.php')
  :setopt_writefunction(io.write)
  :setopt_httppost(curl.form() -- Lua-cURL guarantee that form will be alive
    :add_content("test_content", "some data", {
      "MyHeader: SomeValue"
    })
    :add_buffer("test_file", "filename", "text data", "text/plain", {
      "Description: my file description"
    })
    :add_file("test_file2", "BuildLog.htm", "application/octet-stream", {
      "Description: my file description"
    })
  )
  :perform()
:close()

Top

LuaSocket

LuaSocket is a Lua extension library which supported TCP, UDP, SMTP, HTTP, FTP protocols. Learn how to use it from the Learn More.

Top

LuaSec

LuaSec is a binding for OpenSSL library to provide TLS/SSL communication. It takes an already established TCP connection and creates a secure session between the peers.Learn More

Top

LuaSqlite3

LuaSQLite 3 is a thin wrapper around the public domain SQLite3 database engine. Learn More

Top

json.lua

json.lua provides operation methods on json. GitHub LICENSE

Usage

local json = require "json"
local jsonString =json.encode({ 1, 2, 3, { x = 10 } }) -- Returns '[1,2,3,{"x":10}]'
local luaTable = json.decode('[1,2,3,{"x":10}]') -- Returns { 1, 2, 3, { x = 10 } }

Top

Plist

Plist library provides a batch of methods to operate on plist files.

Usage

local plist = require("plist")

-- Read a plist file, return it as a lua table, return nil if failed.
local luaTable = plist.read(plistFilePath);

-- Write a lua table as a plist into a file, the foramt parameter specifis "xml", "binary" you want to write with.
local done = plist.write(luaTable, plistFilePath, format);

-- Load a plist string to lua table.
local luaTable = plist.load(plistString);

-- Dump a lua table to plist data with format "xml" or "binary"
local plistData = plist.dump(luaTable, format);

Top

Penlight

A set of pure Lua libraries focusing on input data handling (such as reading configuration files), functional programming (such as map, reduce, placeholder expressions,etc), and OS path management. GitHub Document LICENSE

It has plenty of modules:

Paths, Files and Directories

Application Support

Extra String Operations

Extra Table Operations

Iterators, OOP and Functional

Top

LuaFileSystem

LuaFileSystem is a Lua library developed to complement the set of functions related to file systems offered by the standard Lua distribution.

LuaFileSystem offers a portable way to access the underlying directory structure and file attributes.Learn More

Top

WebSocket

This module provides Lua modules for Websocket Version 13 conformant clients and servers.

GitHub LICENSE Examples

Usage

-- Client
-- connects to a echo websocket server running a localhost:8080
-- sends a strong every second and prints the echoed messages
-- to stdout

local ev = require'ev'
local ws_client = require('websocket.client').ev()

ws_client:on_open(function()
    print('connected')
  end)

ws_client:connect('ws://echo.websocket.org','echo')

ws_client:on_message(function(ws, msg)
    print('received',msg)
  end)

local i = 0

ev.Timer.new(function()
    i = i + 1
    ws_client:send('hello '..i)
end,1,1):start(ev.Loop.default)

ev.Loop.default:loop()

Top

扩展函数

扩展函数用于扩展Lua语言,使具备模拟人类操作手机的一些能力。还提供截屏、颜色查找、颜色匹配、图片匹配等功能。

Top

touchDown(id, x, y)

在屏幕的(x, y)坐标按下。

参数

参数 类型 说明
id 整型 手指编号,用来在单点、多点触摸标识一个手指,通常取值0到9。
x 浮点 屏幕x坐标
y 浮点 屏幕y坐标

返回值

示例

-- Press by one finger at coordinate (100,200).
touchDown(0, 100, 200); 

-- Press by three fingers at three locations on the screen.
touchDown(0, 100, 200);
touchDown(1, 200, 300);
touchDown(2, 300, 400);

-- Implement a tap function
function tap(x, y)
    touchDown(0, x, y);
    usleep(16000);
    touchUp(0, x, y);
end

-- Tap at (100, 200)
tap(100, 200);

Top

touchMove(id, x, y)

移动手指到(x, y)坐标。

参数

参数 类型 说明
id 整型 手指编号,用来在单点、多点触摸标识一个手指,通常取值0到9。
x 浮点 屏幕x坐标
y 浮点 屏幕y坐标

返回值

示例

-- Press by one finger at coordinate (100,200) and move the finger to coordinate (200,200).
touchDown(0, 100, 200);
usleep(16000);
touchMove(0, 200, 200);

-- Press by three fingers at three locations on the screen and move to new location.
touchDown(0, 100, 200);
touchDown(1, 200, 300);
touchDown(2, 300, 400);
usleep(16000);
touchMove(0, 150, 250);
touchMove(1, 250, 350);
touchMove(2, 350, 450);

Top

touchUp(id, x, y)

从(x, y)坐标抬起手指。

参数

参数 类型 说明
id 整型 手指编号,用来在单点、多点触摸标识一个手指,通常取值0到9。
x 浮点 屏幕x坐标
y 浮点 屏幕y坐标

返回值

示例

-- Click the screen once by one finger at coordinate (100,200).
touchDown(0, 100, 200);
usleep(16000);
touchUp(0, 100, 200);

-- Press by three fingers at three locations on the screen, move to new location, and then lift the finger.
touchDown(0, 100, 200);
touchDown(1, 200, 300);
touchDown(2, 300, 400);
usleep(16000);
touchMove(0, 150, 250);
touchMove(1, 250, 350);
touchMove(2, 350, 450);
usleep(16000);
touchUp(0, 150, 250);
touchUp(1, 250, 350);
touchUp(2, 350, 450);

Top

keyDown(keyType)

模拟实体键按下动作。

参数

参数 类型 说明
keyType 整型 实体键标识,现在可使用这些实体按键.

返回值

示例

-- Simulate the pressing of Home Key.
keyDown(KEY_TYPE.HOME_BUTTON);

-- How to simulate a key pressing?
function keyPress(keyType)
    keyDown(keyType);
    usleep(10000);
    keyUp(keyType);
end
keyPress(KEY_TYPE.HOME_BUTTON);

-- How to simulate a screen lock function?
function lockScreen()
    keyDown(KEY_TYPE.POWER_BUTTON);
    keyUp(KEY_TYPE.POWER_BUTTON);
end

-- How to simulate a screen unlock function?
function unlockScreen()
    keyDown(KEY_TYPE.POWER_BUTTON);
    keyUp(KEY_TYPE.POWER_BUTTON);

    usleep(1000000);

    local w, h = getScreenResolution();

    local x = 10;
    local gap = 120;
    touchDown(0, x, 200);
    while x < w do
        x = x + gap;
        usleep(16000);
        touchMove(0, x, 200);
    end
    touchUp(0, x, 200);
end

Top

keyUp(keyType)

模拟实体键抬起动作。

参数

参数 类型 说明
keyType 整型 实体键标识,现在可使用这些实体按键.

返回值

示例

-- Simulate the action of pressing and lifting Home Key.
keyDown(KEY_TYPE.HOME_BUTTON);
usleep(10000);
keyUp(KEY_TYPE.HOME_BUTTON);

Top

getColor(x, y)

在当前屏幕获取指定坐标位置像素点的颜色值。

参数

参数 类型 说明
x 浮点 屏幕x坐标
y 浮点 屏幕y坐标

返回值

返回值 类型 说明
color 整型 像素点的整数类型颜色值

示例

local color = getColor(100, 200)
alert(string.format("Pixel color is :%d", color))
-- Pop up color: 16777215

-- Keep gettting color of a location until it matches a specify color
local color
repeat
   color = getColor(100, 200)
   usleep(50000) -- Wait a while
until( color == 123456 )
-- Continue to do what's next

Top

getColors(locations)

获取屏幕多个点的颜色值。

参数

参数 类型 说明
locations 多个坐标点的列表,如{ {x1,y1}, {x2,y2}, {x3,y4} }

返回值

返回值 类型 说明
colors 对应坐标点的颜色值的列表。

示例

local result = getColors({ {100, 200}, {200, 300}, {300, 400} });
for i, v in pairs(result) do
    log(string.format("Gotten color:%d", v));
end

Top

findColor(color, count, region, debug, rightToLeft, bottomToTop)

在当前屏幕查找所有匹配指定颜色的像素点坐标。

参数

参数 类型 说明 可选 默认值
color 整型 匹配的颜色值。  
count 整型 最多查找多少个匹配的像素点,默认是0,表示查找所有匹配点。如果是1,表示查出第一个即可,若是2表示查出前两个即可。查找的个数越少速度越快。 0
region 限定在指定区域进行查找。该参数是包含{x, y, width, height}四个值的一个table类型,四个值分别是矩形区域的左上x,y坐标,和矩形区域的宽和高,比如{100, 100, 200, 200}。如果不想限定区域,传入nil即可。 nil
debug 布尔 如果传入true, 在查找的同时将会产生一个文件名以”-Debug.PNG”结尾的图片文件来标示查找的区域。 false
rightToLeft 布尔 是否从右向左查找,默认是从左向右. false
bottomToTop 布尔 是否从下向上查找,默认是从左向右. false

返回值

返回值 类型 说明
locations Coordinates of matched pixel points. For example: { {x1, y1}, {x2, y2}, … }

示例

-- Example:
local result = findColor(0x0000ff, 2, nil);
for i, v in pairs(result) do
    log(string.format("Found pixel: x:%f, y:%f", v[1], v[2]));
end

-- Example: 从右向左,从下向上查找
local result = findColor(0x0000ff, 2, nil, nil, true, true);
for i, v in pairs(result) do
    log(string.format("Found rect at: x:%f, y:%f", v[1], v[2]));
end

-- Example:
local result = findColor(0x00ddff, 0, {100, 50, 200, 200});
for i, v in pairs(result) do
    log(string.format("Found pixel: x:%f, y:%f", v[1], v[2]));
end

-- Example:
local region = {100, 50, 200, 200};
local result = findColor(0x00ddff, 0, region);
for i, v in pairs(result) do
    log(string.format("Found pixel: x:%f, y:%f", v[1], v[2]));
end

-- Example:
-- Keep finding a speficied color until it's found.
local locations
repeat
   local locations = findColor(0x0000ff, 2, nil);
   usleep(50000) -- Wait a while
until(#locations > 0)
-- Log the locations if found
for i, v in pairs(locations) do
    log(string.format("Found pixel: x:%f, y:%f", v[1], v[2]));
end

内部实现

function findColor(color, count, region, debug, rightToLeft, bottomToTop)
    return findColors(, count, region, debug, rightToLeft, bottomToTop);
end

Top

findColors(colors, count, region, debug, rightToLeft, bottomToTop)

查找所有匹配“指定颜色及它们的相对位置”的矩形区域,返回找到的矩形区域中匹配第一个颜色的像素的坐标。该函数具有比findImage高得多的查找效率和可用度,比如查找一个按钮,不用像findImage一样去匹配整个按钮图片,只用匹配按钮中的几个锚点的颜色和它们的相对位置即可。可以使用count参数限定希望查找结果的个数,0表示查找所有,1标识查找第1个,2表示查找前两个。region参数可以用来限定查找的区域,为{x, y, width, height}的table类型,不限定时传入nil即可。

这个函数可以使用脚本编辑界面“扩展函数”中的“辅助”工具,快速地从屏幕截图中选择几个锚点颜色,并自动获取它们的相对位置来插入到函数参数位置。 下图箭头所指像素点的坐标为返回值的坐标。

IMG_0361.PNG-101.9kB

参数

参数 类型 说明 可选 默认值
colors 包含一些颜色以及它们的相对位置,比如{ {0x00ddff,0,0}, {0x00eeff,10,10}, {0x0000ff,0,20} },大table中的小table包含三个值,第一个是颜色值,第二个和第三个值是该颜色相对于第一个颜色的相对位置,其中第一个颜色的table的相对位置总是(0,0),比如{0x00ddff,0,0}这个颜色,而后续的几个颜色的位置值,是它们相对于第一个颜色的位置。用这些颜色和相对位置关系,可以从屏幕中匹配到符合的矩形区域。  
count 整型 最多查找多少个匹配的像素点,默认是0,表示查找所有匹配点。如果是1,表示查出第一个即可,若是2表示查出前两个即可。查找的个数越少速度越快。 0
region 限定在指定区域进行查找。该参数是包含{x, y, width, height}四个值的一个table类型,四个值分别是矩形区域的左上x,y坐标,和矩形区域的宽和高,比如{100, 100, 200, 200}。如果不想限定区域,传入nil即可。 nil
debug 布尔 如果传入true, 在查找的同时将会产生一个文件名以”-Debug.PNG”结尾的图片文件来标示查找的区域。 false
rightToLeft 布尔 是否从右向左查找,默认是从左向右. false
bottomToTop 布尔 是否从下向上查找,默认是从左向右. false

返回值

返回值 类型 说明
locations 查找到的矩形区域中匹配第一个颜色的像素点的坐标。比如:{ {x1, y1}, {x2, y2}, …}

示例

-- Example:
local result = findColors({ {0x00ddff,0,0}, {0x00eeff,10,10}, {0x0000ff,0,20} }, 2, nil, true);
for i, v in pairs(result) do
    log(string.format("Found rect at: x:%f, y:%f", v[1], v[2]));
end

-- Example: 从右向左,从下向上查找
local result = findColors({ {0x00ddff,0,0}, {0x00eeff,10,10}, {0x0000ff,0,20} }, 2, nil, true, true);
for i, v in pairs(result) do
    log(string.format("Found rect at: x:%f, y:%f", v[1], v[2]));
end

-- Example:
local colors = { {0x00ddff,0,0}, {0x00eeff,10,10}, {0x0000ff,0,20} };
local result = findColors(colors, 0, nil, true);
for i, v in pairs(result) do
    log(string.format("Found rect at: x:%f, y:%f", v[1], v[2]));
end

-- Example:
local colors = { {0x00ddff,0,0}, {0x00eeff,10,10}, {0x0000ff,0,20} };
local region = {100, 50, 200, 200};
local result = findColors(colors, 0, region);
for i, v in pairs(result) do
    log(string.format("Found rect at: x:%f, y:%f", v[1], v[2]));
end

Top

findImage(targetImagePath, count, threshold, region, debug)

在当前屏幕查找匹配指定图片的区域,以table形式返回找到的所有区域的左上角坐标。

Imgur

参数

参数 类型 说明 可选 默认值
targetImagePath 字符串 需要查找的图片的路径,比如 “images/gold.PNG”. JPG/JPEG/PNG/BMP格式的图片都支持。如果路径以“/”开头,将被视为绝对路径,否则被视为相对路径,大多时候我们应该使用相对路径,特别是针对.ate包的情况。  
count 整型 最多查找多少个匹配的像素点,默认是0,表示查找所有匹配点。如果是1,表示查出第一个即可,若是2表示查出前两个即可。查找的个数越少速度越快。 0
threshold 浮点 查找的精度, 最大值1表示完全相同, 最下值-1表示完全不相同, 默认是0.9, 通常0.99表现就很好. 如果你只想使用默认值,那么传入nil即可 0.9
region 限定在指定区域进行查找。该参数是包含{x, y, width, height}四个值的一个table类型,四个值分别是矩形区域的左上x,y坐标,和矩形区域的宽和高,比如{100, 100, 200,    
200}。如果不想限定区域,传入nil即可。 全屏幕区域    
debug 布尔 如果传入true, 在查找的同时将会产生一个文件名以”-Debug.PNG”结尾的图片文件来标示查找的区域。 false
method integer 查找方法,默认是1,如果你想使用更智能的方法,请传入2,方法2能匹配相同图形但是大小,方向,颜色有改变的目标 YES 1

返回值

返回值 类型 说明
center locations 匹配区域中心坐标的列表. 比如:{ {x1, y1}, {x2, y2}, …}

示例

-- Example:
local result = findImage("images/Gold.PNG", 5, 0.99, nil, true)
for i, v in pairs(result) do
    log(string.format("Found rect at: x:%f, y:%f", v[1], v[2]));
end

-- Example:
local result = findImage("images/Gold.PNG", nil, nil, nil, true)
for i, v in pairs(result) do
    log(string.format("Found rect at: x:%f, y:%f", v[1], v[2]));
end

-- Example:
local result = findImage("images/Gold.PNG", 3)
for i, v in pairs(result) do
    log(string.format("Found rect at: x:%f, y:%f", v[1], v[2]));
end

-- Example:
local imagePath = "images/spirit.PNG";
local region = {100, 100, 300, 300};
local result = findImage(imagePath, 2, 0.98, region, true)
for i, v in pairs(result) do
    local x = v[1], y = v[2];

    log(string.format("Found rect at: x:%f, y:%f", x, y));
    
    -- Click the found location once.
    tap(x, y);
    usleep(16000);
end

-- Example:
local imagePath = "images/spirit.PNG";
local region = {100, 100, 300, 300};
-- Use method 2 to find image
local result = findImage(imagePath, 2, 0.98, region, true, 2)

Top

screenshot(filePath, region)

全屏幕或者指定区域截屏。

如果filePath参数为nil,它将截屏以PNG格式图片保存到系统相册的“AutoTouch”文件夹下。如果指定了filePath,则会保存到filePath位置。

如果region参数为nil,它将对全屏幕截屏,否则只对指定区域截屏。

点击AutoTouch本地脚本界面的右上角的“+”按钮,选择“复制到这里”,可以将一个图片从iOS系统相册复制到AutoTouch目录,供在本定使用。这意味着您可以利用第三方工具对iOS相册中的图片进行编辑,然后复制到这里供AutoTouch使用。

参数

参数 类型 说明 可选 默认值
filePath 字符串 截图保存地址 默认在系统相册的”AutoTouch”目录下
region 截屏区域, {x, y, width, height}, 如{100,100,200,200}。如果不像指定,直接传入nil,将全屏幕截图。 nil

返回值

示例

-- Take shot of the whole screen and save into  "AutoTouch" album of iOS Photo Library.
screenshot();

-- Take a screenshot of the whole screen and save to the specified path, if no PNG as path extension, .PNG will automatically added.
screenshot ("images/screenshot1");

-- Take a screenshot of the specified area and save.
screenshot ("images/screenshot2.PNG", {100, 100, 200, 200});

-- Take a screenshot of the specified area and save into  "AutoTouch" album of iOS Photo Library.
screenshot (nil, {100, 100, 200, 200});

Top

appRun(appIdentifier)

运行一个App

参数

参数 类型 说明
appIdentifier 字符串 应用标识,如”com.apple.mobilesafari”。您可以从这里查找应用标识。

返回值

示例

-- Run Safari
appRun("com.apple.mobilesafari");

Top

appKill(appIdentifier)

关闭一个App

参数

参数 类型 说明
appIdentifier 字符串 应用标识,如”com.apple.mobilesafari”。您可以从这里查找应用标识。

返回值

示例

-- Kill the running Safari
appKill("com.apple.mobilesafari");

Top

appState(appIdentifier)

获取一个App的运行状态。

参数

参数 类型 说明
appIdentifier 字符串 应用标识,如”com.apple.mobilesafari”。您可以从这里查找应用标识。

返回值

返回值 类型 说明
state 字符串 字符串类型的状态, 它们是: “NOT RUNNING”, “ACTIVATED”, “DEACTIVATED”。

示例

-- Get the state of Safari.
local state = appState("com.apple.mobilesafari");
alert(string.format("State of Safari: %s", state));
-- Pop up the state of Safari: "ACTIVATED"

Top

rootDir()

AutoTouch存放本地脚本等文件的根目录,也就是: “/var/mobile/Library/AutoTouch/Scripts/”.

参数

返回值

参数 类型 说明
dir 字符串 AutoTouch存放文件的根目录。

示例

local dirPath = rootDir();
alert(dirPath);
-- Popup "/var/mobile/Library/AutoTouch/Scripts/"

Top

currentPath()

获得当前运行脚本的全路径。

参数

返回值

参数 类型 说明
path 字符串 当前运行脚本的全路径。

示例

local path = currentPath();
alert(path);
-- Popup "/var/mobile/Library/AutoTouch/Scripts/test.lua"

Top

usleep(microseconds)

停顿若干个微秒,即1/1000000秒

参数

参数 类型 说明
microseconds 整型 停顿多少微秒。

返回值

示例

-- Sleep 1 second.
usleep(1000000);

Top

log(content)

记录日志,可在日志界面查看。

参数

参数 类型 说明
content 字符串 日志内容

返回值

示例

log("play here...");

Top

alert(message)

弹出框提示信息

参数

参数 类型 说明
message 字符串 信息内容

返回值

示例

alert("Hello World!");

Top

toast(message, delay)

toast形式展示信息若干秒。

参数

参数 类型 说明
message 字符串 信息内容
delay 整型 展示多久,默认2秒。

返回值

示例

toast("Hello I'm a toast!", 5); -- Show message for 5 seconds.
toast("Hello again!"); -- Show message for 2 seconds.

Top

vibrate()

震动一次,没有震动功能的设备无效果 ,比如iPod Touch和iPad

参数

返回值

示例

-- Vibrate once.
vibrate();

Top

playAudio(audioFile, times)

播放指定位置的音频文件。

参数

参数 类型 说明
audioFile 字符串 音频文件绝对路径。
times 整型 重复播放次数。0表示无限重复。

返回值

示例

-- Play audio infinitely.
playAudio("/var/audio.mp3", 0);

Top

stopAudio()

停止播放音频。

参数

返回值

示例

-- Stop playing audio.
stopAudio();

Top

getOrientation()

获取屏幕方向。返回整型值,具体对应关系请看“屏幕方向类型”。

参数

返回值

参数 类型 说明
orientation 整型 屏幕方向,可能是这些值

示例

local o = getOrientation();
alert(string.format("Screen orientation is : %d", 0))
-- Pop up the orientation 2 of the screen, and mark the reversed screen.

Top

getScreenResolution()

获取屏幕像素分辨率。

参数

返回值

参数 类型 说明
width 整型 宽度
height 整型 高度

示例

local w, h = getScreenResolution();
alert(string.format("Resolution of iPhone 6 Plus: width:%d, height:%d", w, h));
-- iPhone 6 Plus’s resolution width is 1242 and resolution height is 2208.

Top

getSN()

获取设备序列号。

参数

返回值

参数 类型 说明
SN 字符串 设备序列号。

示例

local sn = getSN();
alert(string.format("SN is : %s", sn));
-- Popup shows the SN of the device: C15NFK32TWD2

Top

getVersion()

获取当前AutoTouch版本号。

参数

返回值

参数 类型 说明
version 字符串 AutoTouch版本号。

示例

local version = getVersion();
alert(string.format("Current version of AutoTouch is : %s", version));
-- Pop up shows current version of AutoTouch: 3.5.3-4

Top

frontMostAppId()

当前在前台运行的App的标识。

参数

返回值

返回值 类型 说明
App Identifier 字符串 App标识

示例

local appId = frontMostAppId();
alert(string.format("Current front most App is : %s", appId));

Top

frontMostAppOrientation()

当前前台运行的App的界面方向,可能是这些值

参数

返回值

返回值 类型 说明
orientation 整型 屏幕方向,可能是这些值

示例

local orientation = frontMostAppOrientation();
alert(string.format("Orientation of current front most App is : %d", orientation));

Top

intToRgb(intColor)

将整型颜色值转换为R, G, B单独的值。

参数

参数 类型 说明
intColor 整型 整型颜色值。

返回值

返回值 类型 说明
R 整型 Red值
G 整型 Green值
B 整型 Blue值

示例

local r, g, b = intToRgb(0x2b2b2b);
alert(string.format("R:%d, G:%d, B:%d", r, g, b));

Top

rgbToInt(r, g, b)

将R, G, B色值转换为整形颜色值。

参数

参数 类型 说明
R 整型 Red值
G 整型 Green值
B 整型 Blue值

返回值

返回值 类型 说明
intColor 整型 整型颜色值。

示例

local intColor = rgbToInt(200, 255, 100);
alert(string.format("Int type color: %d", intColor));

Top

copyText(text)

将一段文本复制到剪贴板

参数

参数 类型 说明
text 字符串 文本

返回值

示例

copyText("This is a copied text!");

Top

clipText()

获得剪贴板中的文本

参数

返回值

返回值 类型 说明
text 字符串 文本

示例

local text = clipText();
alert(text);
-- Popup shows the text to be copied: "This is a copied text!";

Top

inputText(text)

输入文本到当前选中的输入框中。inputText(“\b”)可以退格删除一个字符。 注意: 在AutoTouch设置 > 功能中启用此项功能。

参数

参数 类型 说明
text 字符串 文本

返回值

示例

inputText("Let's input some text automatically without tapping the keyboard!");
--  Delete 3 character by inputing 3 backspaces.
inputText("\b\b\b"); 

Top

dialog(controls, orientations)

显示一个自定义的对话框,用法请见下面的示例。

参数

参数 类型 说明 可选 默认值
controls 控件列表. 可以使用这些控件 these dialog box controls  
orientations 对话框限定的方向 方向值. 自动

返回值

返回值 类型 说明
被点击按钮的Flag 整型  

示例

local label = {type=CONTROLLER_TYPE.LABEL, text="Would you mind to provide some personal informations?"}
local nameInput = {type=CONTROLLER_TYPE.INPUT, title="Name:", key="Name", value="Bob"}
local positionPicker = {type=CONTROLLER_TYPE.PICKER, title="Position:", key="Position", value="CEO", options={"CEO", "CTO", "CFO", "CXO"} }
local developerSwitch = {type=CONTROLLER_TYPE.SWITCH, title="A Developer:", key="ADeveloper", value=1}

-- It's an option for users to determine weather the inputs should be remembered, if you use this control in the dialog.
local remember = {type=CONTROLLER_TYPE.REMEMBER, on=false}

--[[ Define buttons:
type = CONTROLLER_TYPE.BUTTON
title = Button text
color = Button background color, it's optional, the default value is 0x428BCA
width = Button width upon percentage of the dialog width, it's optional, the default value is 0.5, max value is 1.0.
flag = Integer type of button flag for identifying which button is tapped.
collectInputs = Boolean type specifying wheather the dialog should collect the inputs while this button is tapped. ]]--
local btn1 = {type=CONTROLLER_TYPE.BUTTON, title="Button 1", color=0x71C69E, width=0.8, flag=1, collectInputs=false}
local btn2 = {type=CONTROLLER_TYPE.BUTTON, title="Button 2", color=0xFF5733, flag=2, collectInputs=true}
local btn3 = {type=CONTROLLER_TYPE.BUTTON, title="Button 3", color=0xFFB7D0, width=1.0, flag=3, collectInputs=false}
local btn4 = {type=CONTROLLER_TYPE.BUTTON, title="Button 4", width=1.0, flag=4, collectInputs=true}

local controls = {label, nameInput, positionPicker, developerSwitch, btn1, btn2, remember, btn3, btn4}

-- Pop up the dialog. After popping, the script will suspend waiting for user input until any button is tapped, then returns the flag of tapped button.

-- What orientations the dialog could be, it's optional
local orientations = { ORIENTATION_TYPE.LANDSCAPE_LEFT, ORIENTATION_TYPE.LANDSCAPE_RIGHT };

local result = dialog(controls, orientations);

if (result == 1) then
    alert(string.format("name:%s, birthday:%s, gender:%d", nameInput.value, positionPicker.value, developerSwitch.value))
else
    alert(string.format("Dialog returned: %s", result))
end

dialog

Top

clearDialogValues(script)

清除之前记住的对话框的输入值

参数

参数 类型 说明
script 字符串 对话框所在的脚本或Package

返回值

示例

-- There is a dialog.lua script in the scripts list
clearDialogValues("dialog.lua");

Top

openURL(urlString)

打开一个App的URL scheme. 请见Always-Updated List of iOS App URL Scheme Names and example: Google Maps URL Scheme for iOS

参数

参数 类型 说明
urlString 字符串 目标URL Scheme

返回值

示例

openURL("https://autotouch.net")
openURL("prefs:root=General&path=About")
openURL("musics://")
openURL("itms-apps://itunes.apple.com")
openURL("tel://+1123456")
openURL("clashofclans://")

Top

isLicensed()

检查当前AutoTouch是否已授权

参数

返回值

返回值 类型 说明
licensed 布尔 是否已授权

示例

if isLicensed() then
    alert("Your device is licensed by AutoTouch!");
end

Top

setAutoLaunch(scriptPath, on)

对一个脚本开启或关闭开机自动启动

参数

参数 类型 说明
filePath 字符串 脚本的相对地址,如”/Records/test.lua”。
on 布尔 true是打开,false是关闭

返回值

示例

setAutoLaunch("/Records/test.lua", on);

Top

listAutoLaunch()

列出所有开机启动的脚本

参数

返回值

返回值 类型 说明
scripts 开机启动的脚本的相对地址

示例

local scripts = listAutoLaunch()
for i, v in pairs(scripts) do
    alert(v);
end

Top

stop()

停止当前脚本的执行

参数

返回值

Examples

-- 退出当前脚本执行
stop();

Top

ocr(region, languages, threshold, whitelist, blacklist, timeout, tessdataParentDir, debug)

基于tesseract ocr实现的文字识别。

参数

参数 类型 说明 可选 默认值
region 在屏幕的哪个区域识别. 全屏幕
languages 字符串 识别的语言。默认AutoTouch已经自带训练数据集 eng.traineddata/var/mobile/Library/AutoTouch/Library/tessadata目录下, 你也可以从这里下载其它所需语言https://github.com/tesseract-ocr/tessdata/tree/3.04.00. 甚至你可能需要自己训练识别数据集,只要放在tessadata目录下就可以调用. “eng”
threshold 整型 调节此值来提高准确度,取值范围是0-255 100
whitelist 字符串 希望识别出哪些字符,如”0123456789”就会只识别出数字. NULL
blacklist 字符串 哪些字符是不可能存在的 NULL
timeout 整型 识别超时时间,单位秒 3
tessdataParentDir 字符串 训练集tessdata文件夹的父文件夹, 搜索一下tesseract ocrtessdata来了解更多. 如果此参数以”/”开头,将被视为绝对地址,否则是相对地址。AutoTouch将在此目录下寻找tessdata文件夹,而真正的traineddata将处在tessdata目录中。那个目录必须名为tessdata /var/mobile/Library/AutoTouch/Library/
debug 布尔 如果传入true, 在查找的同时将会产生一个文件名以”ocr-Debug.PNG”结尾的图片文件来标示查找的区域。 false

返回值

返回值 类型 说明
识别出的文字 字符串 识别出的文字.

示例

-- Example:
local result = ocr({100, 100, 300, 300}, 'eng', 220)

-- Example:
local result = ocr({100, 100, 300, 300}, 'eng+fra', 220, '0123456789 ', '..........', 5, nil, true)

-- Example:
-- Find English+France at the specified region with threshold 220, using the traindata in `tessdata` folder at the current directory.
-- Like this example, you can put the traindata inside your package project, so you can encrypt and pack them to a single bot.

--+TestOrcProject.at
--+----tesseract
--+--------eng.traindata
--+--------fra.traindata
--+----main.lua
--+----worker.lua

-- `./` means under current directory, it will find `tessdata` folder in current directory.
local result = ocr({100, 100, 300, 300}, 'eng+fra', 220, nil, nil, 5, './', true)

Top

appInfo(appIdentifier)

获取指定App的displayName,executablePath,bundleContainerPath,dataContainerPath信息。

参数

参数 类型 说明
appIdentifier 字符串 应用标识,如”com.apple.mobilesafari”。您可以从这里查找应用标识。

返回值

返回值 类型 说明
info App信息的table

示例

local result = appInfo("com.microsoft.Office.Outlook")
alert(table.tostring(result))

setTimer(scriptPath, fireTime, repeat, interval)

Set timer for a script.

Parameters

Parameter Type Specification Optional Default
filePath string Relative path of a script inside script directory of AutoTouch, such as “/Records/test.lua”. NO  
fireTime string or integer When should the timer trigger. If this parameter is an integer, it means you want it trigger after n seconds from now on, if it is a string, it should be a datetime with format “2019-09-17 08:12:52” which means the timer will trigger at this time. NO  
repeat boolean If the timer should run repleatly. NO  
interval integer Repeat interval in seconds. NO  

Return

Return Type Specification
done boolean If it is successful.

Examples

-- trigger after 1000 seconds
local done = setTimer("/Records/test.lua", 1000, false, 0);

-- trigger at 2019-09-17 08:12:52 and repeat every 10000 seconds
local done = setTimer("/Records/test.lua", "2019-09-17 08:12:52", true, 10000);

Top

removeTimer(scriptPath)

Remove timer of a script.

Parameters

Parameter Type Specification Optional Default
filePath string Relative path of a script inside script directory of AutoTouch, such as “/Records/test.lua”. NO  

Return

Return Type Specification
done boolean If it is successful.

Examples

local done = removeTimer("/Records/test.lua");

Top

Top

HTTP APIs

AutoTouch也提供了一些HTTP接口,您可以用HTTP请求的方式在局域网远程调用,这些接口也就是Web Server使用的接口。

运行一个脚本

GET /control/start_playing?path=/scriptPath

参数

参数 说明
path 脚本相对路径

返回值

Successful:

{
    "status": "success"
}

Failed:

{
    "status": "fail",
    "info": ""
}

示例

HTTP GET http://192.168.1.99:8080/control/start_playing?path=/scriptPath
{
    "status": "fail",
    "info": "Script doesn't exist."
}

Top

停止运行一个脚本

GET /control/stop_playing?path=/scriptPath

参数

参数 说明
path 脚本相对路径

返回值

Successful:

{
    "status": "success"
}

Failed:

{
    "status": "fail",
    "info": ""
}

示例

HTTP GET http://192.168.1.99:8080/control/start_playing?path=/scriptPath
{
    "status": "fail",
    "info": "Script doesn't exist."
}

Top

列出指定目录下的全部脚本

GET /files?path=/Records

参数

参数 说明
path 指定目录

返回值

{
    "files": [
        {
            "filePath": "",
            "fileSize": "",
            "iconName": ""
        },
        ...
    ]
}

示例

HTTP GET http://192.168.1.99:8080/files?path=/Records
{
    "files": [
        {
            "filePath": "/Records/2019-03-10: 12:00:00.lua",
            "fileSize": "12kb",
            "iconName": "script"
        },
        ...
    ]
}

Top

创建一个新文件夹

GET /file/newFolder?path=/Test

参数

参数 说明
path 新文件夹路径

返回值

Successful:

{
    "status": "success"
}

Failed:

{
    "status": "fail",
    "info": ""
}

示例

HTTP GET http://192.168.1.99:8080/file/newFolder?path=/Test
{
    "status": "success"
}

Top

创建一个新文件

GET /file/new?path=/newFilePath

参数

参数 说明
path 新文件路径

返回值

Successful:

{
    "status": "success"
}

Failed:

{
    "status": "fail",
    "info": ""
}

示例

HTTP GET http://192.168.1.99:8080/file/new?path=/newFilePath
{
    "status": "fail",
    "info": "Invalid file path"
}

Top

删除一个文件

GET /file/delete?path=/filePathToDelete

参数

参数 说明
path 要删除的文件的路径

返回值

Successful:

{
    "status": "success"
}

Failed:

{
    "status": "fail",
    "info": ""
}

示例

HTTP GET http://192.168.1.99:8080/file/delete?path=/filePathToDelete
{
    "status": "fail",
    "info": "Invalid file path"
}

Top

重命名一个文件或文件夹

GET /file/rename?path=/oldFilePath&newPath=newFilePath

参数

参数 说明
path 旧路径
newPath 新路径

返回值

Successful:

{
    "status": "success"
}

Failed:

{
    "status": "fail",
    "info": ""
}

示例

HTTP GET http://192.168.1.99:8080/file/rename?path=/oldFilePath&newPath=newFilePath
{
    "status": "fail",
    "info": "Invalid file path"
}

Top

固定值

Top

Types of physical keys

说明
KEY_TYPE.HOME_BUTTON Home Button
KEY_TYPE.VOLUME_DOWN_BUTTON Volume – Button
KEY_TYPE.VOLUME_UP_BUTTON Volume + Button
KEY_TYPE.POWER_BUTTON Power Button

Top

Types of dialog controls

说明
CONTROLLER_TYPE.LABEL Text label
CONTROLLER_TYPE.INPUT Input box
CONTROLLER_TYPE.PICKER Picker
CONTROLLER_TYPE.SWITCH Switch
CONTROLLER_TYPE.BUTTON Button
CONTROLLER_TYPE.REMEMBER Switch for remember user inputs

Top

Types of screen orientations

说明
ORIENTATION_TYPE.UNKNOWN Unknown orientation. Practical value is 0.
ORIENTATION_TYPE.PORTRAIT Portrait screen. Home button is at the bottom. Practical value is 1.
ORIENTATION_TYPE.PORTRAIT_UPSIDE_DOWN Upside-down portrait screen. Home button on the top. Practical value is 2.
ORIENTATION_TYPE.LANDSCAPE_LEFT Landscape left screen. Home Key is in the left. Practical value is 3.
ORIENTATION_TYPE.LANDSCAPE_RIGHT Landscape right screen. Home key is in the right. Practical value is 4.

Top