Предисловие.
AnkuLua — приложение для Android, позволяющее создавать ботов с использованием сканирования экрана телефона. Данная программа, почти, полная копия SikuliX, поэтому, если вы читали предыдущую статью, вы найдете много общего. К тому же, она не требует root.
Подготовка
Сперва скачайте и установите эти 3 программы:
- QuickEdit — удобный редактор кода
- ScreenMaster — программа для создания скриншотов
- AnkuLua — программа для запуска ботов

Далее, в папке с вашим будущим ботом, создайте lua скрипт(текстовый файл с расширением .lua) и папку image.

- В папке image, будут хранится изображения, которые бот будет искать на экране.
- Lua скрипт будет содержать код бота.
Теперь, откройте AnkuLua, и запустите созданный Lua скрипт.


Далее, с помощью QuickEdit откройте Lua скрипт бота. Подготовка завершена, время написать Hello World.
Пишем Hello World (v1).
В Lua скрипт, пропишите следующий код.
print("hello world")
Сохраните и запустите скрипт, нажатием на кнопку проигрывания.

В итоге, получили сообщение на экране.
Пишем Hello World (v2).
Можно написать Hello World и так.
type("hello world")
Тогда, hello world, напечатается в активном окне.

Настраиваем Screen Master.
Сперва настроим ScreenMaster. В настройках выберите:
- Формат изображения — PNG
- Качество изображения — 100%.

Т.к. бот будет искать картинку на экране, картинка должна быть максимального качества.
Скриншоты с этой программы, будут помещаться в папку ScreenMaster.
Кликаем по картинке.
Для примера, создадим бота, который будет открывать QuickEdit, кликая по его картинке.
Сначала, обрежьте его картинку, примерно вот так:

Важно, не задевать элементы фона, иначе бот не сможет найти картинку.
Далее, переместите эту картинку в папку image в директории бота и переименуйте в qe.png (для удобства).
В Lua скрипте, пропишите следующее:
click("qe.png")
Сохраните и запустите скрипт. Если скрипт найдет картинку, то он кликнет по ней, и откроет программу.
Подсвечиваем цель.
Точно так же как и SikuliX, здесь можно подсвечивать регион. Измените код на это:
btn = find("qe.png")
btn:highlight(2)
click(btn)
Разберемся как этот код работает.
- В начале я с помощью функции find, нашел регион в котором находится наша картинка.
- Далее, подсветил этот регион с помощью функции highlight на 2 секунды.
- И кликнул по нему.
В итоге, получили красную рамку на 2 секунды возле картинки.

Создаем диалог.
Сейчас я вам покажу, как создать диалог с выбором скрипта.
Перепишите следующий код.
function mainMenu()
rg1 = 0 --переменная в которой будет хранится индекс выбранной радио-кнопки
dialogInit() --создаем окно диалога
addTextView("Text View") --Добавляем в него текстовую строку
newRow() --переходим на следующий ряд
addRadioGroup("rg1", 0) -- создаем радио группу, значение выбранной кнопки записывается в rg1, если ничего не выбрано, rg1 = 0
addRadioButton("Choice 1", 1) --если выбрал "Choice 1" то rg1 = 1
addRadioButton("Choice 2", 2) --если выбрал "Choice 2" то rg1 = 2
dialogShow("TestBot") --Выводим диалог на экран, передавав название "TestBot"
end
mainMenu() --вызываем функцию создания диалога
Весь код я объяснил в комментариях (—).

Таким образом, в зависимости от значения rg1, вы можете выбрать нужную функцию и сделать многофункционального бота, примерно так:
function mainMenu()
rg1 = 0 --переменная в которой будет хранится индекс выбранной радио-кнопки
dialogInit() --создаем окно диалога
addTextView("Text View") --Добавляем в него текстовую строку
newRow() --переходим на следующий ряд
addRadioGroup("rg1", 0) -- создаем радио группу, значение выбранной кнопки записывается в rg1, если ничего не выбрано, rg1 = 0
addRadioButton("Choice 1", 1) --если выбрал "Choice 1" то rg1 = 1
addRadioButton("Choice 2", 2) --если выбрал "Choice 2" то rg1 = 2
dialogShow("TestBot") --Выводим диалог на экран, передавав название "TestBot"
if rg1 == 1 then
doSomething1()
end
else if rg1 == 2 then
doSomething2()
end
end
mainMenu() --вызываем функцию создания диалога
Где, doSomething1 и doSomething2, функции отвечающие за нужные вам действия.
Узнаем координаты нажатия.
В AnkuLua есть функция getTouchEvent, которая ждет пока ты нажмешь на экран, после чего выводит информацию о нажатии. Из всей этой информации, нам понадобятся только координаты.
Перепишите этот код:
function showTouchCoords()
local action, locTable, touchTable = getTouchEvent()
print(locTable)
end
Теперь, при вызове функции showTouchCoords, экран подсветится желтым.

И после касания, выведет координаты нажатия.

Кликаем на координаты.
Чтобы кликнуть по координатам, нужно передать Location в функцию click.
click(Location(500,500))
Данная комманда, кликает на координаты 500, 500.
Прочие функции.
Здесь я распишу остальные функции которые вам могут понадобится в написании бота.
- toast(текст) — показывает всплывающее сообщение снизу.
- exists(картинка) — возвращает True, если картинка найдена.
- wait(картинка) — ждет появления картинки.
- keyevent(4) — нажимает кнопку назад.
- keyevent(3) — жмет кнопку домой.
- keyevent(187) — жмет кнопку переключения приложений.
- swipe — свайп по экрану.
Подробная информация в документации.
Итоговый результат.
