Как думаешь, сможешь ли ты за пять минут своими руками сделать систему защиты Android-приложений с помощью отпечатка пальца? А превратить смартфон в программируемый свайппад для управления музыкой в автомобиле? Или систему распознавания текстов с автоматической отправкой данных в облако? Все это и многое другое можно реализовать буквально на коленке с помощью системы автоматизации Tasker и мощнейшего плагина AutoTools.

AutoTools — детище одного из самых известных активистов «Таскера», португальского разработчика Жуана Диаса (João Dias), написавшего не один десяток плагинов. Но если другие его плагины выполняли строго определенные функции, то AutoTools — этакий швейцарский армейский нож на все случаи жизни.

Перечень его возможностей включает в себя: работу с массивами, диалоги в стиле Material Design, просмотр данных о сетевых подключениях, фонарик, управление жестами, чтение и запись JSON, чтение логов Android (logcat), распознавание текста, работу с сенсорами, работу с регулярными выражениями, всплывающие уведомления, вибрацию и многое другое. И все это без прав root.

 

Устанавливаем

Плагин можно найти в Play Store. После установки открываем его и активируем 30-дневный триал. Этого точно хватит, чтобы оценить возможности плагина и решить, стоит ли его покупать.

Полная версия стоит 2,99 доллара и приобретается через AutoApps — агрегатор со всеми прогами, альфа- и бета-версиями других плагинов автора. В самой проге больше ничего не настраивается, но есть ссылки на инструкции и примеры использования. Все взаимодействие традиционно происходит внутри самого «Таскера».

AutoTools — это так называемый Action-плагин. Это значит, что сам он не продуцирует события, на которые может реагировать Tasker, но может отвечать на события. Работает это так: ты создаешь новый профиль Tasker, выбираешь контекст (время, действие, подключение к Wi-Fi или любое другое), а когда Tasker предлагает создать для него задачу (Task), вводишь имя задачи, затем нажимаешь плюс, выбираешь Plugin, затем AutoTools и нужный раздел в выпадающем списке, например Flashlight.

Ниже я приведу несколько примеров использования AutoTools для решения самых разных задач.

Приложение AutoTools и выбор действия в «Таскере»
Приложение AutoTools и выбор действия в «Таскере»
Приложение AutoTools и выбор действия в «Таскере»
Приложение AutoTools и выбор действия в «Таскере»
Приложение AutoTools и выбор действия в «Таскере»

 

Краткий словарик

  • Профиль (Profile) — основная единица в Tasker. Представляет собой условие/контекст (Если.../If...) и реакцию на него (То сделай.../Then do...).
  • Контекст (Context) — то, на что надо реагировать.
  • Задача (Task) — набор действий, которые необходимо совершить. Можно создавать без привязки к профилю и, присвоив иконку, запускать в любое время с рабочего стола.
  • Действие (Action) — единичный шаг внутри задачи. Например, выключить Wi-Fi.
  • Состояние (State) — разновидность контекста. Имеет длительность. Пока состояние активно, профиль действует.
  • Событие (Event) — разновидность контекста. При наступлении события профиль срабатывает один раз.
  • Проект (Project) — несколько сгруппированных для удобства профилей, находящихся на одной вкладке.

 

Всплывающие уведомления с тонкой настройкой

Функция Toast показывает продвинутые всплывающие уведомления с различными настройками.

Создаем действие Plugin → AutoTools → Toast и настраиваем конфигурацию, как душе угодно. Если поставить галочку на Use HTML, можно размечать сообщения тегами. Настраиваются цвет текста, размер текста, шрифт (указывается путь до ttf-файла), цвет бэкграунда, иконка и ее размер, закругления, положение сообщения. Как в итоге это смотрится и чем отличается от стандартного Alert — Flash, можно увидеть на примерах ниже.

Стандартный Flash и Toast из набора AutoTools
Стандартный Flash и Toast из набора AutoTools
Стандартный Flash и Toast из набора AutoTools
Стандартный Flash и Toast из набора AutoTools
Стандартный Flash и Toast из набора AutoTools
 

Смартфон в качестве тачпада для управления воспроизведением музыки в автомобиле

В AutoTools есть функция Gestures Screen. Она создает черный экран с поддержкой свайпов, на которые можно повесить команды. Смысл здесь довольно простой — превратить смартфон в своего рода программируемый тачпад.

Для примера создадим профиль, который при запуске музыки в машине через Bluetooth будет показывать черный экран (актуально для AMOLED-экранов), позволяющий управлять воспроизведением при помощи свайпов.

Для этого сначала необходимо отследить переменную, которая сигнализирует о том, что музыка играет, с помощью другого плагина — AutoNotification.

Создаем профиль: Event → Plugin → AutoNotification → Intercept. В конфигурации в разделе Apps выбираем интересующие нас плееры (допустим, VK и Google Play Music). Принимаем условие и создаем действие (название можно не вводить): New Task → Plugin → AutoTools → System State. В конфигурации ставим галочку на Audio. Возвращаемся к действиям и добавляем переменную: Variables → Variable Set. В поле Name вписываем %MusicPlaying, а в поле To пишем %atmusicplaying. Теперь при каждом запуске музыки переменная будет обновляться.

Далее создаем профиль, реагирующий на включение музыки: State → Variables → Variable Value. Для условий выбираем переменную %MusicPlaying (можно сделать это, нажав на иконку в виде бирки) и для значения вписываем true.

Создаем новое действие: New Task → Plugin → AutoTools → Gestures Screen. В поле конфигурации ищем AutoApps Commands → Swipes → Down. В поле Distances оставляем 100, в поле Commands вписываем команду stopplaying. Возвращаемся и аналогичным способом прописываем команды nexttrack для свайпа вправо, previoustrack для свайпа влево и pausetrack для свайпа вверх. Нажимаем два раза назад и ищем в списке Background, в меню Color выбираем черный цвет, после подтверждения сдвигаем ползунок с прозрачностью вправо до упора и возвращаемся к действиям.

Настроенный профиль после запуска музыки из выбранных приложений будет показывать черный экран (экономя батарейку) и посылать введенные команды при свайпах более 100 пикселей. На эти команды надо среагировать, но сначала добавим возвращение с черного экрана при остановке музыки. В только что созданном профиле долгий тап на действие, затем Add Exit Task. Жмем на плюсик, выбираем AutoTools и в конфигурации ставим галочку на Close Screen.

Чтобы реагировать на команды, необходимо добавить еще четыре профиля. На примере свайпа вниз: Event → Plugin → AutoApps. В конфигурации в поле Command Filter вводим stopplaying и отмечаем галочкой Exact, чтобы не было ложных срабатываний. Далее возвращаемся и создаем новое действие Media → Media Control и выбираем в списке Stop. Повторяем по аналогии для остальных команд. Для команды pausetrack выбираем Toggle Pause.

Все. Имеем рабочий профиль. Чтобы профиль срабатывал только при проигрывании музыки в машине, необходимо долгим тапом на условии AutoNotification Intercept в первом профиле добавить дополнительное условие BT Connected и, нажав на лупу справа вверху, выбрать из списка приемник в машине.

Профили управления музыкой
Профили управления музыкой
Профили управления музыкой
Профили управления музыкой
Профили управления музыкой
 

Диалог с выбором вариантов

Функция Dialog позволяет вывести на экран различные типы диалогов для взаимодействия с пользователем и реагировать на полученные ответы. Диалоги можно встраивать в профили, действия и так далее. Например, можно вывести дополнительную информацию или предупреждение с кнопкой ОK и продолжить выполнение только после нажатия на нее. Как вариант — кнопки ОK и Cancel или Yes/No. Можно вывести список, запросить цвет или дату со временем, запросить ввести текст или приложить палец к сканеру отпечатков.

Добавляем действие Plugin → AutoTools → Dialog и в конфигурации выбираем 2 Choices. Далее вводим заголовок (Title) и текст, который будет на кнопках Choice one и Choice two. При желании можно настроить иконку, бэкграунд и команды, отправляемые нажатием на каждый из ответов. По умолчанию они повторяют текст кнопок. Реагировать на эти команды можно, отлавливая переменную %atcommand.

Выбор вида диалога и диалог с двумя ответами
Выбор вида диалога и диалог с двумя ответами
Выбор вида диалога и диалог с двумя ответами
Выбор вида диалога и диалог с двумя ответами
Выбор вида диалога и диалог с двумя ответами
 

Защита приложений с помощью пароля или отпечатка пальца

Ту же функцию Dialog можно использовать для запроса отпечатка пальца. Я покажу, как настроить блокировку с распознаванием отпечатка на любую прогу (для устройств, где этот сканер есть).

Создаем задание (Task) с названием «Отпечаток»: Plugin → AutoTools → Dialog. Выбираем тип диалога Fingerprint. Заполняем Title и Text, количество попыток, текст при неудачном распознавании. Возвращаемся и ставим галочку на Continue Task after error, иначе после неудачного распознавания действие просто остановится и ничего не произойдет.

Далее добавляем действие Task → If. Для переменной используем %atbutton, для значения — цифру 2, которая отвечает за сканер (1 — это кнопка Cancel в диалоге). После удачного распознавания выведем текст, для чего добавим Alert → Flash. Затем добавим Task → Else и впишем текст после неудачи также через Alert → Flash. После чего добавим App → Go Home. Это выкинет действие на домашний экран, если распознавание не удалось или была нажата кнопка Cancel. Закроем это дело через Task → End If.

Теперь создадим новый профиль с условием Application и выберем необходимые проги, например Google Photos или соцсети. В качестве задачи (Task) указываем только что созданный «Отпечаток».

По аналогии можно создать профиль с запросом пароля, используя в диалоге Input Text вместо Fingerprint.

Настройка сканера отпечатков на запуск прог
Настройка сканера отпечатков на запуск прог
Настройка сканера отпечатков на запуск прог
Настройка сканера отпечатков на запуск прог
Настройка сканера отпечатков на запуск прог
 

Распознавание текста из фото с добавлением заметки в Google Keep

Сразу оговорюсь, длинные тексты из документов распознать не получится. Фото должно быть на белом фоне с четко читаемым текстом.

Нам понадобится плагин AutoShare и импортированный Intent с названием Image — Take Photo.

Создаем Task с названием Save text to Keep. Добавим действие Plugin → AutoShare → AutoShare. В конфигурации на вкладке App выбираем Image. На вкладке Action → Take Image. На вкладке File Path вводим путь, где будет лежать временный файл. Например, file:///storage/emulated/0/temp.jpg. После этого идем назад и для проверки добавляем действие Alert → Flash, в поле Text вводим переменную %asfilepath.

Для распознавания текста нам понадобится добавить действие Plugin → AutoTools → OCR. В поле Image необходимо ввести ту же переменную %asfilepath. Следом добавляем Alert → Flash и в качестве текста вводим переменную, отвечающую за распознанный текст, — %atocrvalue().

Далее необходимо закинуть текст в буфер обмена через все тот же Set Clipboard, но мы оформим это как заметку. Создаем следующим действием Plugin → AutoShare → AutoShare, на вкладке Find Compatible Apps выбираем Google Keep и в графе Text вводим %atocrvalue().

Сохраняем, присваиваем иконку, добавляем на рабочий стол. После запуска делаем фото, и в результате откроется Google Keep с редактируемой заметкой и распознанным текстом.

Профиль распознавания текста из фотографии
Профиль распознавания текста из фотографии
Профиль распознавания текста из фотографии
Профиль распознавания текста из фотографии
Профиль распознавания текста из фотографии
 

Программируемый фонарик

Функция Flashlight: Plugin → AutoTools → Flashlight. Можно включить, выключить, переключить состояние или промигать шаблон. Можно использовать плагин AutoVoice для управления фонариком голосом или просто создать действие Toggle, прикрепить к нему иконку и вынести на рабочий стол. Тогда можно включать и выключать фонарик, не влезая в настройки.

Также можно ввести шаблон (pattern) для мигания в миллисекундах через запятую, где первое число — это пауза, а второе — время свечения светодиода. Приятное дополнение — возможность «настучать» шаблон мигания, для этого используется Vibration Pattern Creator, который является частью раздела Vibration и выполняет аналогичные функции. Просто стучим три коротких, три длинных, три коротких и получаем SOS на выходе. Ну или можно промигать что-нибудь посерьезнее с помощью импорта созданного проекта Morse_Code.prj. Для Parameter 1 используется фраза, которую необходимо промигать (только цифры и английские буквы). Перевести проект на русский можно самостоятельно, поправив конец XML-файла, в котором указаны соответствия букв коду.

Настройка фонарика
Настройка фонарика
Настройка фонарика
Настройка фонарика
Настройка фонарика
 

Снятие логов

Часто при различных ошибках или тестировании приложений пользователи сталкиваются с тем, что разработчики или более продвинутые пользователи просят скинуть им LogCat. И тут менее знающие начинают искать по Сети, да и у продвинутых это занимает время, так как нужен комп или эмулятор терминала.

Я покажу, как автоматизировать этот процесс и сэкономить время, настроив один раз необходимый профиль в «Таскере». Напомню, что root не нужен, но необходимо разрешение чтения логов для AutoTools. Дать такое разрешение можно, войдя на устройство с помощью ADB и выполнив такую команду:

$ adb shell pm grant com.joaomgcd.autotools android.permission.READ_LOGS 

Итак, для начала создаем задание с названием LogCat через Plugin → AutoTools → LogCat. В конфигурации на вкладке Level выбираем значение Error. Ниже можно добавить ключевые слова и количество строк для вывода (по умолчанию 100).

Для проверки первой строки логов добавляем Alert → Flash и в поле Text вводим %atlogtime(1) %atlogtag(1) %atlog(1). Добавляем AutoTools → Arrays следующим действием. Это раздел для работы с массивами.

На вкладке Input Arrays вводим значения %atlogtime()|%atlogtag()|%atlog(). Их можно вставить, нажав на кнопку в виде бирки. Возвращаемся и переходим на вкладку Merging. Отмечаем Merge Arrays галочкой и в поле Merged Array Name вводим atlogs. В поле Merge Format вводим « - » (без кавычек: пробел дефис пробел). В поле Join Merged Arrays один раз нажимаем Enter (для перевода строки), затем кнопку ОK.

На выходе мы получим переменную %atlogs с массивом ошибок в удобном для восприятия виде. Что с ней делать далее, решать тебе. Можно копировать в буфер обмена, добавив действие System → Set Clipboard и указав %atlogs в качестве аргумента. Или сразу отправлять на email через плагин AutoShare.

Снятие логов с устройства
Снятие логов с устройства
Снятие логов с устройства
Снятие логов с устройства
Снятие логов с устройства
 

Управление закрытыми настройками

Функция Secure Settings позволяет изменять настройки, по умолчанию закрытые для других приложений, например GPS и переключение режимов точности обнаружения, включение/отключение экрана блокировки, включение режима экономии батареи.

Права root для этого не нужны, но, как и в случае с LogCat, необходимо дать права на изменение этих настроек с помощью ADB:

$ adb shell pm grant com.joaomgcd.autotools android.permission.WRITE_SECURE_SETTINGS

После этого можно создавать профили. Сам процесс описывать не буду, он довольно простой и укладывается практически в одно действие «Если... то...». Отмечу, что работоспособность команд зависит от версии Android. Приведу лишь несколько use case’ов, относящихся к Plugin → AutoTools → Secure Settings:

  • при включении карт, навигации или при снятии фото — включать максимальную точность определения координат через Location Mode → High Accuracy. При выходе скидывать на Off;
  • отключение мобильной передачи данных при подключении к домашней точке доступа;
  • включение режима экономии батареи на ночь через Battery Saver → Enable;
  • включение голосового ввода текста, если телефон лежит на горизонтальной поверхности, и переключение на клавиатуру при взятии в руки через Services → Input Method;
  • включение ночного режима (оранжевый оттенок) или уровень яркости по таймеру вечером через Display → Night Mode и Display → Adaptive brightness level;
  • изменение политики отображения уведомлений на экране блокировки в зависимости от местонахождения через Lock Screen → Show Private Notifications и отключение блокировки экрана при коннекте к домашней точке доступа;
  • запуск определенных приложений с выбранной ориентацией экрана.
Возможности Secure Settings
Возможности Secure Settings
Возможности Secure Settings
Возможности Secure Settings
Возможности Secure Settings

Также можно произвольно менять другие системные и глобальные настройки из одного места. Изменение части настроек было показано в номере 197 в статье «SQLite под микроскопом». Я описывал сложный кейс с изменением значений непосредственно в базе на устройстве с использованием root. Тут это делается также в одно действие присвоением значения переменной. Полный перечень команд можно узнать, подключив устройство к компу и выполнив из консоли следующие команды:

$ adb shell settings list system
$ adb shell settings list global
$ adb shell settings list secure

Приведу наиболее интересные команды из перечня c указанием примеров аргументов:

  • dim_screen — затемняет экран (пример значения: 1);
  • font_scale — масштаб шрифта (1.0);
  • haptic_feedback_enabled — переключение вибрации при нажатии на кнопки (1);
  • screen_brightness — яркость экрана (78);
  • screen_off_timeout — время выключения экрана в миллисекундах (600000);
  • show_touches — показывать нажатия (1);
  • vibrate_when_ringing — вибрация при звонке (1);
  • adb_enabled — включение отладки по ADB (1);
  • audio_safe_volume_state — безопасный уровень аудио (3);
  • development_settings_enabled — отображение меню настроек разработчика (1);
  • device_name — имя устройства (Nexus 5);
  • mobile_data — переключение передачи данных (1);
  • android_id — идентификатор устройства (3861a499dd504976);
  • bluetooth_address — МАС-адрес для Bluetooth (78:F8:82:56:81:E6);
  • install_non_market_apps — включение установки приложений из неизвестных источников (1);
  • lockscreen.disabled — отключение экрана блокировки (0);
  • user_setup_complete — нужно ли запускать мастер первичной настройки телефона при загрузке (1).
 

Другие возможности

Среди доступных возможностей плагина также есть форматирование текста, математические операции с числами и массивами чисел, подтверждение выполнения операции для продолжения профиля, кастомные вкладки Google Chrome (например, только новые непрочитанные сообщения на форуме), чтение и запись JSON, работа с регулярными выражениями для отслеживания изменений на сайтах, выполнение SSH-команд на удаленном устройстве.

 

Заключение

Надеюсь, я в очередной раз подвиг тебя изучать Tasker и экспериментировать над устройствами. Ведь с его помощью можно создавать удивительные вещи и, по сути, реализовывать функциональность многих прог, добавляя новые возможности, а не ждать, когда это сделают разработчики. Пиши в комментариях, каких функций не хватает в «Таскере» именно тебе, — возможно, реализация этих запросов уже давно есть в плагинах.

Оставить мнение