AutoTouch用來錄制和回放您在移動設備上的各種觸摸和點擊操作(不是屏幕錄像),它支持運行Lua腳本並提供一系列可以模擬人的觸摸和按鍵操作的擴展函數,結合這些擴展函數您可以編寫功能復雜多樣的腳本來用AutoTouch自動化執行。比如您可以用它自動玩遊戲打怪賺取金幣、批量編輯照片、進行程序自動化測試或者自動登陸等等。
現在AutoTouch已經具備了錄制和回放大多數人類操作的能力,比如觸摸,點擊Home實體鍵,點擊音量實體鍵,點擊聲音開關實體鍵、鎖屏實體鍵等等。並且達到了精確和順滑的效果。它還提供了諸如截屏、區域截屏、顏色查找、顏色匹配、圖片匹配等一些列擴展函數,具備了更大可挖掘的潛力。結合這些奇異的能力,能限制您的只有想象力了。
您可以從這裏學習Lua語言的使用:Lua Official Reference Manual.
擴展函數用於擴展Lua語言,使具備模擬人類操作手機的一些能力。還提供截屏、顏色查找、顏色匹配、圖片匹配等能力。
在屏幕的(x, y)坐標按下.
touchDown(0, 100, 200); -- 在坐標(100, 200)處按下.
移動手指到(x, y)坐標.
touchDown(0, 100, 200); -- 在坐標(100, 200)處按下. touchMove(0, 200, 200); -- 移動手指到坐標(200, 200)處.
從(x, y)坐標擡起按下的手指.
touchDown(0, 100, 200); -- 在坐標(100, 200)處按下. touchMove(0, 200, 200); -- 移動手指到坐標(200, 200)處. touchUp(0, 200, 200); -- 在坐標(200, 200)處擡起按下的手指.
點擊坐標點(x, y).
tap(100, 200); -- 點擊坐標點(100, 200).
模擬實體鍵按下動作。
keyDown(KEY_TYPE.HOME_BUTTON);
-- 模擬Home鍵按下的動作
-- 怎樣模擬一次按鍵動作
function keyPress(keyType)
keyDown(keyType);
usleep(10000);
keyDown(keyUp);
end
keyPress(KEY_TYPE.HOME_BUTTON);
模擬實體鍵擡起動作。
keyUp(KEY_TYPE.HOME_BUTTON);
-- 模擬Home鍵擡起的動作。
在當前屏幕獲取指定坐標位置的顏色值.
local rgb = getColor(100, 200);
alert("rgb:" .. rgb);
-- rgb:16777215
在當前屏幕獲取所有匹配指定顏色的坐標點. 註意: 您應當這樣使用find(0x0000ff, 5), 而非這樣:find(rgb=0x0000ff, count=5), 這與findImage函數不同, 因為findImage的參數整體是一個table.
-- 示例 1:
local result = findColor(0x0000ff, 2, nil);
for i, v in pairs(result) do
log("x:" .. v[1] .. ", y:" .. v[2]);
end
-- 示例 2:
local result = findColor(0x00ddff, 0, {100, 50, 200, 200});
for i, v in pairs(result) do
log("x:" .. v[1] .. ", y:" .. v[2]);
end
-- 示例 3:
local region = {100, 50, 200, 200};
local result = findColor(0x00ddff, 0, region);
for i, v in pairs(result) do
log("x:" .. v[1] .. ", y:" .. v[2]);
end
查找所有匹配指定顏色和它們的相對位置的矩形區域,返回找到的矩形區域的中心坐標。該函數具有比findImage高得多的查找效率和可用度,比如查找一個按鈕,不用像findImage一樣去匹配整個按鈕圖片,只用匹配按鈕中的幾個錨點的顏色和它們的相對位置即可。可以使用count參數限定希望查找結果的個數,0標識查找所有,1標識查找第1個,2表示查找前兩個。region參數可以用來限定查找的區域,為{x, y, width, height}的table類型,不限定時傳入nil。
這個函數可以使用腳本編輯界面“擴展函數”中的“幫助”工具,快速地從屏幕截圖中選擇幾個錨點顏色,並自動獲取它們的相對位置來插入到函數參數位置。
-- 示例 1:
local result = findColors({{0x00ddff,0,0}, {0x00eeff,10,10}, {0x0000ff,0,20}}, 2, nil);
for i, v in pairs(result) do
log("x:" .. v[1] .. ", y:" .. v[2]);
end
-- 示例 2:
local colors = {{0x00ddff,0,0}, {0x00eeff,10,10}, {0x0000ff,0,20}};
local result = findColors(colors, 0, nil);
for i, v in pairs(result) do
log("x:" .. v[1] .. ", y:" .. v[2]);
end
-- 示例 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("x:" .. v[1] .. ", y:" .. v[2]);
end
在當前屏幕查找匹配指定圖片的區域,以table形式返回找到的所有區域的左上角坐標.
-- 示例 1:
local result = findImage("images/spirit.png", 5, 1, nil, nil);
for i, v in pairs(result) do
log("x:" .. v[1] .. ", y:" .. v[2]);
end
-- 示例 2:
local result = findImage("images/spirit.png", 0, 0.6, nil, nil};
for i, v in pairs(result) do
log("x:" .. v[1] .. ", y:" .. v[2]);
end
-- 示例 3:
local result = findImage("images/spirit.png", 0, {0xffffff, 0x2b2b2b}, nil};
for i, v in pairs(result) do
log("x:" .. v[1] .. ", y:" .. v[2]);
end
-- 示例 4:
local region = {100, 50, 200, 200};
local ignoreColors = {0xffffff, 0x2b2b2b};
local result = findImage("images/spirit.png", 1, 0.9, ignoreColors, region};
for i, v in pairs(result) do
log("x:" .. v[1] .. ", y:" .. v[2]);
end
該函數與findColor基本相同,區別在於findColorTap找到那些點並依次間隔0.016秒進行點擊,並且不返回任何值.
-- 示例 1:
findColorTap(0x0000ff, 2, nil); -- 找到顏色為0x0000ff的前兩個坐標點並依次間隔0.016秒點擊它們.
-- 示例 2:
local region = {100, 50, 200, 200};
findColorTap(0x0000ff, 0, region); -- 指定區域內查找並點擊它們。
像findColors那樣查找,然後在結果位置依次進行一次點擊。
findColors({{0x00ddff,0,0}, {0x00eeff,10,10}, {0x0000ff,0,20}}, 2, nil); -- 找到前兩個匹配的區域,然後依次點擊它們.
local region = {100, 50, 200, 200};
findColors({{0x00ddff,0,0}, {0x00eeff,10,10}, {0x0000ff,0,20}}, 0, region); -- 在指定區域查找匹配,然後依次點擊它們。
像findImage那樣查找區域,並在結果處依次間隔0.016秒進行點擊。
local region = {100, 50, 200, 200};
local ignoreColors = {0xffffff, 0x2b2b2b};
findImageTap("images/spirit.png", 1, 0.9, ignoreColors, region};
對全屏,或指定區域進行屏幕截圖,並保存在指定地址。
screenshot ("images/screenshot1.png", nil);
-- 全屏截圖並保存在指定位置。
screenshot ("images/screenshot1.png", {100, 100, 200, 200});
-- 對指定區域截圖並保存。
用appIdentifier啟動指定應用.
appRun("com.apple.mobilesafari");
-- 運行safari
用appIdentifier關閉指定應用.
appKill("com.apple.mobilesafari");
-- 關閉運行著的safari
獲取指定應用的運行狀態
b = appState("com.apple.mobilesafari");
-- 獲得Safari的狀態.
檢查指定應用是否處於活躍和打開的狀態.
b = appIsActive("com.apple.mobilesafari");
-- 檢查App打開狀態
獲得腳本存放的默認地址.
local dirPath = rootDir(); -- dirPath = "/var/mobile/Library/AutoTouch/Scripts/"
停頓若幹個微秒,即1/1000000秒.
usleep(1000000); -- 停頓1秒
記錄日誌,可在日誌界面查看。
log("play here...");
彈出對話框顯示指定內容.
alert("Hello world!");
震動一次.
vibrate(); -- 震動一次.
Play the specified audio file, times means how may time you want to play, default is 0, means infinitely.
playAudio("/var/audio.mp3", 0); -- play infinitely.
Pause the playing started before.
pauseAudio();
Resume the paused playing before.
resumeAudio();
Stop the playing started before.
stopAudio();
獲取屏幕分辨率.
local w, h = getScreenResolution(); -- 分辨率寬度是1136, 分辨率高度是640.
獲取屏幕大小,這裏是蘋果坐標系的大小。視網膜屏就是分辨率除以二的值.
local width, height = getScreenSize(); -- iPhone 5:寬是320, 高是568
Get the retina scale of the screen.
local scale = getScreenScale(); -- 2.0 for iPhone 5, 3.0 for iPhone 6 Plus.
Get the bit depth of the screen.
local bitDepth = getScreenScale();
獲取當前設備的序列號。
b = getSN();
-- b: C15NFK32TWD2
獲取AutoTouch當前版本號。
b = getVersion();
-- b: 3.0.1
將整形顏色值轉換為r, g, b單獨的值.
local r, g, b = intToRgb(0x2b2b2b);
將r, g, b色值轉換為整形顏色值.
local intColor = rgbToInt(200, 255, 100);
將指定文本復制到剪貼板.
copyText("This is a copied text!");
Get the text on the clipboard.
local text = clipText();
Input the specified text to the focused text field.
inputText("Let's input some text automatically without tapping the keyboard!");
inputText("\b\b\b"); -- delete backward for 3 characters
Fake geographic position for the specified apps, it remains in effect until you call clearFakeLocation, or clear the faking in the settings view.
fakeLocation("com.apple.Maps", 36, 50); -- fake location for Apple Map.
Clear the location faking for one specified app.
clearFakeLocation("com.apple.Maps"); -- clear the location faking for Apple Map.
Show a dialog accepts user input.
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="Kevin"}
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}
local controls = {label, nameInput, positionPicker, developerSwitch}
local enableRemember = true;
dialog(controls, enableRemember);
alert(string.format("name:%s, birthday:%s, gender:%d", nameInput.value, positionPicker.value, developerSwitch.value))
Get the screen orientation.
local o = getOrientation();