Планировщик запуска программ по расписанию для андроид

Обновлено: 04.07.2024

В этом руководстве описано, как спланировать фоновую работу с помощью API планировщика заданий Android, который доступен на устройствах Android под управлением ОС Android 5.0 (уровень API 21) и более поздних версий.

Обзор

Один из лучших способов поддерживать хорошую отзывчивость приложения Android — выполнять сложную или длительную работу в фоновом режиме. При этом важно, чтобы фоновая работа не влияла негативно на взаимодействие пользователя с устройством.

Например, фоновое задание может опрашивать веб-сайт каждые три или четыре минуты, чтобы получать изменения в определенном наборе данных. Это кажется пустяком, но это может повлиять на время работы аккумулятора. Приложение будет раз за разом выводить устройство из спящего режима, повышать уровень энергопотребления ЦП, включать беспроводную связь, выполнять сетевые запросы и обрабатывать результаты. Все усложняется тем, что устройство не будет немедленно выключаться и возвращаться в режим ожидания с низким энергопотреблением. Плохо спланированная фоновая работа может привести к тому, что устройство самопроизвольно и без необходимости будет переходить в режим повышенного энергопотребления. На первый взгляд безобидное действие (опрос веб-сайта) довольно быстро сделает устройство непригодным для использования.

Android предоставляет приведенные ниже API для выполнения работы в фоновом режиме, но их недостаточно для интеллектуального планирования заданий.

  • Службы намерения . Службы намерения отлично подходят для выполнения работы, но они не позволяют планировать ее.
  • AlarmManager . Эти API помогают только планировать работу по расписанию, но не позволяют фактически выполнять работу. Кроме того, AlarmManager поддерживает только ограничения на основе времени, то есть создает оповещение в определенное время или по истечении определенного времени.
  • Широковещательные приемники . Приложение Android может настроить широковещательные приемники для выполнения работы в ответ на события или намерения уровня системы. При этом широковещательные приемники не позволяют управлять временем выполнения заданий. Кроме того, изменения в операционной системе Android в будущем ограничат возможность выполнять широковещательные приемники, а также типы работы, на которую они могут реагировать.

Существуют два ключевых аспекта эффективного выполнения фоновой работы (иногда называемой фоновым заданием или просто заданием):

  1. Рациональное планирование работы. Если приложение выполняет работу в фоновом режиме, оно должно делать это рационально. В идеале приложение не должно требовать выполнения задания. Вместо этого оно должно указать условия, при которых задание может быть выполнено, а затем запланировать в операционной системе задание, которое выполнит нужную работу при выполнении этих условий. Это позволяет Android самостоятельно управлять заданием, повышая эффективность устройства. Например, сетевые запросы могут собираться в пакет и выполняться одновременно, чтобы оптимизировать затраты на работу с сетью.
  2. Инкапсуляция работы. Код для выполнения фоновой работы должен быть инкапсулирован в отдельный компонент, который может работать независимо от пользовательского интерфейса и который будет сравнительно просто повторно запланировать, если по какой-либо причине работу не удастся выполнить.

Планировщик заданий Android — это платформа, встроенная в операционную систему Android, которая предоставляет гибкий API для удобного планирования фоновой работы. Планировщик заданий Android состоит из следующих типов:

  • системная служба Android.App.Job.JobScheduler , которая используется для планирования, выполнения и (при необходимости) отмены заданий от имени приложения Android;
  • абстрактный класс Android.App.Job.JobService , который должен быть дополнен логикой для выполнения в фоновом задании. Это означает, что JobService отвечает за асинхронное выполнение работы;
  • объект Android.App.Job.JobInfo , который содержит критерии, используемые Android при выборе времени для запуска задания.

Чтобы запланировать работу с помощью диспетчера заданий Android, приложение Xamarin.Android должно инкапсулировать код в классе, который расширяет класс JobService . JobService содержит три метода жизненного цикла, которые могут быть вызваны в течение времени существования задания.

bool OnStartJob(JobParameters parameters) — этот метод вызывается из JobScheduler для выполнения работы в основном потоке приложения. Именно JobService отвечает за асинхронное выполнение работы и возвращает true , если еще осталась невыполненная работа, и false по завершении этой работы.

Когда JobScheduler вызывает этот метод, он запрашивает и сохраняет блокировку в режиме бодрствования для Android на время выполнения задания. По завершении задания JobService должен сообщить об этом в JobScheduler , вызвав метод JobFinished (см. далее).

JobFinished(JobParameters, bool needsReschedule) — этот метод должен вызываться из JobService , чтобы сообщить JobScheduler о завершении работы. Если JobFinished не вызывается, JobScheduler не удалит блокировку в режиме бодрствования, что приведет к быстрой разрядке аккумулятора.

bool OnStopJob(JobParameters parameters) – вызывается, если задание прерывается Android. Он должен возвращать true , если нужно запланировать задание повторно в соответствии с критериями повтора (подробнее описано ниже).

Есть возможность указать ограничения или триггеры, которые будут контролировать время выполнения задания. Например, можно ограничить задание так, чтобы оно выполнялось только во время зарядки устройства, или запускать задание при съемке фото.

В этом руководство подробно описано, как реализовать класс JobService и запланировать его выполнение в JobScheduler .

Требования

Для планировщика заданий Android требуется Android с уровнем API 21 (Android 5.0) или более поздней версии.

Использование планировщика заданий Android

Использование API JobScheduler для Android состоит из трех этапов:

  1. Реализуйте тип JobService и включите в него нужную работу.
  2. Используйте объект JobInfo.Builder , чтобы создать объект JobInfo , который будет содержать критерии, по которым JobScheduler выполнит задание.
  3. Отправьте это задание с помощью JobScheduler.Schedule .

Реализация JobService

Вся работа, выполняемая планировщиком заданий Android, должна быть выполнена в типе, расширяющем абстрактный класс Android.App.Job.JobService . Создание JobService очень похоже на создание Service на платформе Android.

  1. Расширьте класс JobService .
  2. Включите в подкласс ServiceAttribute и задайте параметру Name строковое значение, которое состоит из имени пакета и имени класса (см. следующий пример).
  3. Для свойства Permission элемента ServiceAttribute укажите строковое значение android.permission.BIND_JOB_SERVICE .
  4. Переопределите метод OnStartJob , добавив код для выполнения работы. Android будет вызывать этот метод в основном потоке приложения, чтобы выполнить задание. Если работа требует больше времени, чем несколько миллисекунд, ее нужно выполнять в отдельном потоке, чтобы избежать блокировки приложения.
  5. По завершении работы JobService должен вызвать метод JobFinished . С помощью этого метода JobService сообщает JobScheduler о том, что работа выполнена. Отсутствие вызова JobFinished приведет к тому, что JobService сохранит уже ненужные требования к устройству и сократит время его автономной работы.
  6. Мы также рекомендуем переопределить метод OnStopJob . Этот метод вызывается Android, если нужно остановить задание до его выполнения, что позволяет JobService корректно освободить ресурсы. Этот метод должен возвращать true , если нужно заново запланировать задание, или false , если повторное выполнение не требуется.

Следующий код является примером простейшего JobService для приложения, использующего TPL для асинхронного выполнения некоторой работы.

Создание JobInfo для планирования задания

Приложения Xamarin.Android не создают экземпляр JobService напрямую, а вместо этого передают объект JobInfo в JobScheduler . JobScheduler создаст экземпляр запрошенного объекта JobService , чтобы запланировать и запустить JobService в соответствии с метаданными в JobInfo . Объект JobInfo должен содержать следующие сведения:

  • JobId — значение int , которое используется в JobScheduler для идентификации задания. Повторное использование этого значения приведет к обновлению существующего задания. Это значение должно быть уникальным для каждого приложения.
  • JobService — этот параметр представляет собой ComponentName , который явным образом определяет тип, который JobScheduler должен использовать для выполнения задания.

Этот метод расширения демонстрирует создание JobInfo.Builder в Android с помощью объекта Context , например действия:

У планировщика заданий Android есть мощная возможность управлять временем выполнения или условиями, при которых может выполняться задание. В следующей таблице описаны некоторые методы JobInfo.Builder , которые позволяют приложению влиять на выполнение задания.

Метод Описание
SetMinimumLatency Указывает задержку (в миллисекундах), которая должна соблюдаться перед выполнением задания.
SetOverridingDeadline Объявляет, что задание должно быть завершено до истечения указанного времени (в миллисекундах).
SetRequiredNetworkType Указывает требования к сетевому подключению для выполнения задания.
SetRequiresBatteryNotLow Задание может выполняться, только если устройство не отображает пользователю предупреждение о низком уровне заряда.
SetRequiresCharging Задание может выполняться только во время зарядки аккумулятора.
SetDeviceIdle Задание запускается только во время работы устройства.
SetPeriodic Задание должно выполняться регулярно.
SetPersisted Задание должно сохраняться даже после перезагрузки устройства.

SetBackoffCriteria предоставляет некоторые рекомендации о том, как долго JobScheduler будет ожидать перед повторной попыткой выполнить задание. Критерий откладывания разделяется на две части: задержка в миллисекундах (по умолчанию 30 секунд) и используемый тип откладывания (иногда называется политикой откладывания или политикой повтора). В перечислении Android.App.Job.BackoffPolicy инкапсулируются две политики:

  • BackoffPolicy.Exponential — политика экспоненциальной задержки экспоненциально повышает значение начальной задержки после каждой неудачной попытки. После первой неудачной попытки библиотека выдерживает паузу, длительность которой определяется заданным начальным периодом (например, 30 секунд), а затем повторно назначает задание. При второй неудаче библиотека будет ожидать не менее 60 секунд перед попыткой повторного запуска. После третьей неудачной попытки библиотека будет ждать 120 секунд и т. д. Это значение по умолчанию.
  • BackoffPolicy.Linear — эта стратегия использует линейную задержку, то есть выполнение задания каждый раз повторно назначается через заданный интервал (до тех пор, пока оно не будет выполнено). Линейная задержка лучше всего подходит для работы, которая должна быть выполнена как можно скорее, или при наличии проблем, которые быстро исчезают сами по себе.

Дополнительные сведения о создании объекта JobInfo см. в документации Google по классу JobInfo.Builder .

Передача параметров в задание через JobInfo

Параметры передаются в задание путем создания PersistableBundle , который передается вместе с методом Job.Builder.SetExtras .

Доступ к PersistableBundle осуществляется из свойства Android.App.Job.JobParameters.Extras метода OnStartJob класса JobService .

Планирование задания

Чтобы запланировать задание, приложение Xamarin.Android получает ссылку на системную службу JobScheduler и вызывает метод JobScheduler.Schedule для объекта JobInfo , который был создан на предыдущем шаге. JobScheduler.Schedule немедленно возвращает одно из двух целочисленных значений:

  • JobScheduler.ResultSuccess — если задание было успешно запланировано;
  • JobScheduler.ResultSuccess — если задание не удалось запланировать. Обычно это связано с конфликтом параметров JobInfo .

Следующий код содержит пример планирования задания и уведомления пользователя о результатах попытки планирования:

Отмена задания

Можно отменить все запланированные задания или только одно задание, используя метод JobsScheduler.CancelAll() или метод JobScheduler.Cancel(jobId) .

Сводка

В этом руководстве описано, как использовать планировщик заданий Android для рационального выполнения работы в фоновом режиме. Мы изучили, как инкапсулировать в JobService работу, которую необходимо выполнить, и как с помощью JobScheduler запланировать эту работу, указывая критерии в JobTrigger и способ обработки ошибок в RetryStrategy .

Привет Хабр! Предлагаю вашему вниманию свободный перевод статьи «Schedule tasks and jobs intelligently in Android» от Ankit Sinhal.

В современной разработке приложений очень часто выполняются задачи асинхронно, и их объем выходит за пределы жизненного цикла приложения. В некоторых ситуациях мы также должны выполнять некоторые работы, но это не обязательно делать прямо сейчас. Чтобы запланировать фоновые работы, Android представила несколько API, которые мы можем грамотно использовать в наших приложениях.

Выбор подходящего планировщика может улучшить производительность приложений и время автономной работы устройства.

Для планирования задач на Android доступно несколько API:

  • Alarm Manager
  • Job Scheduler
  • GCM Network Manager
  • Firebase Job Dispatcher
  • Sync Adapter

Проблемы с сервисами

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

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

Запланированный задачи во время жизненного цикла приложения

Когда приложение запущено, и мы хотим запланировать или запустить задачу в определенное время, рекомендуется использовать класс Handler вместе с Timer и Thread.

Запланированные задачи при выключенном приложении

Alarm Manager

AlarmManager обеспечивает доступ к службам уведомлений. Это дает возможность выполнять любые операции за пределами жизненного цикла вашего приложения. Таким образом, вы можете инициировать события или действия, даже если ваше приложение не запущено. AlarmManager может запустить сервис в будущем.

Мы должны использовать API AlarmManager только для задач, которые должны выполняться в определенное время

Пример использования: предположим, что мы хотим выполнить задачу через 1 час или каждый час. В этом случае AlarmManager нам поможет.

Job Scheduler

Это главный из всех упомянутых вариантов планирования и очень эффективный с фоновыми работами. JobScheduler API, который был представлен в Android 5.0 (API уровня 21).

Этот API позволяет выполнять задания, когда у устройства больше доступных ресурсов или при соблюдении правильных условий. Все условия могут быть определены при создании задания. Когда объявленные критерии будут выполнены, система выполнит это задание в JobService вашего приложения. JobScheduler также отменяет выполнение, если необходимо, чтобы соблюдать ограничения режима Doze и App Standby.

GCM Network Manager

GCM (Google Cloud Messaging) Network Manager имеет все функции расписания из JobScheduler. GCM Network Manager также предназначен для выполнения многократной или одноразовой, неминуемой работы при сохранении времени автономной работы.

Он используется для поддержки обратной совместимости и может также использоваться под Android 5.0 (API уровня 21). Начиная с уровня API 23 или выше, GCM Network Manager использует JobScheduler для платформы. GCM Network Manager использует механизм планирования в службах Google Play, поэтому этот класс будет работать только в том случае, если на устройстве установлены сервисы Google Play.

Google настоятельно рекомендовал пользователям GCM перейти на FCM и вместо этого использовать диспетчер заданий Firebase для планирования любых задач.

Firebase Job Dispatcher

Firebase JobDispatcher также является библиотекой для планирования фоновых заданий. Он также используется для поддержки обратной совместимости (ниже API 21) и работает во всех последних версиях Android (API 9+).

Эта библиотека также будет работать, если на устройстве нет установленных сервисов Google Play. В этом состоянии эта библиотека внутренне использует AlarmManager. Если на устройстве доступно приложение Google Play, он использует механизм планирования в службах Google Play.

Sync Adapter

Sync adapters разработаны специально для синхронизации данных между устройством и облаком. Он должен использоваться только для этого типа задач. Синхронизация может быть вызвана изменениями данных в облаке или на устройстве или по истекшему времени.
Система будет пытаться синхронизировать только тогда, когда устройство подключено к сети.

Упражнение

Мы обсудили достаточно теории, поэтому теперь посмотрим, как использовать планировщик заданий Android.

Создание Job Service

Создайте JobSchedulerService extends JobService, который требует, чтобы были созданы два метода onStartJob (параметры JobParameters) и onStopJob (параметры JobParameters).

Метод onStartJob вызывается, когда JobScheduler решает запустить вашу работу. JobService работает в основном потоке, поэтому любая логика должна выполняться в отдельном потоке. Метод onStopJob вызывается, если система решила, что вы должны прекратить выполнение своей работы. Метод вызывается до jobFinished (JobParameters, boolean).

Вам также необходимо зарегистрировать свою службу в AndroidManifest.

Создать объект JobInfo

Чтобы построить объект JobInfo, передайте JobService в JobInfo.Builder (), как показано ниже. Этот конструктор заданий позволяет установить множество различных параметров управления при выполнении задания.

Запланированная задача

Теперь у нас есть JobInfo и JobService, поэтому пришло время планировать нашу работу. Все, что нам нужно сделать, это запланировать работу с требуемой JobInfo, как показано ниже:

Заключение

При планировании задания вам нужно тщательно подумать о том, когда и что должно вызвать вашу задачу, и что должно произойти, если она по какой-то причине не сработает. Вы должны быть очень осторожны с производительностью вашего приложения, а также с другими аспектами, такими как заряд батареи.

JobScheduler легко реализуется и обрабатывает большую часть за вас. При использовании JobScheduler наши запланированные задания сохраняются, даже если система перезагружается. В настоящий момент единственным недостатком JobScheduler является то, что он доступен только для 21 уровня api (Android 5.0).

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

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


Tasker — не единственное приложение для автоматизации устройств с Android, и многие его возможности можно также обнаружить в программах on, Locale и им подобных. Однако других столь функциональных приложений, как Tasker, не существует. Программа выходит далеко за рамки обычных шаблонов — имея некоторые навыки ее использования, можно придумывать практически любые сценарии для автоматизации, содержащие множество уровней, и даже создавать на основе Tasker собственные приложения.

Но впервые загрузив Tasker (на сайте разработчика доступна бесплатная триал-версия, работающая в течение семи дней), вы, скорее всего, будете разочарованы. Приложение напоминает коробку с конструктором, в которой есть множество самых разных деталей. При этом не все детали подходят друг к другу, а никаких готовых сценариев использования в приложении нет.


Поэтому даже для того, чтобы создать самую простую цепочку действий, нужно предварительно разобраться с терминологией Tasker и принципами его работы.

Для работы с приложением используется семь основных терминов: задачи, действия, контексты, профили, проекты, сцены, переменные. В основе любых операций, которые способна выполнить программа, лежит формула: «Если произошло событие X, нужно автоматически выполнить Y».

Y в этой формуле — это действие, то, что приложение автоматически выполняет при определенных условиях. Действием может быть отправка SMS, отключение сигнала при поступлении входящих звонков, вывод на экран уведомления и так далее. Всего в приложении предлагается более двухсот действий. Большинство из них имеют настройки и могут быть связаны между собой.


X в формуле — это контекст, то есть некое событие или условие, при срабатывании которого Tasker начинает действовать. В приложении предусмотрено несколько видов контекстов: время, дата, место, событие и состояние.


Если смартфон оказался за чертой города, это контекст места, а 7:15 утра — контекст времени. Контекст события — это, например, поступление входящего звонка с указанного номера. А контекст состояния — это некое условие, которое является активным в течение некоторого промежутка времени. И в течение этого времени выполняются заданные действия.

Ни действия, ни контексты не существуют сами по себе. Действиями управляют задачи, а контекстами — профили. Одна задача может содержать любое количество действий, а один профиль — до четырех контекстов и до двух задач. Таким образом, в рамках одной операции можно выполнять целый набор действий.

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

Профиль включает и контексты, и задачи, причем если в профиле используется несколько контекстов, то только один из них может быть контекстом события, ведь одновременное срабатывание двух контекстов в то же самое время невозможно. Профиль имеет собственные настройки, при помощи которых можно выбирать приоритет запуска задач, включать «тихий» режим работы (когда информация о срабатывании профиля не видна в строке состояния Android), указывать максимальное число его срабатываний и выбирать минимально допустимый промежуток времени, который может проходить между двумя его запусками.


Также в Tasker предусмотрена возможность создания элементов пользовательского интерфейса, которые тут называются сценами. Понятие проекта используется для организации всех задач, профилей и сцен в одном месте, для экспорта и создания на основе настроек Taskler отдельных приложений.

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

Оранжевый значок в виде молнии в верхней части окна предназначен для быстрого включения/отключения всех активных профилей. Встроенный поиск можно использовать для обнаружения созданных ранее задач, профилей, сцен, настроек приложения, а также для получения справочной информации по программе (последняя возможность работает только в режиме онлайн).

Для примера создадим простой профиль, который будет автоматически запускать приложение Skype при подключении гарнитуры к устройству. На вкладке профилей нажмите на кнопку создания нового элемента приложения и выберите контекст состояния «Аппаратура → Наушники подключены». В списке «Тип» выберите вариант «С микрофоном», чтобы приложение реагировало только на подключение гарнитуры.


Вернитесь к списку профилей и добавьте в профиль новую задачу.


Нужно будет придумать для нее произвольное название, скажем «Запуск Skype». Добавьте в задачу новое действие. Для удобства организации они разделены по группам, которых более двадцати.


Перейдите в категорию «Сигнал → Menu». Теперь нужно настроить действие. Для этого в поле Items нажмите на кнопку добавления нового элемента, после чего щелкните по кнопке «Действие». Укажите категорию «Приложение → Запустить приложение», а затем выберите Skype в списке всех установленных приложений, который будет выведен на экран.

Новый профиль готов к использованию. По умолчанию все вновь создаваемые в Tasker профили включаются сразу же после создания, поэтому, если вы пока что не планируете работать с ним, воспользуйтесь переключателем напротив названия профиля.


Все задачи, созданные пользователем, сохраняются на вкладке Tasks. Их можно редактировать, а также использовать повторно при создании новых профилей. Список доступных задач показывается каждый раз при добавлении задачи в новый профиль. Кстати, если в списке случайно выбрана не та задача, можно быстро вернуться к окну выбора при помощи кнопки Switch Event. Подобная кнопка — Switch State — отображается и при добавлении контекста.

Если нужно, чтобы профиль содержал несколько контекстов или задач, достаточно коснуться уже имеющегося в нем контекста (задачи) и некоторое время удерживать палец. Появится меню, в котором можно выбрать добавление нового элемента. Это меню также дает возможность удалять текущие элементы, клонировать контексты (это удобно, если нужно добавить два однотипных контекста с немного измененными настройками), менять задачи на другие.

Как уже было сказано выше, задачи могут запускаться не только автоматически, в рамках профилей, но и по требованию пользователя. Один из удобных способов ручного запуска — создание виджета задачи на стартовом экране. В этом случае для запуска задачи соблюдения никаких условий не потребуется.

Чтобы создать виджет для запуска задачи, перейдите к списку виджетов Android. Коснитесь элемента Tasker и удерживайте палец, пока виджет не будет перенесен на стартовый экран. При этом возникнет меню выбора задачи. Можно будет или выбрать из уже имеющихся, или создать новую задачу. После этого Tasker предложит вам возможность добавить в задачу дополнительные действия и выбрать значок для показа виджета. После завершения настройки его можно будет увидеть на стартовом экране.

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

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

Добавьте контекст «Состояние → Зарядка → Уровень зарядки аккумулятора». В его настройках укажите уровень заряда, при котором задача будет срабатывать.


Создайте новую задачу и добавьте действие «Экран → Яркость дисплея». Уменьшите яркость дисплея до желаемого уровня. Вернитесь к добавлению действий и добавьте еще одно, например «Сеть → Изменить статус Wi-Fi». Убедитесь, что в настройках действия выбран вариант «Отключить». Теперь Tasker также будет отключать соединение по Wi-Fi.

Также можно отключить автосинхронизацию. Для этого добавьте действие «Сеть → Автосинхронизация» и выберите вариант «Выключить» в списке «Установка».

Можно добавить и другие действия, которые помогут продлить срок автономной работы устройства.


Перегрев аккумулятора может стать причиной выхода устройства из строя, поэтому неплохо было бы узнавать об этом как можно раньше, чтобы адекватно реагировать. Для создания такого профиля используется событийный контекст «Зарядка → Перегрев аккумулятора». Используемая в профиле задача будет включать действие «Сигнал → Уведомление со звуком».


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

Если устройство оснащено модулем GPS, можно использовать контекст «Место». Он очень полезен для забывчивых. Например, если вы все время забываете зайти в банк, чтобы забрать новую карточку, можно настроить Tasker таким образом, чтобы он прислал вам SMS, как только вы окажетесь в радиусе пятисот метров от отделения.

Контекст «Место» может работать и без GPS, с использованием сетевых настроек. Но определение местоположения в этом случае происходит менее точно.


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

Для создания такого профиля добавьте контекст «Состояние → Sensor → Ориентация». В его настройках раскройте список «Положение» и выберите вариант «Экраном вниз».


Создайте новую задачу с действием «Аудио → Режим тишины». В настройках действия выберите вариант «Тишина» в списке «Режим».

Мы рассмотрели лишь несколько самых простых примеров работы с Tasker. Но программу можно с успехом использовать и в сотнях других случаев. Она может запускать приложения в заданное время, выводить на экран музыкальный плеер, как только вы вставляете наушники в гнездо, поздравлять с днем рождения всех друзей и родственников, автоматически отправляя SMS в нужные дни, будить любимых романтической эсэмэской по утрам и делать еще сотни других вещей, которые обязательно придут вам в голову, как только вы начнете использовать Tasker. Удачи в освоении!

Благодаря открытости для разработчиков Android может предложить своим пользователям функции, которых нет ни в одной другой мобильной ОС. Для каждой задачи существует множество приложений на любой вкус. В этот раз я расскажу о нескольких программах для автоматизации действий на смартфоне.

Tasker


Конечно, начать пост об автоматизации действий на Android нельзя ни с одного другого приложения. Tasker — одна из самых мощных, продвинутых и популярных программ в этой категории.

С её помощью можно не только автоматизировать работу сенсоров смартфона, добавлять пользовательские сценарии и тому подобное. С помощью Tasker можно управлять умными устройствами в доме. Вот лишь небольшой список примеров таких задач:

Кроме этого, программа может быть расширена при помощи огромного набора плагинов к ней. Единственный минус — Tasker стоит аж целых 100 рублей 😳.

AutomateIt


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

Сама программа бесплатна, а вот за готовые правила придётся заплатить. Но это нужно будет, если вам самому лень настраивать их.

Automate


Automate — хорошая альтернатива программам выше. Её основная особенность заключается в том, что правила настраиваются в виде диаграммы. Такое визуальное представление может быть для кого-то более простым и понятным. При этом для каждого блока диаграммы можно настроить несколько веток и объединять различные шаги в зависимости от условий.

Ещё программа бесплатна и поддерживает плагины от Tasker и Locale.

Droid Automation


Droid Automation поставляется в двух версиях: Pro за 190 рублей и бесплатной. В бесплатной версии недоступна работа с Root-девайсами.

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

Для рут-боев доступны сценарии, включающие действия для смартфонов с рут-доступом.

MacroDroid


MacroDroid — это, пожалуй, самая юзер-френдли программа из всех. Красивый и понятный русскоязычный интерфейс поможет быстро настроить сценарии использования при помощи специального мастера, который проведёт по всем шагам.

Кроме этого, для популярных сценариев в программе сразу же предусмотрены шаблоны. А продвинутые пользователи смогут расширить возможности MacroDroid с помощью плагинов и условий вроде ЕСЛИ, ТОГДА, ИЛИ и других.

Automagic * Automation


Ищете альтернативу Automate? Automagic * Automation — и есть такая альтернатива за 113 рублей. И на самом деле, сказать что-то ещё про это приложение сложно. Вы так же настраиваете сценарии, указываете условия и действия. Всё это представлено в виде диаграмм с возможностью разветвления.

Contextual App Folder (C.A.F.)


C.A.F. нельзя назвать полноценной программой для автоматизации действий и работы устройства. «Фишка» приложения в контекстуально-зависимых папках с приложениями.

Во время первоначальной настройки вы разбиваете все (нужные) приложения на смартфоне по категориям. Например, дома вам нужен один набор программ, на работе — другой, а во время занятий спортом — третий. После этого Contextual App Folder при помощи одного из триггеров (геолокация, Wi-Fi, Bluetooth) автоматически будет создавать на рабочем столе папку с нужными приложениями.

E-Robot


E-Robot является прямой альтернативой Tasker и AutomateIt. Но, в отличие от них, сценарии оперируют таким понятием, как команда. На самом деле, от смены названия ничего не меняется, и вы всё так же создаёте различные сценарии в зависимости от наступающих событий.

Команды понадобятся лишь тем, кто знаком с JavaScript. Да, E-Robot может выполнять скрипты.

Если покопаться в Google Play, можно найти ещё с десяток подобных программ. Я в свой пост включил лишь самые лучшие или популярные из них. К тому же я опирался на возможность создания комплексных сценариев с различными результатами и максимальной автоматизацией.

Но если вы просто хотите включать автоматически музыку при подключении наушников, выключать звонки на работе, то для этого можно скачать более простые программы. Которые в один тап настраивают такие сценарии. Например, Profile Manager.

Читайте также: