Ease your life by automatically performing routine actions.
Make your smart phone smarter: tell it what to do under different situations.
Easer is an event-driven Android automation tool. It knows various events (see below) and YOU (the user) tell it what to do on what events (you can even combine multiple events). Thus, you no longer need to manually perform routine actions, or worry about forgetting to perform them.
More than that, Easer can not only handle Events, but also check for Conditions. This makes things simpler when they can’t be seens as Events, and makes it more intuitive.
It doesn’t stop here: in Easer, you can pass message from an Event to a Profile. This allow dynamic content to be generated in Profiles.
You can think of Easer as a local version of IFTTT: trigger actions or change settings (Operations, bundled as Profiles) under different situations (Events).
Easer is also a coordinator of inter-app actions (e.g. communications) – it can send custom
Broadcasts upon receiving certain
Broadcasts (designed by YOU).
Broadcast (together with
Intent) is the way Android provides for inter-app communication and signaling.
You can chain Script (which specifies Events or Condition as well as its Profile) as trees (i.e. setting dependencies), by specifying its Parent. This mechanism allows Easer to (somewhat) create custom Events using Boolean logic (e.g. “and”, “or”).
Easer is adding the support of Condition mechanism, and is transforming relevant Event to Condition, for better expressivity.
When a node in the Script tree changes its state, Easer will take corresponding actions (e.g. when an Event happens, Easer will load its corresponding Profile and listen to children nodes).
Passing content from Event
By the Dynamics mechanism (a mechanism like macro), Easer can pass specific parts (contents) of Events to Profiles (and their corresponding Operations). This makes the text content in a Profile not limited to static contents, but can change dynamically.
Thanks to the good decoupling, when using this feature, user need to specify placeholder in Profile, and link to Dynamics in the Script.
Also, have a look at the wiki, and especially the FAQ.
- Set your phone to silent mode at 2 a.m.
- Cancel silent mode at 8 a.m. on weekdays, and at 10 a.m. on weekends
- Turn on WiFi when approaching your home; turn off WiFi when leaving your home
Easer supports listening to many Android events (e.g. date/time, system status, calendar). The supported operations include, but are not limited to, changing Android settings, sending messages, and executing commands.
For a list of current features, see this page.
Raising issues or participating discussion / development
If you encounter any problem when using Easer, please raise an issue.
If you’d like to engage more (e.g. join discussion, extend Easer, join development), you can find more information on the README in the repo.
If you would like to make a donation, please see DONATE.md.
Any amount of help is appreciated.
Proud to be open-source
Copyright (c) 2016 - 2018 Rui Zhao (renyuneyun) email@example.com
Unless otherwise stated, Easer is licensed under GPLv3+ (See LICENSE)
The expected functions of Easer require access to personal information (e.g. location, calendar) and networking capabilities. We would never want a tool that is expected to better facilitate our lives to spy on us, so we must prevent that from happening as best as we can. The only way to do this is to allow anyone to inspect every part of Easer, which is to say that Easer (and any derived works) must be made open source. Because of the design of Easer, functionality will eventually become modules / plugins. The GPL requires that derived works also be licensed under the GPL, and thus prevents malicious code from sneaking into these parts.
In fact, ensuring that derived works / plugins are licensed under the GPL is unnecessary – they only need to be open source. However, GPL is the only license (that I know of) which requires that derived works / plugins are open sourced, so it’s the only choice.
More information on license
See README in the repo.