AutoTouchDocuments

AutoTouch 文档

该文档适用于5.1.2-7或以上版本

English Document

常见问题与答案

目录

用法

怎样安装?

怎样使用Activator?

怎样录制?

怎样播放?

怎样截屏?

怎样写一个脚本

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

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

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

怎样加密脚本?

怎样发布脚本到商城?

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

怎样购买授权?

License View

脚本

基础

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

开发工具

LuaStudio

Coordinate, Size and Orientation System

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

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

比如

扩展库

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

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

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()

LuaSocket

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

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

LuaSqlite3

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

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 } }

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);

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

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

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()

扩展函数

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

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);

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);

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);

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

keyUp(keyType)

模拟实体键抬起动作。

参数

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

返回值

示例

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

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

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

findColor(color, count, region, debug)

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

参数

参数 类型 说明 可选 默认值
color 整型 匹配的颜色值。  
count 整型 最多查找多少个匹配的像素点,默认是0,表示查找所有匹配点。如果是1,表示查出第一个即可,若是2表示查出前两个即可。查找的个数越少速度越快。 0
region You only search the result in the specified area. This area is the table type including four values {x, y, width, height}. The four values respectively represent the coordinate x, coordinate y, width, and height of the rectangular area. {100,100,200,200} is an example. If you do not want to specify the area, just input nil. nil
debug 布尔 If pass debug=true, it will produce a image ends with “-Debug.PNG” marked the matching areas. false

返回值

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

示例

-- Example 1:
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 2:
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 3:
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 4:
-- 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)
    return findColors({ {color,0,0} }, count, region);
end

findColors(colors, count, region, debug)

查找所有匹配“指定颜色及它们的相对位置”的矩形区域,返回找到的矩形区域中匹配第一个颜色的像素的坐标。该函数具有比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

返回值

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

示例

-- Example 1:
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 2:
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 3:
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

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

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

Imgur

参数

参数 类型 说明 可选 默认值
targetImagePath 字符串 需要查找的图片的相对路,比如 “images/gold.PNG”. JPG/JPEG/PNG/BMP格式的图片都支持  
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 1:
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 2:
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 3:
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 4:
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 5:
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)

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});

appRun(appIdentifier)

运行一个App

参数

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

返回值

示例

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

appKill(appIdentifier)

关闭一个App

参数

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

返回值

示例

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

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"

rootDir()

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

参数

返回值

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

示例

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

currentPath()

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

参数

返回值

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

示例

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

usleep(microseconds)

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

参数

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

返回值

示例

-- Sleep 1 second.
usleep(1000000);

log(content)

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

参数

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

返回值

示例

log("play here...");

alert(message)

弹出框提示信息

参数

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

返回值

示例

alert("Hello World!");

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.

vibrate()

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

参数

返回值

示例

-- Vibrate once.
vibrate();

playAudio(audioFile, times)

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

参数

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

返回值

示例

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

stopAudio()

停止播放音频。

参数

返回值

示例

-- Stop playing audio.
stopAudio();

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.

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.

getSN()

获取设备序列号。

参数

返回值

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

示例

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

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

frontMostAppId()

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

参数

返回值

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

示例

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

frontMostAppOrientation()

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

参数

返回值

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

示例

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

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));

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));

copyText(text)

将一段文本复制到剪贴板

参数

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

返回值

示例

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

clipText()

获得剪贴板中的文本

参数

返回值

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

示例

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

inputText(text)

输入文本到当前选中的输入框中。inputText(“\b”)可以退格删除一个字符。

参数

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

返回值

示例

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

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

clearDialogValues(script)

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

参数

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

返回值

示例

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

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://")

isLicensed()

检查当前AutoTouch是否已授权

参数

返回值

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

示例

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

setAutoLaunch(scriptPath, on)

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

参数

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

返回值

示例

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

listAutoLaunch()

列出所有开机启动的脚本

参数

返回值

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

示例

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

stop()

停止当前脚本的执行

Parameters

Return

Examples

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

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."
}

停止运行一个脚本

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."
}

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

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"
        },
        ...
    ]
}

创建一个新文件夹

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"
}

创建一个新文件

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"
}

删除一个文件

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"
}

重命名一个文件或文件夹

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"
}

固定值

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

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

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.