Задачу мне удалось решить так: с помощью ADB получилось открыть верхнюю шторку и через меню настроек выбрать нужный режим. После чего скрипт, выполняющий эту последовательность действий, был помещен в /
и стартовал при загрузке микрокомпьютера. Можно ли похожим образом автоматизировать другие процессы на Android-смартфоне? Конечно!
В конце 2021 года в Дубае проходил матч за звание чемпиона мира по шахматам. Интерес к этому событию в России был подогрет тем, что против действующего чемпиона мира — Магнуса Карлсена — выступал россиянин Ян Непомнящий. Мы с приятелем следили за ходом турнира и даже решили сыграть в тандеме против Магнуса. Но поскольку сам он был занят чемпионатом, то пришлось сражаться с его электронным клоном — программой Play Magnus для Android.
Уровень сложности в программе задается возрастом Магнуса Карлсена. Мастерство профессиональных шахматистов поражает: дойти до уровня 13 лет — возраста, в котором Магнус стал одним из самых молодых гроссмейстеров мира, — нам так и не удалось. Также впечатляет способность шахматистов играть, не глядя на доску. Рекорд принадлежит Тимуру Гарееву: одновременная игра на 48 досках вслепую! Мой приятель Женя тоже решил попрактиковать этот удивительный навык. А у меня созрел план помочь ему в этом: написать скрипт — обертку для шахматного приложения.
Логика работы скрипта проста: вводишь на клавиатуре компьютера свой ход, например 'e2e4', и программа через ADB выполняет необходимую для этого последовательность нажатий (тапов) на телефоне. Затем вся история игры копируется в буфер обмена смартфона, откуда попадает на компьютер. На экран выводится последний ход — ответ шахматной программы. Для лучшего понимания материала статьи можешь посмотреть, что получилось в итоге.
Про ADB
ADB (Android Debug Bridge) — это инструмент для отладки устройств на базе ОС Android. Его возможности довольно обширны: можно перемещать файлы с компьютера на телефон и обратно. Для этого служат команды adb
и adb
.
Чтобы установить или удалить приложение, достаточно ввести adb
или adb
. А для подключения к командной оболочке телефона используй adb
. ADB позволяет делать еще много чего. Но главное для нас — с его помощью можно имитировать работу с тачскрином телефона (делать тапы и свайпы). Если ты ни разу не использовал ADB, то самое время попробовать! Тем более «Хакер» уже подробно писал на эту тему.
Перед первым использованием нужно включить отладку по USB. Для этого открывай «Настройки» и переходи в раздел «Система», а затем «О телефоне». Здесь ищи пункт «Номер сборки» и кликай по нему несколько раз. После этих действий в разделе «Система» появится дополнительный пункт «Для разработчиков». Заходи туда, ищи и активируй пункт «Отладка по USB».
После включения ADB в телефоне нужно будет установить ADB-сервер на компьютере. Если ты пользователь Linux, то для этого достаточно ввести в консоли команду sudo
. Если же на твоем компе установлена Windows, то придется скачать архив с утилитами. Распакуй его в удобное место, например C:\
. После чего открывай командную строку (нажимай Win + R и вводи cmd
) и переходи в папку с утилитой ADB, введя команду cd
.
Теперь можешь подключать телефон к компьютеру по USB-кабелю. Возможно, тебе понадобится перевести его из режима «Зарядка» в режим «Передача файлов». После чего в командной строке набери adb
. При первом подключении на телефоне должен появиться запрос на разрешение отладки с нового устройства. Отметь галочкой «Всегда разрешать отладку с этого компьютера» и жми OK.
Можешь продолжить пользоваться ADB через USB-кабель, но такой способ не всегда удобен. Чтобы переключить телефон на работу по сети, нужно ввести команду adb
. Здесь 5555
— TCP-порт, на котором служба ADB будет ожидать подключения от ПК. После чего провод можно отсоединить, а на компьютере ввести команду adb
. В результате все команды ADB будут работать так же, как если бы телефон был подключен по кабелю. Данная настройка сохраняется до перезагрузки телефона. Однако теперь нужно быть бдительным, чтобы случайно не предоставить доступ к телефону злоумышленнику. Если к телефону подключится незнакомое устройство, он покажет сообщение об этом. Отозвать выданные разрешения можно в разделе «Для разработчиков» рядом с тем пунктом, где ты разрешал отладку по USB. Переключит обратно на работу по проводу команда adb
.
Пишем код
Программировать будем на Python 3. Прежде всего импортируем необходимые модули и зададим путь к утилите ADB в системе.
#!/usr/bin/env python3import osimport sysimport timefrom subprocess import Popen, PIPEADB = 'adb' # 'C:\platform-tools\adb.exe' для Windows
Напишем функцию help
.
def help(): print(f'Usage: {sys.argv[0]} [-b | --black] [-h | --help]\n') print(f' -b, --black: play with black pieces, by default you play with white') print(f' -h, --help: show this help and exit\n')
Основную логику работы реализуем в классе Screen
. Зададим параметры board_x0
, board_y0
, board_x1
, board_y1
— координаты x и y левого верхнего и правого нижнего края доски соответственно. Константы menu
и close_menu
— положение кнопок для открытия и закрытия меню. Константы save_game
, ok_button
и back_button
— координаты кнопки сохранения партии, кнопок OK и отмены последнего хода соответственно (см. рисунок). Pawn
— массив с координатами кнопок для выбора фигур взамен пешки, когда она ходит на последнюю горизонталь.
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Вариант 2. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Я уже участник «Xakep.ru»