diff --git a/converter.sh b/converter.sh new file mode 100644 index 0000000..f451165 --- /dev/null +++ b/converter.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +for file in $(find . -name "*.html") +do + basefile=`basename $file` + withoutextension=${basefile%.html} + therealpath=`realpath $file` + relativedir=`realpath --relative-to=$PWD $therealpath` + echo "Converting $basefile" + pandoc $therealpath -f html -t markdown -s -o $(dirname ${relativedir})/${withoutextension}.md +done \ No newline at end of file diff --git a/en/activity_actionedit.md b/en/activity_actionedit.md new file mode 100644 index 0000000..ae3d090 --- /dev/null +++ b/en/activity_actionedit.md @@ -0,0 +1,128 @@ +--- +title: 'Tasker: Action Edit' +--- + +Action Edit ![](icon_tasker.png) +-------------------------------- + +This screen allows configuration of a single action in a Task. + +#### General + +At top left is the name of the action. Tapping on this allows it to be +changed. + +Bottom-right is a help button. Please be sure to read the action help of +every action before you use it for the first time, there may be e.g. +device specific restrictions you should know about. + +#### Action Parameters + +A *parameter* gives extra detail about how the action is to be carried +out. + +##### Text Parameters + +- are sometimes optional: in that case the text *Optional* will appear + as a hint unless the entry box has already been filled in +- sometimes have a dialog to help you fill in a value which you can + access by clicking the magnifying glass icon next to them +- can have [variables](variables.html) automatically inserted by + clicking the tag icon next to them. + +##### Numeric Slider Parameters + +Clicking the arrows icon next to numeric sliders allows you to specify +the number textually or use a [variable](variables.html) for the +parameter instead, if the value will not be known until the action is +actually executed. + +##### *If* (Condition) Parameter + +*(most actions)* + +Allows specification of one or more conditions which must match if this +action is to execute. + +Single conditions consist of a *left-hand side* (usually a variable +name), an *operator* and a *right-hand-side* for example +`%number, Equals, 1` indicates that the action will be executed if the +variable %number has the value 1. + +When more than one condition is specified, they must be combined via +*And* (all conditions must be true), *Or* (at least one condition must +be true) or *Xor* (exactly one must be true). These \'combiners\' are +called *boolean operators*. + +Usually, 2 or 3 conditions will be combined with all *And*s or all +*Or*s, but in order to allow more complicated logic, Tasker also offers +*And* and *Or* in high-precedence versions. Of the 4 boolean operators +which are available, the selection goes from low to high precedence +ones. + +The higher the precedence of a boolean operator, the further to the +right it is shown. This enables the logical groups to be visualised. + +Examples: + +`True | False & True | False` is the same as +`( True | False ) & ( True | False )` so is **True**. + +`True & False | True & False` is the same as +`True & ( False | True ) & False` so is **False**. + +`True & False | True |+ False` is the same as +`True & ( False | ( True | False ) )` so is **True**. + +Note that the order of the conditions can mean that some conditions are +never evaluated. For instance, when two conditions are present and the +one above an *And* is **false** then the condition below it will never +be evaluated. This can be advantageous if the second condition takes +relatively more resources e.g. involves matching against a lot of text. + +Please see the section on [Flow Control](flowcontrol.html) for more +information. + +##### *Continue Task After Error* Parameter + +*(selected actions only)* + +By default, if an action fails with an error (e.g. the user specified to +delete a file that doesn\'t exist) Tasker will stop the task immediately +and the remaining actions will never be executed. + +This parameter specifies that the task should continue even if this +action fails. + +In addition, if it\'s checked, errors will be logged in the system log +as diagnostics instead of errors and error popups will be surpressed. + +##### *Label* Parameter + +*(all actions)* + +A label for the action which is shown on the Task Edit screen. This +parameter could also be used to add comments to actions to help +understand how the task works. + +Labels are also used with `Goto` actions to jump from one part of the +task to another. + +#### Menu Options + +##### *Search* + +Search for and jump to a specified action. The entered term is searched +against action properties in the following order: + +1. the action number +2. the action label if present +3. the action name +4. the action description, including the action parameter contents + +The matching is case-insensitive. Searching starts from the current +action and wraps around. Only the header action ( + +If + +or *For*) of closed blocks is searched. diff --git a/en/activity_elementedit.md b/en/activity_elementedit.md new file mode 100644 index 0000000..e2e4457 --- /dev/null +++ b/en/activity_elementedit.md @@ -0,0 +1,258 @@ +--- +title: 'Tasker: Scene Element Edit' +--- + +Scene Element Edit ![](icon_tasker.png) +--------------------------------------- + +Allows configuration of the properties of a scene element. The different +types of property are divided into tabs. + +- [UI](#ui) +- [Items](#items) +- [Background](#background) +- [Event](#event) + - [Change](#checkchange) + - [Focus](#focus) + - [Tap, Long Tap](#tap) + - [Item Select](#itemselect) + - [Value Selected](#value) + - [Item Tap](#itemtap) + - [Stroke](#stroke) + - [Text Changed](#text) + - [Link Tap](#linktap) + - [Page Loaded](#pageloaded) + - [Video](#video) + +Not all elements have all tabs. + +[]{#ui} + +### UI + +For the most part, configures the visual style of the element. +[]{#items} + +### Items + +Only relevant to Menu and Spinner elements. + +Each row configures an item in the menu/spinner. Starting from the left, +the controls are: + +- **selection checkbox**\ + this is only present when *Selection Mode* is set to **Single** or + **Multi**. It stipulates whether the item will be shown as selected + when the menu is displayed. +- **icon button**\ + the icon to show for the item. If you don\'t want to show an icon, + hide the icon element in the Layout parameter in the UI tab +- **label text**\ + the label to show for the item. If you don\'t want to show a label, + hide the label element in the Layout parameter in the UI tab +- **action button**\ + an action to run when the item is tapped + +To add an item, click the plus button at the bottom of the screen. Items +can be rearranged and deleted by click-and-dragging at the right hand +side. + +[]{#background} + +### Background + +Configures a rectangle shape to be used as the background for the +element when it is displayed. The background will be stretched to fit +the size of the element. + +If you want to use an image for a background, create a separate Image +element and place it underneath. []{#event} + +### Event Tabs + +Event tabs stipulate what Tasker should do when the user interacts with +the element in some way. When the scene is showing, the event will also +occur if an action (probably Element Value) sets the element. + +Most events consist only of a task to specify but some allow a filter +specification so that the task only runs if the event matches the +filter. + +To help the task to decide what to do with the event and to allow a +single task to handle many different events if desired, Tasker sets +certain local variables which give specific information about it. The +variables are easily accessible by clicking the usual variable tag icon +in any action in the task. + +The following variables are available in all such tasks: + +- **%scene\_name**\ + the name of the scene containing the element +- **%element\_name**\ + the name of the element that the user interacted with (e.g. Button1) +- **%element\_type**\ + the type of element (e.g. Button) +- **%event\_type**\ + the name of the event (e.g. Tap) + +[]{#text} + +#### Text Changed + +Elements: *TextEdit* + +This event is triggered whenever the text changes e.g. because a letter +key has been pressed while the element had focus. + +- **%new\_val**\ + the new text +- **%old\_val**\ + the old text + +Text entry is buffered so that it may be up to 1 or 2 seconds before new +input is seen, and that input may include several accumulated changes. + +[]{#checkchange} + +#### Change + +Elements: *CheckBox, Toggle* + +- **%new\_val**\ + the new state of the element (*on* or *off*) +- **%old\_val**\ + the last state (*on* or *off*) + +[]{#focus} + +#### Focus + +This event is triggered when the element gains or loses focus, probably +because the user has tapped it or another focusable element. + +Elements: *TextEdit* + +- **%focused**\ + whether the element now has focus (*true*) or not (*false*) + +[]{#tap} + +#### Tap, Long Tap + +Elements: *Button, Doodle, Image, Map, Oval, Rectangle, Text* + +In a *Map* element, the following variables are available: + +- **%coord**\ + the latitute,longitude of the tapped location on the map +- **%label**\ + the label of the tapped GeoMarker (if any). You can add GeoMarkers + to a Map element with the action Scene / Element Add GeoMarker + +[]{#value} + +#### Value Selected + +Elements: *Number Picker, Slider* + +- **%new\_val**\ + the new value of the element (e.g. 50) +- **%old\_val**\ + the last selected value (e.g. 43) + +[]{#itemtap} + +#### Item Tap, Item Long Tap + +Elements: *Menu* + +- **%select\_indices**\ + a comma-separated list of currently selected items in the list (e.g. + 3,4) +- **%select\_labels**\ + a comma-separated list of the labels of currently selected items in + the list (e.g. Blue,Yellow) +- **%tap\_index**\ + the index of the item that was tapped to cause this event (e.g. 3) +- **%tap\_label**\ + the label of the item that was tapped to cause this event (e.g. + Blue) + +[]{#stroke} + +#### Stroke + +Elements: *Doodle, Image, Oval, Rectangle, Text* + +A stroke has two filter parameters. + +- **Direction**\ + the direction from the start point of the stroke to the end point +- **Length**\ + minimum distance in (approximate) pixels from the start point of the + stroke to the end point + +If either of these parameters don\'t match the event, the task will not +run. + +- **%stroke\_dir**\ + Direction, as described above +- **%stroke\_len**\ + Length, as described above + +[]{#itemselect} + +#### Item Select + +Elements: *Spinner* + +Occurs when a **new** item is selected. + +- **%tap\_index**\ + the index of the item that was selected +- **%tap\_label**\ + the label of the item that was selected + +[]{#linktap} + +#### Link Tap + +Elements: *WebView* + +A Link Tap has two filter parameters: + +- **URL**\ + the URL of the tapped link. If entered, the tapped URL must + [match](matching.html) the entry (e.g. http://\*.fruit.com) for the + task to run +- **Stop Event**\ + whether to stop the WebView following the link + + + +- **%url**\ + URL as described above + +[]{#pageloaded} + +#### Page Loaded + +Elements: *WebView* + +- **%url**\ + the URL of the page (e.g. http://i.hate.fruit/except/mangos.html) + +[]{#video} + +#### Video + +Elements: *Video* + +Occurs when the state of the video playback changes. + +- **%event\_subtype**\ + the type of the video event, possible values being: *Prepared, + BufferStart, BufferEnd, RenderStart, Lagging, Finished* + +Note that the **Finished** event will never occur if the Video element +has the `Loop` parameter checked. diff --git a/en/activity_eventedit.md b/en/activity_eventedit.md new file mode 100644 index 0000000..97787b5 --- /dev/null +++ b/en/activity_eventedit.md @@ -0,0 +1,53 @@ +--- +title: 'Tasker: Event Edit' +--- + +Event Edit ![](icon_tasker.png) +------------------------------- + +This screen allows configuration of an [Event +Context](eventcontext.html). + +#### Event Name + +The name of the event is given at the top of the screen. Clicking on it +allows changing to another event type. + +In the top right is a button to show help for the displayed event type. + +#### Priority + +Only present for relevant events. + +Selects the priority at which this event will be detected. An event can +be processed by other Tasker Profiles, other installed applications and +system processes. + +If priority is high, then this profile will be more likely to detect the +event before other processes, and vice versa. + +#### Stop Event + +Only present for relevant events. + +If checked, then once this profile has dealt with the event, other user +or system applications will no longer be able to see it. + +You can achieve different effects by combining *Priority* and *Stop +Event*. For instance, if you want to show a Tasker menu when the camera +button is pressed, you would set *Priority* **High** and check the *Stop +Flag*, because you do not want the camera application to appear +afterwards. + +#### Event Parameters + +Some events have paramaters to specify more details about the event. To +get help on particular parameters, click the question-mark icon at top +right. + +Text parameters are treated as [pattern matches](matching.html). + +If you would like to make more complex comparions (e.g. mathematical +expressions), leave the event parameter blank and instead put a +[condition](flowcontrol.html#condition) on the first action of the task +you execute with the profile. diff --git a/en/activity_locselect.md b/en/activity_locselect.md new file mode 100644 index 0000000..cc11a3e --- /dev/null +++ b/en/activity_locselect.md @@ -0,0 +1,74 @@ +--- +title: 'Tasker: Location Edit' +--- + +Location Edit ![](icon_tasker.png) +---------------------------------- + +This screen allows configuration of a [Location +Context](loccontext.html). + +#### Map Display + +The map shows the location (base of the flag icon), radius and names of +all defined location contexts + +The location currently being defined has a yellow base, other location +contexts have a blue base. + +#### Map Controls + +- **long-click** on the map to select a location for this context. +- **long-click then drag** on the flag for the current location to + drag it + +Use the pull-down selector under the map to specify the radius for this +context. + +**Important:** if your radius is too small compared to the accuracy of +the fixes you are receiving, your context may never go active. If you +can\'t get a fix, try increasing the radius. Typically, a good radius +would be around twice the accuracy of the fixes you are receiving. + +If you have no internet available in order to retrieve the map tiles, +you can still use the **Get Fix** button (see below) to specify your +current location. + +#### Action Bar Options + +##### Grab (\'My Location\') Button + +Acquires a location fix using the enabled and available providers (make +sure the GPS Button is clicked first if you want to use GPS). + +Once a fix is acquired, the latitude, longitude and radius of this +location context are set according to it. If you reduce the radius after +a fix, Tasker may no longer accurately detect whether you are in or out +of the context. + +When trying to determine current location, Tasker will keep going with +fixes until they stop improving (e.g. as the GPS locks on to more +satellites). If you get impatient you can press the Get Fix button again +to stop the process (its label is changed to **Stop** while a fix is +being acquired). + +##### Address Menu Item + +Allows entry of an address for which this location context should be +active. + +#### Bottom Buttons + +##### Net Button + +The Net toggle button specifies whether to use the +[Network](loccontext.html#net) location provider to monitor for this +location + +##### GPS Button + +The GPS toggle button specifies whether to use +[GPS](loccontext.html#gps) to monitor for this location (assuming it is +available on the device). If GPS is not used, the network will need to +be available in order to query for location fixes based on cell-towers +or WiFi data. diff --git a/en/activity_main.md b/en/activity_main.md new file mode 100644 index 0000000..2199691 --- /dev/null +++ b/en/activity_main.md @@ -0,0 +1,224 @@ +--- +title: 'Tasker: Main Screen' +--- + +Main Screen ![](icon_tasker.png) +-------------------------------- + +This is the first screen shown when you startup Tasker. It allows you to +organize and configure Tasker\'s four main \'building blocks\': +*Profiles, Tasks, Scenes* and *Variables*. + +- Main Tabs + - [Profiles](#profiles) + - [Tasks](#tasks) + - [Scenes](#scenes) + - [Variables](#variables) +- [Action Bar](#action) +- [Menus](#menus) +- [Projects](#projects) + +### Main Tabs + +Displayed in the action bar on most devices. + +- **Click** on a tab to view a list of the relevant things +- **Click** on an **already selected** tab to get options for it + +[]{#profiles} + +#### *Profiles* + +Each item in the list represents a profile. The profile links contexts +(conditions) on the left to tasks which should be run on the right. The +profile name is green if the profile is active. There are three main +parts to each profile. + +##### *1. Title Bar* + +This shows the profile name (or description if it has no name) and a +switch on the right shows whether the profile is enabled or not. + +- **Click** on the name to expand / collapse the profile. When + expanded, the contexts and tasks (described below), are visible. +- **Long-click** on the profile name to get profile options or to drag + profile(s) around +- **Click** on the switch to control whether the profile is enabled or + not. + +Important: the switch being set to **on** does **not** mean the profile +is **active** (will run its tasks), it means that the profile **can** +become active **if** its conditions are met. + +##### *2. Contexts* + +On the left hand side of the profile are an icon and text for each +context in the profile. The contexts dictate when the profile should +become active. When **all** contexts are active then the profile will be +active. + +- **Click** on the context to edit it +- **Long-click** to show management options, such as editing or adding + a new context + +You can configure what clicks and long-clicks on contexts do in +`Menu / Prefs / UI`. + +##### *3. Tasks* + +On the right hand side of the profile are one or two tasks to carry out +based on its activation status. + +- **Click** on the task to edit it +- **Long-click** to show management options. + +A task indicated with a **green, right-pointing** arrow is an *entry* +task, executed when the profile first becomes active. + +A task indicated with a **red, left-pointing** arrow is an *exit* task, +executed when the profile becomes inactive again. + +Exception: a profile containing an event context or a repeating or +non-ranged time context has two green arrows, to denote that both tasks +are executed immediately because the profile activation and deactivation +is instantaneous. + +Click on the **Profiles** tab when it is already selected for general +profile-related options such as sorting. + +[]{#tasks} + +#### Tasks + +The task list shows the named [tasks](tasks.html) which have been +created. + +- **Click** on a task to edit it +- **Long-click** for options or to drag task(s) around + +Note that a profile can be assigned an *anonymous* task (one without a +name) which is not accessible in the task list, only via the relevent +profile in the profile list. + +Click on the **Tasks** tab when it is already selected for general +task-related options such as sorting. + +[]{#scenes} + +#### Scenes + +The scene list shows the [scenes](scenes.html) which have been created. + +- **Click** on a scene to edit it +- **Long-click** for options or to drag scene(s) around + +Scenes with a green name have been created but may be invisible +(hidden). + +Click on the **Scenes** tab when it is already selected for general +scene-related options such as sorting. + +[]{#variables} + +#### Variables + +The Variables tab is not shown if [Beginner Mode](beginner.html) is +enabled. + +By default, all global [user-variables](variables.html) that Tasker +knows about are listed, which includes any that have a value set or are +mentioned somewhere in a profile, task or scene. + +- **Click** on a variable to edit it +- **Long-click** for options + +Note that variables whose names are all lower-case are *local* variables +and not shown because they are only valid within the task that refers to +them. + +Click on the **Vars** tab when it is already selected for general +variable-related options such as sorting and filtering. + +The filter controls function as follows: + +- **Indexed** (button)\ + includes variables whose names end in a number e.g. `%LOC3`, + otherwise they are excluded. +- **Empty** (button)\ + includes variables which have currently have no value assigned, + deselect to show only variables that have a value. +- **Referenced** (button,home project only)\ + includes variables which are referenced in profiles, tasks or + scenes.\ + Deselect to show only \'orphan\' variables. +- **Filter** (textbox)\ + excludes variables which don\'t contain the specified text somewhere + in their name (case-sensitive) + +In a user-created project, only variables referenced by that project are +shown. + +Unlike most screens in Tasker, changes made in the variable list cannot +be cancelled. + +[]{#action} + +#### Action Bar + +##### *Apply* Button + +Save and apply any changes which have been made **without** exiting the +UI. + +This is unnecessary prior to leaving the UI via the back button or home +key, it\'s just for convenience when testing changes. + +Not visible in [Beginner Mode](beginner.html). + +##### *Overflow* Button + +Click to access menu options if no menu hard-key is available on the +device. []{#menus} + +### Menus + +#### Menu Item: Browse Examples + +Links to websites with projects, profiles etc offering solutions for +common problems. Important: once downloaded you need to import the file +into your active user data. For example, profiles are imported by +long-clicking the profile tab and selecting Import. + +#### Menu Items: Data + +##### Clear + +Removes all data that has been created to that point. Does not remove +preferences (use `Menu / Preferences` and click **Defaults** for that) +or variables (long-click on the Variables tab for that). + +##### Backup + +Saves the existing user data to a backup file on external storage. + +##### Restore + +Options for restoring backups of various types. []{#projects} + +### Projects + +Tasker allows organisation of profiles, tasks, scenes and variables into +groups called *Projects*, each with a separate *Project Tab*. + +The projects tabs are hidden in [Beginner Mode](beginner.html). + +- **Click** on a project tab to switch to viewing only things in that + project +- **Long-click** on a project tab for options, including adding a new + tab. Options can also be accessed by a single click on the selected + project tab. +- **Long-click and Select**, then drag to a project tab, any items you + want to move to that project + +The first tab has a slightly special status, it cannot be removed and +anything which is not a member of another project is placed there. diff --git a/en/activity_runlog.md b/en/activity_runlog.md new file mode 100644 index 0000000..fa088bf --- /dev/null +++ b/en/activity_runlog.md @@ -0,0 +1,140 @@ +--- +title: 'Tasker: Run Log' +--- + +Run Log ![](icon_tasker.png) +---------------------------- + +The *Run Log* shows profile status changes and task/action execution to +help when things aren\'t working as expected. Log entries will only be +recorded when the log is enabled by the switch in the top right. + +Items are colour-coded according to what they refer to: + +- purple: a task +- orange: a profile +- light blue: an action +- black/white: the monitor or execution service + +Most items are long-clickable for options e.g. to view the corresponding +item from the user configuration. + +### Details Column + +Displays the thing which the entry refers to. For example, `MyTask.Wait` +refers to a *Wait* action in the task *MyTask*. + +Some notable details are: + +- `System` refers to a task created by Tasker, usually to restore a + [setting](settings.html) when a profile deactivates. +- `Anon` refers to an *anonymous* task (has no name) which is the + entry or exit task of a profile. +- actions with a variable paramater show (after the action name) what + the value of the variable was **after** the action has completed + +### ID Column + +Shows Tasker\'s internal ID for the thing which the entry refers to. +This is most useful for actions e.g. `2.4` refers to the fourth action +in the task with ID 2. + +Some task or action ID entries may also have a number after a colon; +since multiple copies of a particular task can run at the same time, +each task also receives a unique *execution* ID to distinguish it from +others with the same *data* ID. The execution ID is shown with a colon +e.g. a task with ID`2:3` is the task with data ID 2 and execution ID 3. + +Usually, the execution service will start up, run a task and then stop, +so most tasks have execution ID 1. The Run Log doesn\'t show the +execution ID in that case. + +### Status Column + +Describes the new status of whatever has changed which caused a log +entry to be made. A status which is erronous (a problem occured) is +displayed in red text. + +##### Services + +- *Start*\ + the service has started. Unexpected *Start* entries for the Monitor + service are usually caused by Android killing the service because + the `Run In Foreground` has been disabled in Tasker\'s Monitor + preferences +- *Stop*\ + the service has stopped +- *Restart*\ + the service was restarted, usually because new data must be loaded + due to the user changing the configuration. + +##### Profiles + +- *Active*\ + the profiles conditions were met so it became active +- *Inactive*\ + the profiles conditions were no longer all met, so became + deactivated +- *Instant*\ + an [instant profile](faq-other.html#instant) had a momentary + activation + +##### Tasks + +- *RejBad*\ + task was rejected because it was malformed task e.g. had no actions +- *RejCopy*\ + task was rejected because it\'s a second copy of a task which has + *Abort New Task* set for *Collision Handling* in its preferences +- *RejMaxQ*\ + the maximum number of queued tasks (determined in Action + preferences) has been reached +- *RejOff*\ + Tasker was disabled at the time the task was submitted +- *Running*\ + the task has been entered in the run queue. Other tasks may still + have their actions executed before this one (see [Task + Scheduling](tasks.html#scheduling)) +- *ExitErr*\ + the task has stopped after an error +- *ExitOK*\ + the task has finished all its actions and stopped +- *ExitRep*\ + the task has stopped because a second copy of it has arrived and + *Abort Existing Task* s specified for its *Collision Handling* + preferences +- *ExitKill*\ + the task has been stopped because the execution service is stopping + +##### Actions + +- *Disabled*\ + the action was disabled via the UI so was skipped +- *Err*\ + an error occurred while running the action, causing the task to stop +- *ErrIgnore*\ + an error occurred, but the task could continue (probably because + *Continue On Error* was specified in the action parameters +- *Exception*\ + a totally unexpected error occurred (things like bugs in Tasker or + Android), causing the action to fail and the task to stop +- *OK*: the action completed OK + +### Pause/Play Indicator + +The Pause/Play indicator shows whether the list of entries is updating. +That\'s only the case when the list is at the top i.e. the most recent +chronological entries are showing. + +### Filter Controls + +Below the list of log entries are some filter controls. + +Profiles, tasks and action entries are only shown if the corresponding +button is toggled on. + +If a filter text is entered in the text box, entries will only be +displayed if they have text which matches the filter. + +When an entry is excluded by the filter controls, it\'s shown as a small +bar on the left side of the list. diff --git a/en/activity_sceneedit.md b/en/activity_sceneedit.md new file mode 100644 index 0000000..edcfe65 --- /dev/null +++ b/en/activity_sceneedit.md @@ -0,0 +1,114 @@ +--- +title: 'Tasker: Scene Edit' +--- + +Scene Edit ![](icon_tasker.png) +------------------------------- + +The scene editor is used for designing custom scenes. + +The editor consists of three areas: + +### Display Area + +The main part of the editor, where the position and size of elements are +arranged. The display area has two modes dependent on the setting of the +magnifying glass icon in the corner. + +#### Preview Mode + +This mode shows the scene as it will appear when displayed. + +- Click-and-drag on the **edge** of the scene to resize it + +#### Editing Mode + +This mode is zoomed to make editing easier. + +- **Long-click** on an **empty** area to create a new element + positioned there +- **Long-click** on an **element** to get options for the element +- **Click** on an **element** to edit it. +- **Click-and-drag** on the **centre** of an element to move it +- **Click-and-drag** on the **edge** of an element to resize it + +When moving and resizing, the sides of elements are snapped to a grid to +make alignment easier. The grid size is unique to each scene and can be +changed via **Menu / Grid Size**. + +### Tool Bar + +#### Touch Mode + +There are four touch modes which decide the effect of taps on the +display area. *Normal Mode* is described above. *Edit Mode* is the same +as *Normal Mode* except that all controls except the Touch Mode selector +are hidden to allow access to small controls along the scene edges. +*Move Mode* is intended to make it easier to reposition elements. +*Resize* mode is for making resizing easier. + +#### Element Picker + +Allows selection of an element by name. This is most useful when an +element is difficult to directly click on due to other elements or +because it\'s very small. + +Both short and long clicks on the element names behave the same as short +and long clicks on the element itself. + +#### Undo + +Allows undo of all operations, up to 20 steps in the past. + +#### New Element + +Create a new element in the **middle** of the scene. Useful if the scene +is already cluttered with a lot of elements so there is no free space. + +### Menu Options + +#### Background Colour + +A complex background can be set by long-tapping an element and +specifying it as the [background element](#back). If a uniform colour is +sufficient, it can also be specified with this menu option. + +However, there is a special case where it\'s a good idea to specify a +background colour even if you already have a background element. A scene +is resized to fit the container into which it\'s placed, but in some +cases (e.g. when it is shown as a full screen activity) there will be +margins left on one side of the container because the *aspect ration* of +the scene (the relative size of its width and height) of a scene is +never changed. In such a case, the margins are coloured with the +background colour specified here. + +### Element Long-Click Options + +[]{#back} + +#### Set Background + +An element which is set as the scene background is resized to always +fill the whole scene and interferes less with selection of other +elements. To reverse this, long-tap on it and select **Set Foreground**. + +#### Pin + +When an element is positioned satisfactorily, it can be pinned to make +it easier to select and manipulate other elements. To reverse this, +long-tap on it and select **Unpin**. + +#### Set Depth + +Each element has a particular depth which is unique to it. Deeper +elements are obscured by shallower elements which overlap them. + +### Orientation + +The geometry (**position** and **size**) of each element can be +configured independently for portrait and landscape display orientations +by rotating the device to the desired orientation in the editor. + +If no geometry is configured for a particular orientation when the scene +is displayed, Tasker will attempt to fit the elements into the scene +based on the geometry of the elements in the other orientation. diff --git a/en/activity_scenepropertiesedit.md b/en/activity_scenepropertiesedit.md new file mode 100644 index 0000000..3cb912a --- /dev/null +++ b/en/activity_scenepropertiesedit.md @@ -0,0 +1,156 @@ +--- +title: 'Tasker: Scene Properties Edit' +--- + +Scene Properties Edit ![](icon_tasker.png) +------------------------------------------ + +Allows configuration of the general properties of a scene. The different +types of property are divided into tabs. + +Each basic type of scene (*Overlay, Dialog* and *Activity*) has a +different set of relevant properties. The *Property Type* parameter in +the **UI** tab determines which properties are shown for configuration. + +- [UI](#ui) +- [Actions](#actions) +- [Event](#event) + - [Key](#key) + - [Home Tap](#hometap) + - [Tab Tap](#tabtab) + +[]{#ui} + +### UI + +Configures the visual style and content of the scene. + +*Geometry* (not shown in [Beginner Mode](beginner.html)) allows precise +specifiction of the pixel size of the scene in portrait and/or landscape +modes. + +*Orientation* determines how to make the decision about whether the +scene should be displayed in portrait or landscape mode. The [Android +developer +guide](https://developer.android.com/reference/android/R.attr.html#screenOrientation) +explains the various options. + +The *Action Bar Style, Title, Subtitle, Icon* and *Tab Labels* are only +relevant to Activity scenes and refer to properties of the action bar. + +*Icon* refers to the home icon in the top-left of the action bar. When +clixked it generates a [Home Tap](#hometap) event. + +*Tab Labels* is a comma-separated list of tabs to show in the action +bar. When a tab is selected it generates a [Tab Tap](#tabtap) event. + +[]{#actions} + +### Actions + +Only relevant for Activity scenes. + +Each row configures an action item in the action bar. Starting from the +left, the controls are: + +- **icon button**\ + the icon to show for the item +- **label text**\ + the label to show for the item +- **action button**\ + an action to run when the item is tapped + +To add an item, click the plus button at the bottom of the screen. Items +can be rearranged and deleted by click-and-dragging at the right hand +side. + +Whether the items are shown in the main bar or the *Overflow Menu* +(accessed via the 3 dots in the top right of the action bar) is decided +using the following rules: + +- items with **just an icon** will always be shown in the main bar +- items with **icon and label** will be shown if there is room +- items with **just a label** will always be in the overflow menu + +[]{#event} + +### Event Tabs + +Event tabs stipulate what Tasker should do when the user interacts with +the scene in some way. Most consist only of a task to specify but some +allow a filter specification so that the task only runs if the event +matches the filter. + +To help the task to decide what to do with the event and to allow a +single task to handle many different events if desired, Tasker sets +certain local variables which give specific information about it. The +variables are easily accessible by clicking the usual variable tag icon +in any action in the task. + +The following variables are available in all such tasks: + +- **%scene\_name**\ + the name of the scene containing the element +- **%event\_type**\ + the name of the event (e.g. Tab Tap) + +[]{#key} + +#### Key + +Available only for Dialog and Activity scenes. + +Occurs when a key has been pressed which has **not been dealt with +elsewhere**. Note that EditText elements with focus will absorb key +presses and they won\'t generate a separate Key event. + +The filter part of the Key event acts as follows: + +- *Keys*: a slash-separated (/) list limiting the keys to handle, + other keys will be passed on to the system to handle. When no keys + are specified, all keys will be handled.\ + The keys can be specified via code or name e.g. **back/78/a** +- *Stop Event*: if checked, any keys handled by the scene will not be + passed on to the system. Example use: prevent a user leaving the + scene via the back key. + +The following variables are available in tasks triggered by *Key* +events: + +- **%key\_code**\ + the unique numeric identifier +- **%key\_name**\ + the human name of the key + +Key codes and their names can be found on the Android +[KeyEvent](https://developer.android.com/reference/android/view/KeyEvent.html) +reference page. Note that Tasker removes the KEYCODE prefix in keynames +to save typing. + +[]{#hometap} + +#### Home Tap + +Available only for Activity scenes and when an *Icon* has been specified +in the UI tab. + +The event is triggered when the user taps the home icon in the top left +of the action bar. + +[]{#tabtap} + +#### Tab Tap + +Available only for Activity scenes and when one or more *Tab Labels* +have been specified in the UI tab. + +The event is triggered when the user taps a tab in the action bar. + +The following variables are available in tasks triggered by *Tab Tap* +events: + +- **%tap\_index**\ + the tab number, starting at 1 +- **%tap\_label**\ + the tab label, as specified in the Tab Labels parameter of the UI + tab diff --git a/en/activity_stateedit.md b/en/activity_stateedit.md new file mode 100644 index 0000000..1068353 --- /dev/null +++ b/en/activity_stateedit.md @@ -0,0 +1,34 @@ +--- +title: 'Tasker: State Context' +--- + +State Context ![](icon_tasker.png) +---------------------------------- + +A *State Context* allows specification of the continuing state of a +software or hardware entity. + +The State Edit screen allows configuration of the state and its +parameters. + +#### State Name + +The name of the state is given at the top of the screen. Clicking on it +allows changing to another state type. + +Next to the name is a button to show help for the displayed state type +and its parameters. Be sure to check the help text if you have trouble +with a particular state. + +#### State Parameters + +##### General Parameters + +All states have parameters to specify more details about the state. + +Text parameters are treated as [pattern matches](matching.html). + +##### Invert Parameter + +All states have an *invert* parameter, which specifies that the context +should become active when it would usually be inactive, and vice-versa. diff --git a/en/activity_taskedit.md b/en/activity_taskedit.md new file mode 100644 index 0000000..7ee6869 --- /dev/null +++ b/en/activity_taskedit.md @@ -0,0 +1,98 @@ +--- +title: 'Tasker: Task Edit' +--- + +Task Edit ![](icon_tasker.png) +------------------------------ + +This dialog allows editing of the actions in a task, and various +properties of the task. + +#### Action List + +The main part of the screen is a list of the actions contained in the +currently selected task. + +- **Click** on an action to edit it +- **Long-click** on an action to enter multi-select mode and for + options +- **Click-and-drag** at the right hand side of the action to move it + around e.g. to the trash bin + +If a particular action is a [setting](settings.html), that will be +indicated on the right-hand side of the action. + +##### Condition and Block Colours + +If an action has had a condition set for it, the condition is shown with +a red or green bar next to it; **green** indicates that the condition is +currently met (the action will execute), **red** indicates the opposite. +Of course, when the task is executed it could be that it changes things +so that the condition is then met. + +If an action is within an `If / End If` block it is displayed indented +with a red or green margin. The colours have the same significance as +for individual action conditions described above. + +If an action is within a [For loop](flowcontrol.html#for) it is +displayed indented with a **grey** margin. If the `For` action has a +condition on it which is not met, the margin will be **red** (because +the actions in the loop will never execute, like an `If / End If` +block). + +#### Task Control Row + +Directly underneath the action list is a row of buttons with icons. + +##### Play/Step Buttons + +Run the task. + +The Play button will run the task right through till the end, the Step +button will run a single task each time it\'s pressed. + +During tasting, the current action is shown with an arrow and the next +task with a faded arrow. + +The success of each action is shown when it finishes with a green +(action OK) or red (action failed) circle. + +Tasks run via the Play or Step button have priority **10**. + +Long-click the Play or Test button to manually set the priority of the +task when it runs **during the test**. Please be aware that setting a +lower priority can result in interference from other tasks running which +are e.g. triggered by profiles. + +Tip: pressing the Step button while a task is playing will cause the +task to switch to stepping mode when the current action finishes. + +##### Add Action Button + +Add an action to the end of the task. When in multi-select mode, adds an +action after the current selected item, if only one item is selected. + +##### Task Properties + +Show extended properties for the task. Not visible in [Beginner +Mode](beginner.html). + +##### Task Icon + +Shows the icon associated with the task. Clicking on it allows changing +of the icon. + +#### Menu Items + +##### Action Labels + +Toggle display of action labels (which are specified in the [Action +Edit](activity_actionedit.html) screen). + +##### Param Names + +Toggle display of the name of each action parameter. + +##### Icons + +Toggle display of the setting/action indicator icon for each action. diff --git a/en/activity_widget_configure.md b/en/activity_widget_configure.md new file mode 100644 index 0000000..84a9165 --- /dev/null +++ b/en/activity_widget_configure.md @@ -0,0 +1,21 @@ +--- +title: 'Tasker: Widget Configure' +--- + +Widget / Shortcut Configuration ![](icon_tasker.png) +---------------------------------------------------- + +This screen allows selection and configuration of a task which will be +performed when an icon is clicked on the Android home screen or a timer +elapses. + +Please read about [Task Widgets / Shortcuts](app_widgets.html) before +venturing further on this screen. + +The layout of the Configuration screen is nearly identical to that of +the [Task Edit](activity_taskedit.html) screen. + +When creating a Task Timer widget, you\'ll find a different button in +the bottom right which allows initialization of the timer. You can use +this, or wait till the widget is created and then click on the icon to +configure the timer. diff --git a/en/androidpowermanagement.md b/en/androidpowermanagement.md new file mode 100644 index 0000000..1567134 --- /dev/null +++ b/en/androidpowermanagement.md @@ -0,0 +1,29 @@ +--- +title: 'Tasker: Android System Power Management' +--- + +Android System Power Management ![](icon_tasker.png) +---------------------------------------------------- + +Starting with Android 5.0, many devices will act aggressively to try and +save system battery power. Unless certain steps are taken, Tasker may +not function as expected, either because Android is not sending it the +needed signals in order to save power or because Android is even killing +Tasker. + +A commonly noticed symptom is that profiles with Time contexts don\'t +activate or deactivate at the expected time. + +### Make Sure Tasker Is Not Killed By The OS + +
+ +Making sure that Tasker is not killed by the system can be tricky +because of all the restrictions Android applies to background apps, but +in the majority of cases it\'s possible to do. + +
+ +#### Please go through the list [here](https://tasker.joaoapps.com/userguide/en/faqs/faq-problem.html#00) for Tasker specific settings. + +#### Also make sure to check out this page for vendor specific procedures: [dontkillmyapp.com](https://dontkillmyapp.com/?app=Tasker) diff --git a/en/app_widgets.md b/en/app_widgets.md new file mode 100644 index 0000000..c212224 --- /dev/null +++ b/en/app_widgets.md @@ -0,0 +1,112 @@ +--- +title: 'Tasker: Task / Shortcut Widgets' +--- + +Task / Shortcut Widgets ![](icon_tasker.png) +-------------------------------------------- + +The standard way of running a Tasker task is by attaching it to a +profile which performs it when the profile becomes active. However, +tasks can be directly assigned to icons on the home screen called +*Widgets* or *Shortcuts*. + +#### Standard Widgets / Shortcuts + +These consist of an icon (the Task icon) with a label (the Task name) +underneath, and look identical to the normal application icons in the +home screen. + +Clicking on the icon runs the associated Task. + +#### Task Timer Widgets + +This type consists of an icon and label, like the standard widgets, but +also has a countdown timer display which counts down Days, Hours, +Minutes and Seconds. + +When the timer expires (reaches 0) the associated Task is run. + +Tapping on the **icon** of the widget shows a configuration screen where +the timer can be configured. + +Tapping on the **timer section** of the widget will pause, restart or +reset the timer, depending on its current state. + +Note that the timer updates more rarely when it is still a long way from +expiry in order to minimize power usage. + +See Also: + +- action [Timer Widget Control](help/ah_timer_widget_control.html) +- action [Timer Widget Set](help/ah_timer_widget_set.html) +- action [Test Tasker](help/ah_test_tasker.html) +- event [Timer Change](help/eh_timer_change.html) + +#### Creating a Widget / Shortcut + +1. Click and hold in an empty space on the Android home screen, until a + dialog appears. +2. Select **Widgets** or **Shortcuts** +3. Select **Task** or **Task Timer** (Widgets only) +4. Pick an existing task or create a new one. When creating a new one, + if you do not expect to change the function of the widget/shortcut + select One-Time to avoid it cluttering your list of tasks. +5. Use the [Configuration Screen](activity_widget_configure.html) to + configure what should happen when the icon is clicked (or the timer + expires, in the case of a Task Timer widget). Take care to select an + appropriate name and icon for the task, as these will appear on the + home screen. + +#### Changing a Widget / Shortcut + +The function of widgets or shortcuts created from one-time tasks cannot +be changed, it must be deleted and recreated. + +On the other hand, if you associate a normal named task with a widget or +shortcut then when the task is changed (via the Task Edit screen) the +function of the widget or shortcut also changes. + +There are also some actions which will change the appearance of any +widget: + +- *Tasker/Change Icon Set*: changes the icon of a set of widgets to a + different style. +- *Tasker/Set Widget Icon*: changes the icon of a particular widget +- *Tasker/Set Widget Label*: changes the label of a particular widget + +The latter two you could use to visually show the status of something +e.g. WiFi. + +#### Deleting a Widget / Shortcut + +Click and hold on the icon in the Android home screen until the dustbin +icon appears. Drag the widget or shortcut icon to the dustbin icon and +release. + +[]{#diff} + +#### Differences Between Widgets and Shortcuts + +##### Advantages of Shortcuts + +- they can be created in some places that widgets can\'t e.g. in home + screen folders +- their layout probably better matches the default launcher layout +- long shortcut labels will scroll when selected in the default + launcher + +##### Advantages of Widgets + +- their icon and label can be dynamically changed after creation via + the *Set Widget Icon* and *Set Widget Label* actions. +- timer widgets are possible +- they can be created without a label + +So a shortcut should be used unless the extra configuration +possibilities of a widget are necessary. + +#### General + +- you can create as many Tasker widgets and shortcuts as you like. You + can even have several Timer widgets running at the same time. +- Timer Task widgets continue to update even when the screen is off. diff --git a/en/appcontext.md b/en/appcontext.md new file mode 100644 index 0000000..459adff --- /dev/null +++ b/en/appcontext.md @@ -0,0 +1,53 @@ +--- +title: 'Tasker: Application Context' +--- + +Application Context ![](icon_tasker.png) +---------------------------------------- + +An *Application Context* is activated when selected parts of one or more +application are running. + +Important: in Android versions after (and including) L, app detection is +much less accurate. For some apps it may not work at all, for others it +may activate and never deactivate. + +#### Controls + +##### *App* button + +When checked, indicates that the context will become active if any of +the selected applications is in the *foreground*, meaning it is +currently being displayed to the user. + +##### *Services* button + +When checked, indicates that the context will also become active if a +service associated with any of the selected applications is running. + +Note that services other than the obvious ones may be running. For +example, the default Play Music app may have a download service running +even when not playing music at a particular time. + +##### *Invert* button + +When the context is *inverted*, it will become active when any +application **apart from** the selected ones is matched + +##### *All* button + +Usually only applications are shown for selection which would usually be +shown in the launcher. The All button shows certain other launchable +activities. + +This button in no way affects how the context behaves. + +#### Application Checking + +When any profiles have application contexts specified, Tasker checks +frequently to see if one of those applications has been launched. The +default is every 1.5 seconds. + +If you would like quicker response, or you suspect this is severely +increasing your battery usage, you can change this value in preferences +(select `Menu / Preferences / Monitor` from the main screen). diff --git a/en/appcreation.md b/en/appcreation.md new file mode 100644 index 0000000..80d3c40 --- /dev/null +++ b/en/appcreation.md @@ -0,0 +1,341 @@ +--- +title: 'Tasker: App Creation' +--- + +App Creation ![](icon_tasker.png) +--------------------------------- + +- [Introduction](#intro) +- [Hello World Example](#example) +- [App Configuration](#config) +- [Signing](#sign) +- [Target Device Requirements](#target) +- [Miscellaneous](#misc) +- [FAQ (External + Link)](http://tasker.dinglisch.net/faq-appcreation.html) + +[]{#intro} + +### Introduction + +Tasker allows creation of completely standalone apps (APK files) which +have no requirement for Tasker to be installed on the device they\'re +used on. + +The intention is to allow people to create their own apps for fun, for +sale or just to share with friends. Or if you are concerned about all +the permissions Tasker needs you can create an app that has only the +permissions you require! + +App creation is uncomplicated and takes only a few seconds once you\'re +setup. + +To create apps, you need the following on **your** device (not +necessarily on the device(s) the app will run on): + +- Android 2.3+ +- *Tasker App Factory* (free, see below) +- a device with an *ARM* or *x86* processor (the vast majority of + devices have one of those) + +App creation is accessed by long-clicking on a project (**not** the base +project) or task and selecting **Export** then **As App**. Any linked +resources needed (e.g. other tasks, images) are included as part of the +new app. + +To export anything except a single task, you need to create a project +and put anything you wish to export in the project. + +[]{#example} + +### Hello World Example + +Let\'s make a simple app that just pops up **Hello World!** when it\'s +launched. + +#### 1. Create A Task + +- **make a new task**\ + click on the Tasks tab then click **+** to add a new task. Give it a + name *Hello World*. +- **give the task an icon**\ + click the grid icon at the bottom of the screen and pick any icon +- **add the Popup action**\ + click **+** in the bottom left to add an action, select category + **Alert** and then action **Popup**. Fill in **Hello World!** in the + *Text* parameter, then click the accept button bottom left to accept + the action, then again to accept the task. +- **ask Tasker to create an app**\ + long-click on the task you just made, select **Export** then **As + App**. A popup appears mentioning a Missing App. + +#### 2. Install Tasker App Factory + +To generate apps, Tasker needs a free helper app called *Tasker App +Factory*. It\'s available on Play Store and from the Tasker website. + +Click the accept button on the popup to install the helper app. + +#### 3. App Generation + +Tasker should now start generating your app, which will take maybe 12 +seconds depending on your device. + +If all goes well, the Cancel button will turn into an OK button meaning +your app is ready! + +We can\'t run the app straight away though because it hasn\'t been +installed. Click on the rightmost bottom button with the Android icon to +ask Android to install your app. + +Once Android is done installing, you can click it\'s **Open** button to +run the app, or you can simply go to the home screen and click on the +app\'s icon in the launcher. + +You should see a Hello World popup! + +[]{#config} + +### App Configuration + +More usually, before an app is generated you will be presented with a +configuration screen which lets you specify various options for the new +app. + +[]{#sign} + +### App Signing + +Android requires that all apps be *signed* i.e. that they certify who +created them. By default, Tasker uses an automatically-generated +insecure certificate to sign apps and doesn\'t bother mentioning it. + +However, if you want to release an app via a public site (Play Store for +example), you will need to sign it with a proper (secure) certificate. +That\'s done so the site knows that it\'s you that\'s giving them the +app each time you submit a new version. + +Certificates are kept in a *keystore* which is protected with a +password. To generate a keystore with a secure certificate, use +`Menu / More / Developer Options / Create Certificate`. + +Once you\'ve generated the keystore, Tasker will often need to ask you +for the certificate password before app generation so that it can be +used to sign each new version of your app. + +If Android\'s backup service is enabled in Android settings, Tasker +makes a backup of the keystore there. + +Tasker also makes an automatic backup of the keystore to + + /sdcard/Tasker/factory/keystore.user + +when it is first created and when you backup your profile data with +`Menu / Data / Backup`. It\'s highly advisable to make a copy of that +file and keep it safe away from your device. + +[]{#target} + +### Target Device Requirements + +The device the child app is used on must meet the following +requirements: + +- the minimum SDK version specified in the Kid Config screen +- have hardware corresponding to features specified in the Kid Config + screen + +[]{#misc} + +### Miscellaneous + +#### Accessibility Service + +Android accessibility support changed in Android 4.1 (JellyBean). If +support is needed for accessibility services in 4.1+, the **Minimum +Android Version** in the child Configuration screen must be set to +**16** or higher. If support is required pre-4.1, it must be set to +**less than** 16. + +In other words, to support both pre- and post-4.1 devices, two APKs must +be generated. + +This applies to all features that rely on an Accessibility Service +(events *Notification, New Window, Button Widget Clicked, Notification +Click*, variables *%NTITLE, %WIN*, *App Context* from min version 20+) + +Google Play Store allows publication of APKs targetting different +Android versions under the same package name, however this has not been +tested by the developer of Tasker. + +#### Launch Task + +When the specified launch task runs in the child app, the following +local variables will be available to it: + +- *%launch\_data*: the data (URI) in the intent that caused the child + app to launch (often empty) + +#### Monitor Service + +Most child apps include a service which constantly monitors for events. +If you know that you don\'t need to monitor events anymore (in-between +app launches) you can use the *Disable* action in the Tasker category to +stop it. + +It will be automatically started again next time the app is launched. + +#### Widgets / Shortcuts + +- it\'s not possible in Android to auto-create widgets with any app +- it\'s not possible \*currently\* to offer the user child-app + widgets, that may be available in the future to some extent + +#### Memory Problems + +If you are having low memory problems during app generation, you can ask +the App Factory to use external storage for the generation process. See +`Menu / Prefs / More / Factory`. + +#### Preferences + +The new app does not take over any preferences from Tasker, all of the +preferences in the child app are in their default state, with a couples +of exceptions. + +Despite the misleading name, you can use the *Set Tasker Pref* action in +the *Tasker* category **in the child app** to change some of the +**child\'s** preferences when it is running. + +#### Available Tasker Features + +Obviously, the device the new app runs on may not have the same set of +available e.g. actions as the device the app is created on. + +The *Test* action in the *Misc* category allows you to check which +Tasker features are available at *run time* (when the app is being +used). + +#### Images + +Referenced images (even scene doodles and photos from internal storage) +are bundled in with the app. + +Tip: to include a dynamic image (e.g. which you download to a file path +via HTTP Get), put the image reference in a variable, and put the +variable in the relevant action. + +#### Plugins + +When the new app is launched, it checks that all referenced plugins are +installed on the device and prompts the user to install missing ones. + +Some plugins may not work on other devices if they themselves store +something about the action to be performed, since that data will not be +available on the other device. + +Plugin authors: see also +[here](http://tasker.dinglisch.net/plugins.html#gen). + +#### JavaScript actions + +Scripts referenced by a *JavaScript* action are packaged with the new +app and run directly from there. + +#### SL4A Scripts + +Scripts referenced in a *Run Script* action are packaged with the new +app and unpacked to `/sdcard/sl4a/scripts`, prefixed with the package +name, on first run. Tasker automatically inserts the +WRITE\_EXTERNAL\_STORAGE permission for that purpose. + +If SL4A is missing on the target device, the new app will prompt the +user to download when launched. + +If a new version of the app is reinstalled on the target device, the new +versions of the scripts will be written if the **length** has changed. + +#### Other External Components + +The following external components are also checked for on launch of the +new app where necessary: + +- Speech engines (*Say, Say After*) +- APNDroid (*Mobile Data APN*) +- Zoom (*Zoom* action category actions) +- apps for *3rd Party* actions +- apps for *3rd Party* events + +#### Maps + +The data for Maps is provided by Google and they require a *maps key* +(v2) for each developer that uses it. If you are using Map scene +elements in your app, you need a key from Google that can be included +with your app. + +Here are the steps to acquire a key: + +1. \[if necessary\] setup a [Google + Account](http://www.google.com/accounts/) +2. \[if necessary\] create a [developer + account](http://developer.android.com/distribute/index.html) +3. \[if necessary\] create a [signing keystore](#sign) +4. get the SHA1 fingerprint of your certificate: + `Menu / More / Developer Options / Certificate Checksum` +5. Create an [Google API + Project](https://developers.google.com/maps/documentation/android/start#create_an_api_project_in_the_google_apis_console) +6. Obtain the [Maps + key](https://developers.google.com/maps/documentation/android/start#obtain_a_google_maps_api_key) + +Enter the key in the App Configuration screen when generating your app. +Note that the box will only be presented if your app uses one or more +Map scene elements. + +Note that the device on which the created app is used needs Google\'s +Play Services APK installed, otherwise the map elements will not +function. + +#### Variables + +The new app is completely independent of Tasker, so it also does not +share any variable values. + +#### Permissions + +Tasker attempts to reduce the set of permissions required by the new app +to the smallest set required for the functionality it contains. For +example, no *Vibrate* permission will be requested if there is no +vibrate action used. + +The WAKE\_LOCK permission is unfortunately always required for technical +reasons. + +#### App Size + +Generated apps are minimally around 640K but are unlikely to be +significantly larger unless a lot of images are referenced. It\'s +possible that this minimum can be reduced in the future. + +#### Encryption + +Code for encryption is included in any app created by App Factory, +however if you don\'t use encryption features it\'s unlikely to be a +problem in terms of export restrictions. However, that is an opinion, it +is **not legal advice**. + +Note that code libraries for encryption are included with every Android +device. Tasker (and child apps) use these libraries to perform the +encryption, they do not contain encryption code themselves. + +Licence + +You are free to distribute and sell apps created by Tasker in any way +you wish. No licence fees to the developer of Tasker are necessary. It +would be courteous to reference Tasker and it\'s website +(http://tasker.dinglisch.net) somewhere in your new app if possible. + +Please note that use of images from some Ipacks in commercial software +is prohibited by the licence terms of the image creators. You will need +to contact the image designer to request their assent in such cases. +(the origin of an Ipack\'s images is displayed in the Ipack image +selection screen). diff --git a/en/beginner.md b/en/beginner.md new file mode 100644 index 0000000..3bd0aa9 --- /dev/null +++ b/en/beginner.md @@ -0,0 +1,30 @@ +--- +title: 'Tasker: Beginner Mode' +--- + +Beginner Mode ![](icon_tasker.png) +---------------------------------- + +When Tasker first starts, *Beginner Mode* is enabled. + +In Beginner Mode, Tasker attempts to simplify things for inexperienced +users, mostly by UI elements which are unlikely to be needed by +inexperienced users. + +Beginner Mode can be disabled by unchecking the option: + +> ` Menu / Prefs / UI / Beginner Mode` + +Some of the changes made in Beginner Mode are: + +- main screen, Variables tab removed +- main screen, export options removed +- main screen, project tab not accessible +- task edit screen, task properties icon removed +- action edit screen, Label, Continue On Error parameters removed +- prefs screen, many options removed +- various places, variable selection not possible + +In the userguide, when references are found to things which do not +appear on the screen. It\'s worth disabling Beginner Mode to see if +that\'s the problem. diff --git a/en/cpu.md b/en/cpu.md new file mode 100644 index 0000000..65e2ab0 --- /dev/null +++ b/en/cpu.md @@ -0,0 +1,86 @@ +--- +title: 'Tasker: CPU Control' +--- + +CPU Control ![](icon_tasker.png) +-------------------------------- + +------------------------------------------------------------------------ + +**Note:** CPU control can damage your hardware e.g. by the CPU +overheating. As for all Tasker functions, you use it at your own risk! + +------------------------------------------------------------------------ + +### General + +On a rooted device (only) Tasker is able to control the CPU frequency of +an Android device to some extent. This is usually done either to save +battery or make the device more responsive depending on the +circumstances. + +The relevant control action is **CPU** in the **Misc** category. You can +monitor the current state with the variables **%CPUFREQ** and +**%CPUGOV**. + +There are two aspects which can be controlled, the Frequency Range and +the CPU Governor. You will need to experiment with combinations of these +to achieve the best results. + +### Frequency Range + +You can set the minimum and maximum frequency which the CPU is allowed +to run at. Only certain frequencies are valid, depending on the CPU +(click on the magnifying glass button to select a valid value). + +The maximum frequency is probably initially set lower than the maximum +frequency that the CPU can actually handle. If that is the case, you +should be very cautious about setting it higher. Tasker will warn you +the first time you try to do configure an action to do that, assuming +you have not been using other apps to change the maximum frequency +limit. + +### CPU Governor + +The active *governor* decides what the CPU frequency should be set to at +a particular time, within the frequency range you have set. Each has +it\'s own unique strategy. Here are the most common governors: + +- *Performance*\ + keeps the CPU frequency always at the maximum. Most power-hungry, + most responsive. +- *Powersave*\ + keeps the CPU frequency always at the minimum. Least power-hungry, + least responsive. +- *Ondemand*\ + when the CPU is needed, immediately sets it to maximum frequency. + Slowly reduces the frequency back down to the minimum as time + passes. Responsive, reasonable power usage. +- *Interactive*\ + like Ondemand, but more responsive with slightly more battery usage. +- *Conservative*\ + when the CPU load is needed, slowly increases the frequency to + maximum. When the CPU is no longer needed, immediately drops back to + the minimum. Less power-usage than Ondemand or Interactive, less + responsive. + +Not all governors are available on all ROM versions. Your device may +also have a governor not described here. You can still set that governor +with Tasker. + +### CPU Action Not Available + +Common problems are: + +- *root not recognized*\ + Tasker decides that a device is rooted if + `/system/app/Superuser.apk` is present and `su` is present in one of + the directories of \$PATH +- *no available frequencies*\ + Tasker needs to know what frequencies it can set the CPU to. It + looks for the files + `/sys/devices/system/cpu/cpuX/cpufreq/scaling_available_frequencies, /sys/devices/system/cpu/cpuX/cpufreq/stats/time_in_state` + and `/system/etc/scaling_available_frequencies` (in that order). If + you know what your CPU frequencies are, you could write them + (space-separated, in numerical order) to the first (any number of + CPUs) or last (1 CPU only) of those files. diff --git a/en/daycontext.md b/en/daycontext.md new file mode 100644 index 0000000..126d572 --- /dev/null +++ b/en/daycontext.md @@ -0,0 +1,35 @@ +--- +title: 'Tasker: Day Context' +--- + +Day Context ![](icon_tasker.png) +-------------------------------- + +A *Day Context* allows specification of one or more months and/or days +of the week/month. + +#### Month Specification + +The months are listed at the top, any of which can be selected. +Selecting **no** month has the same meaning as selecting **every** month +i.e. has no restriction on when the profile will become active. + +#### Day of Week/Month Specification + +Days of the week (*Sunday, Monday* etc) and/or month (*1st, 9th* etc) +can be selected independently with the pulldown centre-right. This will +initially be for Week Days if there are any defined, otherwise Month +Days. + +Selecting **no** day has the same meaning as selecting **every** day. + +If you select **both** days of the week **and** days of the month, it +requires both conditions to be fulfilled for the profile to become +active e.g. selecting *Mon,Tue* and *11th* means the profile will become +active when the day is a *Mon* or *Tuesday* and **simultaneously** the +*11th* day of the month. + +If you are unsure if you have specified the day(s) you require, click +the **Done** button and you will see a verbal description at the top of +the Profile Edit screen. You can click on this to try again if it\'s not +correct. diff --git a/en/element_button.md b/en/element_button.md new file mode 100644 index 0000000..4c38267 --- /dev/null +++ b/en/element_button.md @@ -0,0 +1,37 @@ +--- +title: 'Tasker: Scene Element: Button' +--- + +Scene Element: Button ![](icon_tasker.png) +------------------------------------------ + +#### About + +A standard Android button enhanced to allow display of an icon, text or +both. + +#### Parameter: Position + +If both a *Label* and *Icon* are specified, the *Position* parameter +refers to the position of the *Label*. The *Icon* is then placed +opposite the *Label*. + +#### Events + +- [Tap, Long Tap](activity_elementedit.html#tap) + +#### Related Actions + +- [Element Image](help/ah_scene_element_image.html) +- [Element Text](help/ah_scene_element_text.html) +- [Element Text Colour](help/ah_scene_element_text_colour.html) +- [Element Position](help/ah_scene_element_position.html) +- [Element Focus](help/ah_scene_element_focus.html) +- [Element Size](help/ah_scene_element_size.html) +- [Element Visibility](help/ah_scene_element_visibility.html) +- [Element Depth](help/ah_scene_element_depth.html) +- [Test Element](help/ah_scene_element_test.html) + +#### See Also + +The [Element Editor](activity_elementedit.html) screen. diff --git a/en/element_checkbox.md b/en/element_checkbox.md new file mode 100644 index 0000000..7b1be24 --- /dev/null +++ b/en/element_checkbox.md @@ -0,0 +1,28 @@ +--- +title: 'Tasker: Scene Element: Button' +--- + +Scene Element: CheckBox ![](icon_tasker.png) +-------------------------------------------- + +#### About + +A standard Android checkbox to indicate e.g. an item selection state. + +#### Events + +- [Change](activity_elementedit.html#checkchange) + +#### Related Actions + +- [Element Value](help/ah_scene_element_value.html) +- [Element Focus](help/ah_scene_element_focus.html) +- [Element Position](help/ah_scene_element_position.html) +- [Element Size](help/ah_scene_element_size.html) +- [Element Visibility](help/ah_scene_element_visibility.html) +- [Element Depth](help/ah_scene_element_depth.html) +- [Test Element](help/ah_scene_element_test.html) + +#### See Also + +The [Element Editor](activity_elementedit.html) screen. diff --git a/en/element_doodle.md b/en/element_doodle.md new file mode 100644 index 0000000..395477f --- /dev/null +++ b/en/element_doodle.md @@ -0,0 +1,35 @@ +--- +title: 'Tasker: Scene Element: Doodle' +--- + +Scene Element: Doodle ![](icon_tasker.png) +------------------------------------------ + +#### About + +A *Doodle* is an image created by the user with a simple finger-painting +screen. + +Click the *Doodle* parameter to edit the doodle. + +Doodles are stored on external storage in the directory +`/sdcard/Tasker/cache/doodles` in case they are masterpieces which +demand publishing. + +#### Events + +- [Tap, Long Tap](activity_elementedit.html#tap), +- [Stroke](activity_elementedit.html#stroke) + +#### Related Actions + +- [Element Position](help/ah_scene_element_position.html) +- [Element Size](help/ah_scene_element_size.html) +- [Element Focus](help/ah_scene_element_focus.html) +- [Element Visibility](help/ah_scene_element_visibility.html) +- [Element Depth](help/ah_scene_element_depth.html) +- [Test Element](help/ah_scene_element_test.html) + +#### See Also + +The [Element Editor](activity_elementedit.html) screen. diff --git a/en/element_image.md b/en/element_image.md new file mode 100644 index 0000000..8090116 --- /dev/null +++ b/en/element_image.md @@ -0,0 +1,25 @@ +--- +title: 'Tasker: Scene Element: Image' +--- + +Scene Element: Image ![](icon_tasker.png) +----------------------------------------- + +#### Events + +- [Tap, Long Tap](activity_elementedit.html#tap) +- [Stroke](activity_elementedit.html#stroke) + +#### Related Actions + +- [Element Image](help/ah_scene_element_image.html) +- [Element Focus](help/ah_scene_element_focus.html) +- [Element Position](help/ah_scene_element_position.html) +- [Element Size](help/ah_scene_element_size.html) +- [Element Visibility](help/ah_scene_element_visibility.html) +- [Element Depth](help/ah_scene_element_depth.html) +- [Test Element](help/ah_scene_element_test.html) + +#### See Also + +The [Element Editor](activity_elementedit.html) screen. diff --git a/en/element_map.md b/en/element_map.md new file mode 100644 index 0000000..16873bb --- /dev/null +++ b/en/element_map.md @@ -0,0 +1,38 @@ +--- +title: 'Tasker: Scene Element: Map' +--- + +Scene Element: Map ![](icon_tasker.png) +--------------------------------------- + +#### About + +A *Map* element is a view onto the same kind of map window used by +Google Maps but is much more automateable than the standalone app. + +Map elements cannot appear in Overlay scenes. + +When shown with the display type *Dialog, Dim Behind* or *Dialog, Dim +Behind Heavy* the map will also be dimmed starting with Tasker 4.5, an +unfortunate side-effect of the dimming method. + +#### Related Actions + +- [Element Add GeoMarker](help/ah_scene_element_add_geomarker.html) +- [Element Delete + Geomarker](help/ah_scene_element_delete_geomarker.html) +- [Element Map Control](help/ah_scene_element_map_control.html) +- [Element Focus](help/ah_scene_element_focus.html) +- [Element Position](help/ah_scene_element_position.html) +- [Element Size](help/ah_scene_element_size.html) +- [Element Visibility](help/ah_scene_element_visibility.html) +- [Element Depth](help/ah_scene_element_depth.html) +- [Test Element](help/ah_scene_element_test.html) + +#### Events + +- [Tap, Long Tap](activity_elementedit.html#tap) + +#### See Also + +The [Element Editor](activity_elementedit.html) screen. diff --git a/en/element_menu.md b/en/element_menu.md new file mode 100644 index 0000000..ac7549a --- /dev/null +++ b/en/element_menu.md @@ -0,0 +1,63 @@ +--- +title: 'Tasker: Scene Element: Menu' +--- + +Scene Element: Menu ![](icon_tasker.png) +---------------------------------------- + +#### About + +A menu displays a variable selection of items and can have a separate +action, text and icon defined for each item in the list. + +#### Parameter: Source + +Items can either be filled manually or from a variable array. In the +case of an array, the list shows all the items starting at the first +index; %var(1) %var(2) etc. + +In the case of manual specification, click on the *Items* tab in the +element editor to specify the items. + +#### Parameter: Selection Mode + +There are three selection modes: + +- single: tapping an item deselects any other item selected +- multi: several items can be selected at the same time +- none: tapping an item never selects it + +Selected items are highlighted. There are two ways to find out the +selected items: + +- assign a task under the **Item Tap** element event tab. Every time + an item is tapped, the selected items are available in the local + variable **%select\_indices** +- query the selected items at any time using the action + `Element Get Value` + +#### Parameter: Item Layout + +Specifies how each item within the list will be displayed. Each item has +exactly the same layout. To change the layout, click on it. Each Menu +element has it\'s own unique item layout. + +There are two pre-defined layouts you can choose from (click the +magnifying glass icon). \'Icon and Text\' is the default. + +#### Events + +- [Item Tap, Item Long Tap](activity_elementedit.html#tap) + +#### Related Actions + +- [Menu](help/ah_menu.html)\ + allows easy display of a dialog with a title and showing a single + menu element.\ + When using the Menu action, items are configured in the action + itself rather than in the Menu element. +- [Element Position](help/ah_scene_element_position.html) +- [Element Size](help/ah_scene_element_size.html) +- [Element Visibility](help/ah_scene_element_visibility.html) +- [Element Depth](help/ah_scene_element_depth.html) +- [Test Element](help/ah_scene_element_test.html) diff --git a/en/element_picker.md b/en/element_picker.md new file mode 100644 index 0000000..288c887 --- /dev/null +++ b/en/element_picker.md @@ -0,0 +1,39 @@ +--- +title: 'Tasker: Scene Element: Number Picker' +--- + +Scene Element: Number Picker ![](icon_tasker.png) +------------------------------------------------- + +#### About + +Allows selection of a numeric value from a specified range. Above and +below the selected number the element can be long-clicked to advance the +number series, or the number can be scrolled or flung up or down by +touch. + +#### Events + +- [Value Selected](activity_elementedit.html#value) + +Note that the Value Selected event will only fire when scrolling has +**finished** i.e. when the user has lifted their finger and the Number +Picker has come to rest. + +In contrast, long-clicking will produce an event for each number that is +cycled through. + +#### Related Actions + +- [Element Value](help/ah_scene_element_value.html) +- [Element Focus](help/ah_scene_element_focus.html) +- [Element Position](help/ah_scene_element_position.html) +- [Element Size](help/ah_scene_element_size.html) +- [Element Visibility](help/ah_scene_element_visibility.html) +- [Element Depth](help/ah_scene_element_depth.html) +- [Test Element](help/ah_scene_element_test.html) + +#### See Also + +The [Element Editor](activity_elementedit.html) screen. The [Slider +Element](element_slider.html) screen. diff --git a/en/element_shape.md b/en/element_shape.md new file mode 100644 index 0000000..0505a8c --- /dev/null +++ b/en/element_shape.md @@ -0,0 +1,29 @@ +--- +title: 'Tasker: Scene Element: Oval / Rectangle' +--- + +Scene Element: Oval / Rectangle ![](icon_tasker.png) +---------------------------------------------------- + +#### About + +Shape elements are intended mostly for decoration but can also be used +as invisible \'launchpads\' for e.g. stroke events. + +#### Events + +- [Tap, Long Tap](activity_elementedit.html#tap) +- [Stroke](activity_elementedit.html#stroke) + +#### Related Actions + +- [Element Focus](help/ah_scene_element_focus.html) +- [Element Position](help/ah_scene_element_position.html) +- [Element Size](help/ah_scene_element_size.html) +- [Element Visibility](help/ah_scene_element_visibility.html) +- [Element Depth](help/ah_scene_element_depth.html) +- [Test Element](help/ah_scene_element_test.html) + +#### See Also + +The [Element Editor](activity_elementedit.html) screen. diff --git a/en/element_slider.md b/en/element_slider.md new file mode 100644 index 0000000..810e469 --- /dev/null +++ b/en/element_slider.md @@ -0,0 +1,31 @@ +--- +title: 'Tasker: Scene Element: Slider' +--- + +Scene Element: Slider ![](icon_tasker.png) +------------------------------------------ + +#### About + +A standard Android \'seek bar\' enhanced to allow specification of the +thumb icon and display indicators for the min, max and current values. + +#### Events + +- [Value Selected](activity_elementedit.html#value) + +#### Related Actions + +- [Element Value](help/ah_scene_element_value.html) +- [Element Focus](help/ah_scene_element_focus.html) +- [Element Image](help/ah_scene_element_image.html) +- [Element Position](help/ah_scene_element_position.html) +- [Element Size](help/ah_scene_element_size.html) +- [Element Visibility](help/ah_scene_element_visibility.html) +- [Element Depth](help/ah_scene_element_depth.html) +- [Test Element](help/ah_scene_element_test.html) + +#### See Also + +- [Element Editor](activity_elementedit.html) screen. +- [Number Picker Element](element_picker.html) screen. diff --git a/en/element_spinner.md b/en/element_spinner.md new file mode 100644 index 0000000..0a18598 --- /dev/null +++ b/en/element_spinner.md @@ -0,0 +1,51 @@ +--- +title: 'Tasker: Scene Element: Spinner' +--- + +Scene Element: Spinner ![](icon_tasker.png) +------------------------------------------- + +#### About + +A spinner allows selection of a single item from a menu. Only the +currently selected item is displayed. When tapped, the menu is shown, +when an item is selected, the menu is hidden again. + +#### Parameter: Source + +Items can either be filled manually or from a variable array. In the +case of an array, the list shows all the items starting at the first +index; %var(1) %var(2) etc. + +In the case of manual specification, click on the *Items* tab in the +element editor to specify the items. The default (initially showing +item) is selectable via the checkboxes on the left. + +Note that by default, a spinner is text only. To show also icons, +long-click the icon element in the Item Layout (see below) and select +*Show*. + +#### Parameter: Item Layout + +Specifies how each item within the list will be displayed. Each item has +exactly the same layout. To change the layout, click on it. Each Spinner +element has it\'s own unique item layout. + +#### Parameter: Popup Background Colour + +Specifies the background colour of the window which displays the +possible spinner values when the spinner is clicked. + +#### Events + +- [Item Select](activity_elementedit.html#itemselect) + +#### Related Actions + +- [Element Focus](help/ah_scene_element_focus.html) +- [Element Position](help/ah_scene_element_position.html) +- [Element Size](help/ah_scene_element_size.html) +- [Element Visibility](help/ah_scene_element_visibility.html) +- [Element Depth](help/ah_scene_element_depth.html) +- [Element Value](help/ah_scene_element_value.html) +- [Test Element](help/ah_scene_element_test.html) diff --git a/en/element_switch.md b/en/element_switch.md new file mode 100644 index 0000000..726fe98 --- /dev/null +++ b/en/element_switch.md @@ -0,0 +1,28 @@ +--- +title: 'Tasker: Scene Element: Button' +--- + +Scene Element: Switch ![](icon_tasker.png) +------------------------------------------ + +#### About + +A standard Android switch to indicate e.g. an item selection state. + +#### Events + +- [Change](activity_elementedit.html#checkchange) + +#### Related Actions + +- [Element Value](help/ah_scene_element_value.html) +- [Element Focus](help/ah_scene_element_focus.html) +- [Element Position](help/ah_scene_element_position.html) +- [Element Size](help/ah_scene_element_size.html) +- [Element Visibility](help/ah_scene_element_visibility.html) +- [Element Depth](help/ah_scene_element_depth.html) +- [Test Element](help/ah_scene_element_test.html) + +#### See Also + +The [Element Editor](activity_elementedit.html) screen. diff --git a/en/element_text.md b/en/element_text.md new file mode 100644 index 0000000..781a881 --- /dev/null +++ b/en/element_text.md @@ -0,0 +1,65 @@ +--- +title: 'Tasker: Scene Element: Text' +--- + +Scene Element: Text ![](icon_tasker.png) +---------------------------------------- + +#### About + +Displays non-editable text for labels etc. + +#### Parameter: Position + +Where to place the text within its box + +#### Parameter: Text Width Scale + +A horizontal scaling factor to squash up (negative values) or stretch +(positive values) the text. + +#### Parameter: Font + +Specifies a custom font file to use for the text instead of the system +default. Many thousands of free font files (with the filename ending in +`.ttf` are available for download on the Internet. + +#### Parameter: Vertical Fit Mode + +What to do when the height of the text to display is greater than the +height of the element. + +#### Parameter: Text Format + +Specifies how the text should be displayed. + +- *Plain Text*\ + just show the text as-is +- *Text With Links*\ + things that look like links are clickable (though not in the scene + editor) e.g. URLs, email addresses, phone numbers +- *HTML*\ + interpret the text as a piece of HTML. Only simple tags are + interpreted and no images are displayable. + +#### Events + +- [Tap, Long Tap](activity_elementedit.html#tap) +- [Stroke](activity_elementedit.html#stroke) + +#### Related Actions + +- [Element Text](help/ah_scene_element_text.html) +- [Element Text Colour](help/ah_scene_element_text_colour.html) +- [Element Border](help/ah_scene_element_border.html) +- [Element Back Colour](help/ah_scene_element_background_colour.html) +- [Element Focus](help/ah_scene_element_focus.html) +- [Element Position](help/ah_scene_element_position.html) +- [Element Size](help/ah_scene_element_size.html) +- [Element Visibility](help/ah_scene_element_visibility.html) +- [Element Depth](help/ah_scene_element_depth.html) +- [Test Element](help/ah_scene_element_test.html) + +#### See Also + +The [Element Editor](activity_elementedit.html) screen. diff --git a/en/element_textedit.md b/en/element_textedit.md new file mode 100644 index 0000000..cfda52d --- /dev/null +++ b/en/element_textedit.md @@ -0,0 +1,52 @@ +--- +title: 'Tasker: Scene Element: TextEdit' +--- + +Scene Element: TextEdit ![](icon_tasker.png) +-------------------------------------------- + +#### About + +A standard Android box for text entry. + +TextEdit elements cannot appear in Overlay scenes. + +#### Parameter: Text + +This is the **initial** text to show in the element, with any variables +replaced. + +Note that if *Text* contains a variable, any changes in the variable +value once the element have been shown will **not** be reflected in the +visible contents of the text box. The reason for this limitation is that +the user can change the text box contents by typing at any time so it is +not possible to track where the variable contents should be, or even if +they are still there at all. + +#### Parameter: Position + +Where to place the text within its box + +#### Parameter: Text Width Scale + +Horizontal scaling factor to squash up (negative values) or stretch +(positive values) the text. + +#### Events + +#### Related Actions + +- [Element Text](help/ah_scene_element_text.html) +- [Element Text Colour](help/ah_scene_element_text_colour.html) +- [Element Border](help/ah_scene_element_border.html) +- [Element Back Colour](help/ah_scene_element_background_colour.html) +- [Element Focus](help/ah_scene_element_focus.html) +- [Element Position](help/ah_scene_element_position.html) +- [Element Size](help/ah_scene_element_size.html) +- [Element Visibility](help/ah_scene_element_visibility.html) +- [Element Depth](help/ah_scene_element_depth.html) +- [Test Element](help/ah_scene_element_test.html) + +#### See Also + +The [Element Editor](activity_elementedit.html) screen. diff --git a/en/element_toggle.md b/en/element_toggle.md new file mode 100644 index 0000000..d72574c --- /dev/null +++ b/en/element_toggle.md @@ -0,0 +1,29 @@ +--- +title: 'Tasker: Scene Element: Toggle' +--- + +Scene Element: Toggle ![](icon_tasker.png) +------------------------------------------ + +#### About + +A button with two states with an indicator light and a label for each +state. + +#### Events + +- [Change](activity_elementedit.html#checkchange) + +#### Related Actions + +- [Element Value](help/ah_scene_element_value.html) +- [Element Focus](help/ah_scene_element_focus.html) +- [Element Position](help/ah_scene_element_position.html) +- [Element Size](help/ah_scene_element_size.html) +- [Element Visibility](help/ah_scene_element_visibility.html) +- [Element Depth](help/ah_scene_element_depth.html) +- [Test Element](help/ah_scene_element_test.html) + +#### See Also + +The [Element Editor](activity_elementedit.html) screen. diff --git a/en/element_video.md b/en/element_video.md new file mode 100644 index 0000000..63349a4 --- /dev/null +++ b/en/element_video.md @@ -0,0 +1,71 @@ +--- +title: 'Tasker: Scene Element: Video' +--- + +Scene Element: Video ![](icon_tasker.png) +----------------------------------------- + +#### About + +Displays a video from file or URI. + +The playback state is maintained during rotation or hiding of the scene. + +#### Parameters: Source + +Determines where to acquire the content for the video. + +A source which starts with a **/** or does not contain a **:** is +treated as a local file path. + +Anything else is treated as a URI. + +#### Parameter: Start Automatically + +If checked, whenever a new video is loaded it will begin play +immediately. If not checked, the video must be started via the [Element +Video Control](help/ah_element_video_control.html) action. + +#### Parameter: Loop + +If checked, the video will start playing again from the start when the +end is reached. + +#### Parameter: Adapt To Fit + +What to do when the video size does not exactly match the element size. + +- *Stretch*\ + The video is stretched (or shrunk) to fill the element, probably + changing the aspect ratio in the process +- *Scale*\ + The video is scaled up or down while maintaining the aspect ratio + until it horizontally or vertically matches the element size. As a + result, the video will not completely fill the element on the other + side. + +#### Events + +- [Tap, Long Tap](activity_elementedit.html#tap) +- [Stroke](activity_elementedit.html#stroke) +- [Video](activity_elementedit.html#video) + +#### Related Actions + +- [Element Video Control](help/ah_scene_element_video_control.html) +- [Element Focus](help/ah_scene_element_focus.html) +- [Element Position](help/ah_scene_element_position.html) +- [Element Size](help/ah_scene_element_size.html) +- [Element Visibility](help/ah_scene_element_visibility.html) +- [Element Depth](help/ah_scene_element_depth.html) +- [Test Element](help/ah_scene_element_test.html) + +Note on `Test Element`: testing the element *Value* returns the current +playback position in Milliseconds, *Maximum Value* returns the duration +of the current video. In both cases, the video must be already in the +\'Prepared\' (see the [Video event](activity_elementedit.html#video)) +state before running the test. + +#### See Also + +The [Element Editor](activity_elementedit.html) screen. diff --git a/en/element_web.md b/en/element_web.md new file mode 100644 index 0000000..f852ad5 --- /dev/null +++ b/en/element_web.md @@ -0,0 +1,68 @@ +--- +title: 'Tasker: Scene Element: Web' +--- + +Scene Element: Web ![](icon_tasker.png) +--------------------------------------- + +#### About + +A *Web* element is like a browser window. + +#### Parameters: Mode / Source + +These parameters determine how the content for the WebView is to be +acquired. + +- *URI*: the *Source* parameter refers to a URI (e.g. http://) from + which the WebView should retrieve content. +- *File*: the *Source* parameter contains a local file path from which + the WebView should retrieve content. +- *Direct*: the *Source* parameter directly specifies the HTML and/or + JavaScript content to load + +#### Parameter: Allow Phone Access + +If checked, the content in the WebView is allowed access to local device +files, data stores, and can run JavaScript, including Tasker\'s +[JavaScript Interface functions](javascript.html). + +This is a very powerful feature, since it allows a WebView to present a +complex and highly functional interface, but should only be enabled if +you entirely trust the source of the specified content. + +Note that references to local files must be absolute (include the +directory) even when the WebView source is specified as a file e.g. +`/sdcard/myfiles/scripts.js` + +#### Parameter: Self Handle Links + +If checked, links will be handled by the WebView itself, otherwise they +will be passed to the system for handling e.g. by the default web +browser. + +#### Parameter: Support Popups + +If this parameter is **not** checked, HTML elements which generate a +popup window, for instance selection elements in forms, will crash the +scene when they are activated. + +If this parameter **is** checked, when the scene is hidden and reshown, +some of its state will be lost e.g. which part of the page was being +displayed, zoom level. + +#### Events + +#### Related Actions + +- [Element Web Control](help/ah_scene_element_web_control.html) +- [Element Focus](help/ah_scene_element_focus.html) +- [Element Position](help/ah_scene_element_position.html) +- [Element Size](help/ah_scene_element_size.html) +- [Element Visibility](help/ah_scene_element_visibility.html) +- [Element Depth](help/ah_scene_element_depth.html) +- [Test Element](help/ah_scene_element_test.html) + +#### See Also + +The [Element Editor](activity_elementedit.html) screen. diff --git a/en/encryption.md b/en/encryption.md new file mode 100644 index 0000000..302b509 --- /dev/null +++ b/en/encryption.md @@ -0,0 +1,163 @@ +--- +title: 'Tasker: Encryption' +--- + +Encryption ![](icon_tasker.png) +------------------------------- + +------------------------------------------------------------------------ + +**Note:** encryption functions are not available to new customers or in +Play Store versions of Tasker due to US export restrictions. + +------------------------------------------------------------------------ + +Tasker has the ability to encrypt and decrypt files. The relevant +actions are in the *Encryption* action category. + +Since decryption can be automated, you have the possibility to keep data +files encrypted outside of certain times, locations, applications etc. + +**Warning**: make backups of your files while setting up encryption +until you understand how the system works and are sure the +encryption/decryption process does not cause any corruption. + +**Tip**: Tasker does not give progress reports while it\'s doing +encryption, if you want to know when an long decryption operation is +finished, just put a *Vibrate* action or similar after the +*Encrypt/Decrypt* action. + +#### Keys + +Tasker uses a system of named *keys*. All of the encryption actions can +specify a key name so that you can use different keys with different +files (if desired). + +If no key name is specified, **default** is used. + +Once a passphrase for a key is entered, the ciphers it generated are +stored in memory until explicitly deleted. The deletion might be +specified after an *Encrypt/ Decrypt File* action, or explicitly with +the *Clear Key* action. + +#### Setting Up Encryption + +##### General Preferences + +First thing to do is check whether the encryption preferences for +**Encryption Iterations** and **Encryption Algorithm** are as you wish. +Once you start encryping things, it\'s time consuming to start again +with new encryption preferences. + +The preferences can be found at `Menu / Prefs / Action`. Be sure to have +a look at the help text for each item. + +##### Initial Encryption + +To start with, you probably want to encrypt some files which are in a +particular directory, which you can then decrypt as they are needed. + +To do that, create a task called **Encrypt** or similar and add one or +more *Encrypt File* or *Encrypt Dir* actions to it. + +By default, the key is cleared once the file is encrypted, so click +\'Leave Key\' for all but the last action, otherwise you\'ll have to +enter your passphrase for each file. + +Next, [create a Tasker shortcut](app_widgets.html) on the home screen, +using the *Encrypt* task. Tap the widget to encrypt your files. Notice +how you are only asked for the passphrase for the first one, because it +is stored until cleared. + +The encrypted files will all receive an extension *.tec* and the +original files are deleted. + +#### Decryption + +Once you have a set of encrypted files, you need to setup the contexts +in which they will be decrypted. + +Create another task called *Decrypt* or similar, and add *Decrypt* +actions to it to match the encrypt actions you setup previously. + +**Don\'t** click Clear Key, otherwise you\'ll have to enter your +passphrase for every file (and at the start of encryption). + +Now you can use your *Encrypt* and *Decrypt* tasks whenever you like. +For instance, you could create a profile with a Location Context and run +your *Decrypt* task when entering the location (assign Decrypt as the +Enter task) and your *Encrypt* task when leaving the location (assign +*Encrypt* as the Exit task). + +**Important**: when you use the *Decrypt* action, it recreates the +original file from the encrypted copy, but does **not** delete the +encrypted version. + +When you re-encrypt the file, if it has not changed it is simply deleted +since we already have an encrypted copy. If it **has** changed, it is +re-encrypted. + +The purpose of this method of operation is to: + +- avoid the lengthy encryption process when unnecessary +- prevent accidental double-encryption (encrypting the same file + twice) + +#### *Enter Key* Action + +It\'s not always convenient to enter the key at the point at which de- +or encryption takes place. This action allows you to specify the +passphrase for a key at a different point. + +If you don\'t wish to double-enter a key when encrypting, you can also +use this action before an Encrypt action and not select *Confirm*. + +#### *Set Key* Action + +To allow full-automation of en/decryption, the passphrase for a key can +also be set without user interaction. However, this is much less secure +tham `Enter Key` because: + +- the passphrase (as part of the action) is stored in **clear text** + in device memory and could be read by the root user if the device OS + is compromised +- although the passphrase is itself encrypted when a backup is made to + SD, the parameters for that encryption can be recovered from the + java code in the Tasker apk file + +#### Security + +##### Algorithm + +Tasker uses symmetric encryption, meaning the same passphrase is used +both to encrypt and decrypt the data. + +The default algorithm is \"PBEWithMD5And128BitAES-CBC-OpenSSL\". PBE +stands for password-based encryption, see [RFC +2898](http://www.ietf.org/rfc/rfc2898.txt). + +A salt is combined with the passphrase several hundreds of times using +the MD5 algorithm to produce a key which is used for the 128-bit +(default setting) AES algorithm. + +The number of iterations and algorithm can be set in +`Menu / Prefs / Action`. + +##### Pass Phrases + +The longer the passphrase, the more secure the data. Minimally 8 +characters of mixed alphabetic, numeric and punctuation characters is +recommended. + +##### Clearing Keys + +While a key\'s ciphers are in memory, anyone can use the key for +decryption or encryption if your device is lost or stolen, so it may be +wise to setup a *Clear Key* action e.g. when the device is turned off +(see Screen Off in the Event Context) or at a particular time (Time +Context), depending on what you are using the encryption for. + +##### Manually Encrypting/Decrypting + +You can use Tasker\'s file browser (action Browse Files) to +encrypt/decrypt files directly, via a long-click on the file. diff --git a/en/eventcontext.md b/en/eventcontext.md new file mode 100644 index 0000000..b97a362 --- /dev/null +++ b/en/eventcontext.md @@ -0,0 +1,36 @@ +--- +title: 'Tasker: Event Context' +--- + +Event Context ![](icon_tasker.png) +---------------------------------- + +An *Event Context* allows specification of an event which is needed to +activate its profile e.g. SMS received, screen has gone off. + +Events are a little different to other contexts because they are +*instantaneous* whereas other contexts usually have a duration. + +This means that it is nonsensical to specify that e.g. the screen +brightness should be set to X for the duration of the event, so Tasker +assumes that all [settings](settings.html) actions should persist beyond +the event. + +For more information about specifying events, see the [Event Edit +screen](activity_eventedit.html). + +#### Event Parameters + +When a task is triggered by an event, the parameters of the event that +ocurred are passed to the task so that it can make decisions based on +the event details. + +The parameters are passed in the [array](variables.html#arrays) +*%evtprm*. + +The order of elements of the array have values which match the order of +the parameters of the event. + +Example: if an event\'s second parameter is an Application, %evtprm2 in +the launched task will be set to the label of the application which +triggered the event. diff --git a/en/faqs/faq-appcreation.md b/en/faqs/faq-appcreation.md new file mode 100644 index 0000000..fcc22dd --- /dev/null +++ b/en/faqs/faq-appcreation.md @@ -0,0 +1,135 @@ +FAQ: App Creation ![](androidlogo.png) ![](icon_tasker.png) +----------------------------------------------------------- + +- [Does app creation support profiles and scenes ?](#c) +- [Why is the app always shown as running ?](#a) +- [How do I do initialization on the first launch ?](#b) +- [How can my task tell if it is running in Tasker or a child app + ?](#h) +- [Why isn\'t my app detecting background events ?](#d) +- [How can I send the developer a short-term App Factory log ?](#e) +- [How can I send the developer a long-term App Factory log ?](#e2) +- [Can I include Google Play\'s licencing service in my app ?](#f) +- [Can I get the java source code from my created app ?](#g) + +[]{#c} + +#### Does app creation support profiles and scenes ? + +Sure. You can export projects as apps and projects can contain profiles, +tasks and scenes. + +For help accessing projects, see `Menu / Info / Help This Screen` in the +main screen. + +[]{#a} + +#### Why is the app always shown as running ? + +Tasker tries to detect when it\'s monitor service is no longer needed +but that is not always possible. You can put a `Disable` action from the +`Tasker` category at the end of your launch task to ensure that it +happens. + +The monitor will be started again automatically each time the app is +lauched from the home screen. + +[]{#b} + +#### How do I do initialization on the first launch ? + +Setup your launch task something like this: + + If %LaunchCount = 0 + ...initialization actions... + Else + ...normal actions... + Elsif + Variable Add, %LaunchCount, 1 + +[]{#h} + +#### How can my task tell if it is running in Tasker or a child app ? + +Use the **Test App** action and select the mode **This Package**. + +The resulting variable will contain the package identifier you specified +in the App Configuration screen if the task is running in a child app, +otherwise it will contain one of *net.dinglisch.android.tasker* or +*net.dinglisch.android.taskerm*. + +[]{#d} + +#### Why isn\'t my app detecting background events ? + +One possible cause is: when an app has just been installed on Android it +is in a \'frozen\' state until there is some user interaction with it +(usually clicking the home screen icon at least once). []{#e} + +#### How can I send the developer a short-term App Factory log ? + +- download aLogcat, free from Android Market +- disable Tasker in the main screen bottom-left +- in the App Config screen, check *Advanced Properties* and then + *Debug* +- create and install the new app \*twice\* +- launch the new app from the home screen +- reproduce whatever conditions cause the problem +- go to aLogCat, click **Menu / Pause** then **Menu / Send** +- the destination email is listed in **Menu / Info / User Support** in + Tasker +- include at the top a brief description of the problem that the email + concerns + +Try to make the log as soon as possible after the problem occurs. + +[]{#e2} + +#### How can I send the developer a long-term App Factory log ? + +- disable Tasker by long-clicking the icon top-left in the main screen +- in the App Config screen, check *Advanced Properties* and then + *Debug* +- create and install the new app \*twice\* +- enable the **Storage** permission for the app in Android Settings if + necessary +- launch the new app from the home screen +- reproduce whatever conditions cause the problem +- send the developer the log files in the directory NAMEOFAPP in the + root directory of the SD card +- the destination email is listed in **Menu / Info / User Support** in + Tasker +- include at the top a brief description of the problem that the email + concerns + +Try to make the log as soon as possible after the problem occurs. + +[]{#f} + +#### Can I include Google Play\'s licencing service in my app ? + +No, this is not possible. + +Tasker\'s code does not include the licencing service because of +continual problems it caused. In any case, the licensing service is +ineffectual for preventing unauthorized code distribution. + +If you really want to include licensing in your app, you could e.g. +require the user to enter their order code and check via the *HTTP Get* +action on your server if that is a valid number. + +Setting up such a server to download Google order details and accept +verification requests is a lot of effort and requires some technical +knowledge, however. + +[]{#g} + +#### Can I get the java source code from my created app ? + +Short answer: no. + +Long answer: when a new app is created, Tasker doesn\'t create new java +code to implement the things in your task or project configuration. +Instead, the existing Tasker code is used with the new app and executed +similarly to how it\'s executed in Tasker, but in the shell of a new +APK. diff --git a/en/faqs/faq-how.md b/en/faqs/faq-how.md new file mode 100644 index 0000000..ce8f2a4 --- /dev/null +++ b/en/faqs/faq-how.md @@ -0,0 +1,435 @@ +FAQ: How Do I\... / Can I\... ? ![](androidlogo.png) ![](icon_tasker.png) +------------------------------------------------------------------------- + +- How can I contact the developer ? +- How can I send the developer a bug report ? +- How can I send the developer a long-term log ? +- [Can I change an app\'s settings / press it\'s buttons ?](#a) +- [Can I control / respond to events in application X with Tasker + ?](#o) +- [How can I stop Tasker restoring a setting ?](#cx) +- [Can Tasker detect volume button presses ?](#c) +- [Can Tasker be used from an external SD card ?](#d) +- [Can I use Tasker to turn the screen on and off ?](#e) +- [How do I create my default settings ?](#f) +- [How can I run more than one task when a profile goes active ?](#g) +- [Can I hide the notification list entry when Tasker is running + ?](#h) +- [Can I change or remove the status bar icon when Tasker is running + ?](#h2) +- [What if I want a repeating time context, but I need to do something + that takes a while ?](#i) +- [How can I do something every minute ?](#j) +- [How do I specify *9:30AM on Monday* and *10AM on Tuesday* with the + same profile ?](#k) +- [How do I specify weekend night-times ?](#k2) +- [How do I stop the screen dimming when I have the display Stay On + set to e.g. \'With AC\' ?](#l) +- [How can I stop Wifi Near toggling wifi on-off when the phone is in + Airplane Mode ?](#m) +- [Can I divert incoming calls ?](#n) +- [How can I detect if Wifi is connected (not just enabled) ?](#p) +- [How can I import/export individual profiles, tasks or scenes ?](#q) +- [How do I turn off the flashing notification LED ?](#s) +- [How do I put my phone in Silent or Vibrate mode ?](#t) +- [Can I automate sending of an SMS / Call through Google Voice ?](#u) +- [Can I change/remove the notification sounds for particular apps + ?](#v) +- Can I silence all notifications except from particular applications + ? +- [Can I change the input method ?](#w) +- [How do I test whether I can reach the Internet (ping) ?](#y) +- [How can I use whitespace (newline, tab etc) in action parameters + ?](#y2) +- [How can I run a task from a terminal login ?](#y3) +- [How can I silence the camera shutter sound ?](#y4) + +------------------------------------------------------------------------ + +[]{#z} + +#### How can I contact the developer ? + +There is a contact email given at **Menu / Info / Support**. In general, +this is intended for order and validation help, which is often +confidential, and other private issues. + +Please post Tasker usage queries/problems in the [Tasker +Forum](http://groups.google.com/group/tasker) where the developer is +very active. + +Advantages: + +- the user community has more experience than the developer with using + Tasker +- other people can benefit if your problem is solved +- the developer has more time for fixing bugs and adding features, + which benefits everyone + +[]{#x} + +#### How can I send the developer a bug report ? + +- go to *Android Settings* then **About Phone** +- tap 10 or more times on the **Build Version** entry +- go back one screen +- select **Developer Options** +- check the **USB Debugging** option if it\'s not already checked +- do whatever it is that causes the problem +- go back to **Developer Options** and tap **Take Bug Report** (the + first entry) +- wait a short while until the bug report is ready (a notification + will appear) +- share using an email application +- the destination email address is listed in **Menu / Info / Support** + in Tasker +- include at the top of the email a brief description of the problem + that the email concerns +- disable **USB Debugging** and **Developer Options** (switch at top) + +Try to make the log as soon as possible after the problem occurs. + +[]{#x2} + +#### How can I send the developer a long-term log ? + +- deselect **Menu / Prefs / UI / Beginner Mode** in Tasker +- enable **Menu / Prefs / Misc / Debug to Internal Storage** in Tasker +- when the problem has occured, email the file + */sdcard/Tasker/log/tasker.txt* (and *tasker.txt.1*, if it exists) + to the developer email listed at **Menu / Info / Support** +- include at the top a brief description of the problem that the log + concerns + +[]{#a} + +#### Can I change an app\'s settings / press it\'s buttons ? + +Standard Android doesn\'t allow an app to change, poke, prod or peek at +anything within another app, including simulating keypresses and screen +taps. + +On a rooted device, you can use some of the actions in the `Input` +category to navigate around an app, click on UI elements and enter text +automatically. + +[]{#o} + +#### Can I control / respond to events in application X with Tasker ? + +If a Tasker user wants to automate some aspect of another program they +use, they just need to point the developer of the other app at the +[Tasker Developer Page](/developers.html) and nag at him/her a bit. + +[]{#cx} + +#### How can I stop Tasker restoring a setting ? + +Tasker will restore any setting which is changed in the Enter task of a +profile. There are four ways to prevent this: + +1. deselect the *Restore Settings* in the Profile Properties of the + relevant profile. +2. if you set the same setting in the Exit task of the profile Tasker + will take that as a hint that the previous value shouldn\'t be + restored. +3. create a separate task to run the settings actions and in the Enter + task of the profile do a Perform Task action (from the category + *Tasker*) on that separate task. This trick is known as Stefan\'s + Setting Sidestep. +4. you can use the corresponding Javascriptlet function instead of the + setting action. Settings made in Javascriptlets are not restored. + +[]{#c} + +#### Can Tasker detect volume button presses ? + +No, sorry, that\'s not possible ATM. + +The closest you can get is to detect changes in a volume variable (e.g. +%VOLR for the ringer volume) via event Variable Set. + +[]{#d} + +#### Can Tasker be used from an external SD card ? + +Prior to Android 6.0, that is not possible, even using apps2SD. + +With Android 6.0+ if the external SD is being used as \'adoptable\', +\'flex\' or \'internal\' (the wording varies) storage, there should be +no issue. + +[]{#e} + +#### Can I use Tasker to turn the screen on and off ? + +Turning on, use the Display / Turn On action. Unfortunately, that action +is inaccessible with Android 2.3+. + +For turning off, you can use the Display / System Lock action with +Android 2.0+. + +For Android 1.6, you can set the Display Timeout to it\'s minimum +(around 7 seconds) and then set it back to normal in response to a +Display Off event. + +[]{#f} + +#### How do I create my default settings ? + +You don\'t have to configure \'default\' settings in Tasker. The +\'default\' settings are how your device is configured before any Tasker +profile becomes active. This \'default\' is automatically restored as +profiles become inactive. + +Exception: changes to settings made in *Exit* tasks are not restored. + +[]{#g} + +#### How can I run more than one task when a profile goes active ? + +Add an action *Perform Task* from the category *Tasker* for each task +that you want to run (don\'t click the Stop button). + +**Warning:**: settings in the called tasks will not be restored by +Tasker, only settings changed directly within the Enter task. + +[]{#h} + +#### Can I hide the notification list entry when Tasker is running ? + +If the notification is very annoying, it can be removed on many devices +by setting the icon transparent at **Menu / Prefs / Monitor / +Notification Icon**. + +If that doesn\'t work, disable the Run In Foreground setting which can +be found at **Menu / Prefs / Monitor / Run In Foreground** + +Please read the help text associated with this option first. + +[]{#h2} + +#### Can I change or remove the status bar icon when Tasker is running ? + +You can change it with **Menu / Prefs / Monitor / Notification Icon**. + +You can remove it with **Menu / Prefs / Monitor / Show Notification +Icon**. + +[]{#i} + +#### What if I want a repeating time context, but I need to do something that takes a while ? + +- GPS On +- Wait 3 minutes +- GPS Off + +[]{#j} + +#### How can I do something every minute ? + +Set a repeat period of 2 minutes (the minumum allowed) and specify a +task like this: + +- Perform Task, TaDa +- Wait 1 Minute +- Perform Task, TaDa + +[]{#k} + +#### How do I specify 9:30AM on Monday and 10AM on Tuesday with the same profile ? + +You can\'t, because the Time and Day subcontexts operate completely +independent of each other. You have to specify two profiles and run the +same Task(s) with each of them (by giving the task a name). + +[]{#k2} + +#### How do I specify weekend night-times ? + +It\'s tempting to say: + +> ` Time: 23 - 09 Day: Friday or Saturday` + +But that won\'t work, because on Sunday at e.g. 3am the Day context (and +hence the whole profile) won\'t be active. + +For this kind of situation, you need to specify a profile for which +morning you want to be active and another for which evenings. In the +example, you want Friday and Saturday night plus Saturday or Sunday +morning: + +> ` Time: 23 - 24 Day: Friday or Saturday` + +> ` Time: 00 - 09 Day: Saturday or Sunday` + +[]{#l} + +#### How do I stop the screen dimming when I have the display Stay On set to e.g. \'With AC\' ? + +The screen dims around 10 seconds before the current Screen Off Timeout +value is reached. You can set Screen Timeout (for the relevant context +e.g. \'while docked\') to **Never** (set all sliders to maximum) if you +don\'t like that behaviour. []{#m} + +#### How can I stop Wifi Near toggling wifi on-off when the phone is in Airplane Mode ? + +Add a state **Airplane Mode** to your profile and click the **Invert** +button, which means *if Airplane Mode is off*. []{#n} + +#### Can I divert incoming calls ? + +It\'s not possible to divert incoming calls via Android, but most Mobile +Carriers accept special dialled sequences to do it before the call +reaches your phone. + +You can then use Tasker\'s *Phone / Call* action (with *Auto Dial* +checked) to setup and cancel incoming call diversions. + +The [Wikipedia page on Call +Forwarding](http://en.wikipedia.org/wiki/Call_forwarding) is a good +starting point. + +[]{#p} + +#### How can I detect if Wifi is connected (not just enabled) ? + +The \'standard\' way is to use State *Wifi Connected* to set and clear +your own variable with an enter and exit task respectively. + +An alternative trick is to match the word `connected` or `connection` in +the %WIFII variable (the actual word and lower/upper case changes with +Android version). + +[]{#q} + +#### How can I import/export individual profiles, tasks or scenes ? + +Import: + +Go to the main screen, long click on the tab for the type of thing you +want to import. + +Export: + +- ensure that `Menu / Prefs / UI / Beginner Mode` is **un**checked +- go to the main screen +- long-click on the thing you want to export + +[]{#s} + +#### How do I turn off the flashing notification LED ? + +Use the Audio / Notification Pulse action. + +If you\'re wondering what a flashing light is doing in the Audio +section: ask Google, that\'s where they put it in Android Settings. + +[]{#t} + +#### \>How do I put my phone in Silent or Vibrate mode ? + +Use action *Audio / Silent Mode*. + +Do not try to do it with *Volume Ringer* or *Vibrate on Ringer*. + +[]{#u} + +#### Can I automate sending of an SMS / Call through Google Voice ? + +Not directly through Tasker. However, [Steelgirder +Developments](http://sites.google.com/site/steelgirderdevelopmentsite/home) +have (non-free) plugins which you can easily use with Tasker to +accomplish this. + +Steelgirder and the author of Tasker are agreed on working together +wherever further integration of these plugins and Tasker is needed e.g. +support for Tasker variables. + +[]{#v} + +#### Can I change/remove the notification sounds for particular apps ? + +Yes, but it\'s a little complicated, please see the [relevant forum +post](http://groups.google.com/group/tasker/browse_thread/thread/4a6b6ea8b4e4cc86). +[]{#v2} + +#### Can I silence all notifications except from particular applications ? + +With Tasker versions from 1.0.10, you can try turning off all +notifications (e.g. via Silent Mode or setting the Notification Volume +to 0) and then using Tasker to do alerts for particular app +notifications using the `Notification` event in the UI category. []{#w} + +#### Can I change the input method ? + +On a rooted phone, yes, using the free Secure Settings plugin. + +Consider also starring this [feature +request](http://code.google.com/p/android/issues/detail?id=11677) with +Google. + +[]{#y} + +#### How do I test whether I can reach the Internet (ping) ? + + + HTTP Get URL (a known webpage), Continue Task On Error + If [ %HTTPR = 200 ] + ... + Endif + +[]{#y2} + +#### How can I use whitespace (newline, tab etc) in action parameters ? + +Tasker trims the start and end of all parameters to prevent whitespace +causing problems. The only exception is the `Variable Set` action. + +Therefore, if you want to use whitespace you should first assign it to a +variable and then use the variable where you want the whitespace to +appear: + +> ` Variable Set, %white, THISISANEWLINE Flash, Here's a newline: %white` + +[]{#y3} + +#### How can I run a task from a terminal login ? + + am broadcast -a net.dinglisch.android.tasker.ACTION_TASK -e task_name YOUR_TASK_NAME + +That\'s only possible on a rooted phone because otherwise there will be +a permission problem. + +[]{#y4} + +#### How can I silence the camera shutter sound ? + +This varies per device. + +Try creating a new profile with an **App** context and select the Camera +app. When asked to create a task, add the following actions: + +1. *Task / Wait*, **2 seconds** +2. *Audio / Sound Effects*, **off** +3. *Audio / Media Volume*, **0** +4. *Audio / System Volume*, **0** +5. *Audio / Notification Volume*, **0** +6. *Audio / Silent Mode*, **on** + +Then go to the Camera app, wait a couple of seconds and try taking a +picture. + +If you still hear the shutter sound, go back to the Tasker UI, click on +the task that you created and hit the **Play** button bottom-left to run +the task manually. Then go back to the Camera app. If you still hear the +shutter sound, then it\'s not going to be possible for Tasker to disable +it on your device. + +Some manufacturers deliberately prevent disabling of the shutter sound, +perhaps for legal reasons. + +Addendum + +A user has reported that setting DTMF volume to 0 removes the **focus** +sound in the camera app. diff --git a/en/faqs/faq-other.md b/en/faqs/faq-other.md new file mode 100644 index 0000000..5fccd9c --- /dev/null +++ b/en/faqs/faq-other.md @@ -0,0 +1,47 @@ +FAQ: Other ![](androidlogo.png) ![](icon_tasker.png) +---------------------------------------------------- + +- [Do you plan to include feature X ?](#a) +- [Should I worry about using Tasker\'s Accessibility service ?](#b) +- [What\'s the difference between a Widget and a Shortcut + ?](userguide/en/app_widgets.html#diff) +- [What\'s an *Instant Profile* ?](#instant) + +[]{#a} + +#### Do you plan to include feature X ? + +The developer has a large list of potential features and works through +it according to a mystical method based on star configurations. It\'s +difficult to say what will be done in advance, sorry. []{#b} + +#### Should I worry about using Tasker\'s Accessibility service ? + +Not at all. + +Although the Android warning says Tasker might read passwords, in fact: + +- Android doesn\'t allow apps to see the contents of fields labelled + *Password* +- Tasker doesn\'t even ask Android for data about text fields, only + buttons, windows and notifications + +[]{#instant} + +#### What\'s an *Instant Profile* ? + +Most profiles have a duration. Their enter task fires, they are active +for a while, then they go inactive and settings may be restored or an +exit task fired. However, profiles with + +- an Event context, **or** +- a Time context where the From parameter is the same as the To + parameter, **or** +- a Time context with a repeat value specified + +are only active for an instant and hence it does not make sense to talk +about an exit task and restoration of settings. + +There\'s no point setting brightness from 200 to 30, and then a +millisecond later back to 200, therefore settings made by an instant +profile stay at whatever value is specified. diff --git a/en/faqs/faq-problem.md b/en/faqs/faq-problem.md new file mode 100644 index 0000000..a2acd46 --- /dev/null +++ b/en/faqs/faq-problem.md @@ -0,0 +1,546 @@ +FAQ: Usage Problems ![](androidlogo.png) ![](icon_tasker.png) +------------------------------------------------------------- + +- [Why doesn\'t Tasker work in the background on my device?](#00) +- [Why won\'t Android let me uninstall Tasker ?](#0) +- [Why isn\'t GPS coming on for my profile with Time And GPS Location + contexts ?](#c) +- [Why can\'t I select Tasker for an application context ?](#d) +- [Why does it take my Wifi Near state so long to exit ?](#e) +- [Why isn\'t Tasker detecting when my Location Context changes ?](#f) +- [Why does Tasker mess up the app launching when I have an + Application Context for it ?](#g) +- [Why does my profile not do anything ?](#h) +- [Why aren\'t my settings restored ?](#w) +- Why does nothing happen when I click a Tasker widget ? +- [Why does Tasker crash when I try to create a Location Context + ?](#j) +- [Why can\'t I see any Tasker widgets in the home screen widget + selector ?](#k) +- [Why doesn\'t my repeating Time Context work ?](#l) +- [Why aren\'t my exit tasks run / settings restored before the device + shuts down ?](#m) +- [Why does my location exit task fire multiple times ?](#n) +- [Why does my Cell Near state keep going inactive ?](#o) +- [Why doesn\'t Notify LED work ?](#p) +- [Why do Tasker widgets disappear after a reboot on my Wildfire + ?](#q) +- [Why isn\'t my docking station detected ?](#r) +- [Why aren\'t I getting any cell data for the Cell Near state ?](#s) +- [Why isn\'t there a green light for the On/Off radio button on the + main screen ?](#t) +- [Why does the action Display Brightness cause my keyboard or + application to close ?](#u) +- [Why is the date in Tasker\'s notification list completely wrong + ?](#v) +- [Why won\'t Tasker install on my custom ROM ?](#w) +- [Why doesn\'t my `Perform Task` action work when I Test it ?](#x) +- [Why doesn\'t my App Context work ?](#app) +- [Why doesn\'t the Keyguard action work properly ?](#keyguard) +- [Why doesn\'t Tasker think my device is rooted ?](#root) +- [Why doesn\'t Tasker show my Local Media images anymore ?](#img) + +------------------------------------------------------------------------ + +[]{#00} + +#### Why doesn\'t Tasker work in the background on my device? + +To make sure Tasker and the AutoApps run in the foreground: + +- make sure Tasker is enabled +- enable foreground notification in Tasker settings +- enable the \"Use reliable alarms\" option +- **Check out + [dontkillmyapp.com](https://dontkillmyapp.com/?app=Tasker).** This + website will show, for your specific vendor, the best way to allow + Tasker to work correctly in the background. +- Disable battery optimization for the apps +- Make sure the Android Settings -\> Apps -\> Tasker -\> Battery -\> + Background activity option is enabled (this setting may be somewhere + else on different OEMs, but it\'s a very important setting that + might be disabled by default on some devices) +- If you want to use features while the screen is off make sure that + the options in Preferences -\> Monitor -\> Display Off Monitoring + are enabled for the conditions you want. +- Make sure that you disable any \"battery saving\" apps like + Greenify, etc +- If you want to have Wifi and Cell based profiles work on Android 8+ + make sure that location is enabled on your device. It\'s an Android + requirement that Tasker can\'t work around. +- On Sasmung devices go to Android Settings -\> Device Maintenance -\> + Battery -\> Unmonitored apps -\> add Tasker and all AutoApps +- On Xiaomi devices enable \"Auto Start\" for the apps and \"Display + on Lock Screen\" under \"Other Permissions\" +- On Xiaomi devices disable automatic backup of apps because that + process kills all running apps, including Tasker. +- On Huawei devices click the [lock in the recents + menu](huaweilock.jpg) for all the AutoApps and Tasker +- On Huawei devices manage battery optimizations manually in [battery + settings](huaweibatteryoptimizations.jpg) for all the AutoApps and + Tasker +- On Huawei devices disable Powergenie which stops apps from running + in the background. Try going to Settings -\> Battery, then tapping + on the gear in the upper right corner. Disable \"Close excessively + power-intensive apps\". Or use ADB: + - To disable powergenie use: adb shell pm disable-user + com.huawei.powergenie + + + + - To enable powergenie: adb shell pm enable com.huawei.powergenie + +- On Lenovo devices (possibly others) you have to disable the + [\"Disable Auto Start\"](lenovoapps.png) options for Tasker and all + AutoApps. +- If you plan on using plugins, disabling power saver mode may help + with some issues + +[]{#0} + +#### Why won\'t Android let me uninstall Tasker ? + +It\'s probably because you\'re using an action which needs Tasker\'s +device administrator function (e.g. `Display / System Lock`). + +You can disable it by going to +`Android Settings / Location & Security / Device Administration`. + +[]{#c} + +#### Why isn\'t GPS coming on for my profile with Time And GPS Location contexts ? + +In order to save power, Tasker only activates context detection as it is +needed. Therefore it will not attempt to fix your GPS location unless +the Time context is active. + +See the [Power Usage](userguide/en/power.html) section of the userguide +for more details. + +[]{#d} + +#### Why can\'t I select Tasker for an application context ? + +This is considered too dangerous. A mistake could easily result in being +unable to enter Tasker and therefore being unable to rectify the +mistake. []{#e} + +#### Why does it take my Wifi Near state so long to exit ? + +Wifi Near requires **two** check periods to pass without seeing the +Access Point before the profile exits. This is intended to avoid the +context activating and deactivating if the AP is briefly not visible. + +Note also that there are different check periods for when the device is +on or off, and by default the off-period is much longer than the +on-period. See Menu / Preferences / Monitor/ Display On/Off Timings. + +[]{#f} + +#### Why isn\'t Tasker detecting when my Location Context changes ? + +Your radius is probably too small. + +As an example, if you are not using GPS the accuracy of your fixes is +probably around += 2km, so your radius should be also minimally 2km. + +If you \*are\* using GPS, the accuracy may still be only +-400m in +built-up areas. + +Here\'s a good way to create a location context: + +- go to the geographical location you want a context for +- make a new location context +- deselect GPS if you don\'t want to use it +- press Grab Fix, and wait till it\'s done + +This will set your radius appropriate to the accuracy of the location +providers at that spot. + +If there\'s still nothing happening: + +- check GPS is on in Android Settings, if you\'re using GPS. +- check your device has a view of the sky, if you\'re using GPS +- network connectivity is often needed to get GPS started, and always + needed for a Net location context. +- realize that location is only checked every 10 minutes by default + when the Display is off (to save power). You can check more often by + changing `Menu / Prefs / Monitor / Display Off Timings / All Checks` +- try the [general \'nothing happens\'](#h) tips +- look at [other possibilities for detecting your + location](/userguide/en/loctears.html) + +[]{#g} + +#### Why does Tasker mess up the app launching when I have an Application Context for it ? + +Some applications are sensitive like this. Probably all you have to do +is put as the first action in the **Enter** task the action *Wait* and +give as a parameter e.g. 300ms. If that doesn\'t work keep increasing +the value until it does. + +That gives the application time to finish initializing before messing +around with the screen brightness etc. + +[]{#w} + +#### Why aren\'t my settings restored ? + +Some possibilities: + +- if your profile sets setting x to *on*, then if x is already *on* + when the profile goes active, it will be left at *1* when the + profile exits. Test for this by putting an Alert / Notify action in + the enter task to see what the original value was. +- some other apps installed on the system can cause Tasker to be + killed and therefore the original settings being forgotten e.g. this + has been reported to be a problem with Titanium Backup. +- similarly, if the system is rebooted suddenly, some devices aren\'t + fast enough to save all the settings before the system turns off. + +[]{#h} + +#### Why does my profile not do anything ? + +Firstly, if are you using any of these other apps which have been +reported as interfering try disabling or temporarily uninstalling them: + +- \'Task Killers\' +- Quick System Info +- Autostarts + +After that: + +- is the profile enabled ? It should have a green tick next to it. +- have you clicked the *On* button in the [Profile List + screen](userguide/en/activity_summary.html) before leaving Tasker ? + It should be showing a **green light**. +- is the profile shown as active in the status bar pulldown ? If so, + it\'s probably your task that\'s not working. +- make sure the Monitor service running in the foreground (see + `Menu / Prefs / Monitor`) +- how\'s your available memory, see + `Android Settings / Application / Running Services / Available Memory`. + Are you maybe getting Tasker\'s low-memory notifications ? + +If your profile is activating but the task doesn\'t seem to do anything: + +- perhaps you are running a pirated version of Tasker ? +- try enabling **Menu / Prefs / More / Popup Warning/Errors** to see + if any errors are occuring (they may not be shown till you go back + to the Tasker UI) +- look in **Menu / More / Run Log** to see if the task is being + carried out. +- try a simple task like *Alert / Vibrate* or *Alert / Flash* +- perhaps another profile is interfering: do **Menu / Data / Backup**, + then delete all other profiles except the one that\'s not working + +[]{#i} + +#### Why does nothing happen when I click a Tasker widget ? + +Usually this is due to Tasker not being enabled, see the *On/Off* button +in the first UI screen. []{#j} + +#### Why does Tasker crash when I try to create a Location Context ? + +The likely cause is that you are running a non-standard Android ROM +which doesn\'t contain the correct (or maybe any) Google Maps library. +[]{#k} + +#### Why can\'t I see any Tasker widgets in the home screen widget selector ? + +This is almost always because you have Tasker installed on the SD card, +which is just not possible due to several reasons related to how Tasker +works. []{#l} + +#### Why doesn\'t my repeating Time Context work ? + +It\'s important to understand that a repeating time context is a +**series of instant events**. + +Trying to combine a repeating time context with another context that +does active monitoring usually won\'t work e.g. + +> ` Time: Repeating Every 5 Minutes Task: Enable Wifi (no toggle)` + +> ` State: Wifi Near Task: XXX` + +Wifi Near is checked on a static schedule. You currently can\'t change +the schedule dynamically, so the above two profiles will only do XXX +when the 5 minute repeat happens to coincide with when Tasker is doing +it\'s Wifi Near check. + +[]{#m} + +#### Why aren\'t my exit tasks run / settings restored before the device shuts down ? + +Android gives an app very little time to perform cleanup during +shutdown, this is especially a problem on slow devices. + +Therefore (as of 1.0.9), Tasker only attempts to run *Variable Set, +Clear, Add* and *Subtract* actions when the device shuts down, since +they take relatively little time. + +In the future, Tasker will have some concept of default values which +will then be restored when it starts after the device has booted again. + +On Android 1.5 devices, Tasker cannot do anything at shutdown because +the system does not send a notification. + +[]{#n} + +#### Why does my location exit task fire multiple times ? + +Probably the location Android reports is *bouncing* between a point +inside your location radius and one outside. This is relatively unusual +because Tasker has some built-in mechanisms to try and prevent it. + +A quick fix is to add a *Cooldown* to your profile. Click on a context, +select Profile then Properties and slide the Cooldown Time to 30 +minutes. + +The profile is then prevented from going active more than once every 30 +minutes. + +[]{#o} + +#### Why does my Cell Near state keep going inactive ? + +Even when your phone is motionless, it will probably still often switch +between different cell towers. Going to a different room in your house +may involve a whole different set of cell towers. + +When you notice your Cell Near state going inactive at your location +(and assuming you still have a signal), launch Tasker, click on the Cell +Near context and edit it. Click **Scan** and you should immediately see +a new Cell added to the list. Click **Done** and then **Apply** and your +context should go active again. + +Sometimes the new cell will only be visible for a few seconds and will +not appear when you press scan. In that case, press the **Recent** +button and select it manually from the list. + +[]{#p} + +#### Why doesn\'t Notify LED work ? + +From the action help (hint hint): + +- not all devices support all colours. Many devices will only support + red and green. In general, colours near the top of the list are more + likely to be supported. +- some devices will only flash the LED when the device is off at the + time the notification is received. + +[]{#q} + +#### Why do Tasker widgets disappear after a reboot on my Wildfire ? + +This is a bug on some Wildfire firmware version. + +It\'s not possible for the Tasker developer to work around, but is +reported as fixed in version 1.25.405.1 of the firmware. + +[]{#r} + +#### Why isn\'t my docking station detected ? + +Some docking stations just aren\'t recognized as such (Android doesn\'t +indicate that a docking station has been connected). + +Depending on other things you connect your device to, you might be able +to use one of the following as a workaround: + +- State: USB connected +- State: Power +- State: BT Connected (if it\'s a BT dock) + +[]{#s} + +#### Why aren\'t I getting any cell data for the Cell Near state ? + +A user reports being able to fix this issue as follows: + + I was able to fix this issue by going into the EPST menues using + ##DATA# on the keypad and changing the EVDO Preferred mode from HDR to + Automatic. + +It\'s possible that you will only be able to receive, not make, phone +calls as another symptom of this problem. + +[]{#t} + +#### Why isn\'t there a green light for the On/Off radio button on the main screen ? + +A user discovered that this happens when the DPI value of the Android +build is set to particulart values (e.g. 200,240 is OK, 220 the light +disappears). []{#u} + +#### Why does the action Display Brightness cause my keyboard or application to close ? + +Normally Android does not effect changes to brightness immediately, so +Tasker has to use a trick to make it happen. That trick can sometimes +have the side effect that e.g. some dialogs like the soft keyboard may +close. + +To avoid that, you can deselect the Immediate Effect checkbox in the +Display Brightness action. + +[]{#v} + +#### Why is the date in Tasker\'s notification list completely wrong ? + +This occurs if you select a transparent *Notification Icon* at +`Menu / Prefs / Monitor`, but don\'t specify a *Custom Notification +Layout*. + +Changing to a non-transparent icon or a custom layout will fix the +problem. + +[]{#w} + +#### Why won\'t Tasker install on my custom ROM ? + +The most likely reason is that you don\'t have Google Maps installed on +the device. With several custom ROMs that comes as a separate package. +[]{#x} + +#### Why doesn\'t my `Perform Task` action work when I Test it ? + +When task (a) runs a `Perform Task` action to start task (b), the order +in which the two tasks are executed depends on their relative +priorities. + +A feature of the Test button is that the tested task (a) runs at +extremely high priority to ensure that the task runs even if other tasks +are running in the background. + +So testing `Perform Task` with the Test button will only work as +expected if in actual usage task (a) will always have higher priority +than task (b) or the `Perform Task` action has **Stop** specified. + +[]{#app} + +#### Why doesn\'t my App Context work ? + +First, we need to find out which method Tasker is using to detect app +changes on your device. + +Disable `Menu / Prefs / UI / Beginner Mode` then look in +`Menu / Prefs / Monitor` to see if you have an entry **App Check +Method**. If you don\'t have such an entry, Tasker is using its +*Accessibility Service*. + +If Tasker is using Usage Stats for app detection, you need to ask +Android to give Tasker permission to do that, see +`Menu / More / Android Settings / App Usage Stats`. Otherwise, you need +to make sure Tasker\'s Accessibility Service is enabled in Android +Settings, see `Menu / More / Android Settings / Accessibility service`. + +Further tips: + +- if Tasker offers you the choice to use different methods, try the + other methods. Remember to give Tasker permission in Android + settings for the new method (see above). +- If you are using Nova Launcher, set + `Settings / App & Widget Drawer / Advanced / Automatically Close` to + **off**. +- Some apps (very few) aren\'t detected by Tasker, usually due to + their internal structure. +- Some custom Android ROMs also have special configurations which + prevent Tasker\'s app detection working. + +For the latter problem, there are a few things you can try: + +- look for special settings in your ROM that relate to \'keeping the + launcher in memory\'. They should be **disabled**. +- change the build properties file. Look in `/system/build.prop` (or + possibly `/system/local.prop` or `/data/local.prop`) for a line + like: + + > ro.HOME\_APP\_ADJ=-17 + + Change it in a terminal program to look like this: + + > ro.HOME\_APP\_ADJ=1 + + If you didn\'t find an existing line, just add the new line as + above. + + Note: you will first need to make `/system` writeable. You can do + that e.g. with Tasker\'s `Remount` action. Remember to make it + not-writeable again after making the change. + +- try detecting apps with a state using the **%WIN** (*window title*) + variable; create a new state + + > `Variable Value, %WIN, Matches, TITLE` + + where TITLE is the title of the window of the app you are interested + in. For this solution to work, you also need to enable Tasker\'s + *Accessibility Service* in Android Settings. + + You can check what %WIN shows for the app you are interested in with + this profile: + + > Event: Variable Set, %WIN\ + > Alert / Flash, Win is now %WIN + +[]{#keyguard} + +#### Why doesn\'t the Keyguard action work properly ? + +Android does not officially support toggling of the Keyguard by an app. +The Keyguard action was introduced in an early version of Tasker when a +reliable workaround was possible. + +In more recent Android versions, the workaround is no longer so reliable +due to internal changes made within Android. If Keyguard works at all, +there may be disturbing side-effects. + +The Keyguard action will likely be most reliablewhen the display is on +and and the Keyguard is already unlocked. + +Some people have more luck with the same functionality provided by the +[Secure Settings +plugin](https://play.google.com/store/apps/details?id=com.intangibleobject.securesettings.plugin). +After install, you can find the Secure Settings plugin in the **Plugin** +action category. Note that a rooted device is **not** needed to use this +part of Secure Settings. + +[]{#root} + +#### Why doesn\'t Tasker think my device is rooted ? + +Tasker requires two things before root functionality is enabled: + +1. the `su` program must be in your path +2. **one** of the following must be found: + - a superuser package + - the word *modversion* somewhere in the file `/system/build.prop` + +If root is not being detected on your device but you are sure that root +can be used by Tasker, you can therefore probably fix that by adding a +line like: + +> `# modversion this line enables Tasker root support` + +to the top of the file `/system/build.prop`. + +[]{#img} + +#### Why doesn\'t Tasker show my Local Media images anymore ? + +When you select a Local Media image, Android grants Tasker rights to +keep using it. + +However, when you uninstall Tasker, Android forgets those rights and +doesn\'t reassign them when you install Tasker again. This is clearly a +failing in Android\... On some devices Android also forgets the rights +when the device is rebooted, but this is very rare and almost certainly +a problem with the particular device involved. + +To fix the problem, you wil unfortunately need to reselect the Local +Media images in the Tasker UI so that Android grants it access rights +again. diff --git a/en/faqs/faq-why.md b/en/faqs/faq-why.md new file mode 100644 index 0000000..50d55f3 --- /dev/null +++ b/en/faqs/faq-why.md @@ -0,0 +1,135 @@ +FAQ: Why\... ? ![](androidlogo.png) ![](icon_tasker.png) +-------------------------------------------------------- + +- [Why am I an idiot if I use a pirated copy of Tasker ?](#f) +- [Why is GPS often scanning when I unlock my device ?](#a) +- [Why does Tasker need so many permissions ?](#b) +- [Why does Tasker need the INTERNET permission ?](#c) +- [Why isn\'t Tasker shown in the Application Context list ?](#d) +- [Why does Tasker have it\'s own music player **and** controls for + the system music player ?](#e) +- [Why does a Cell Near context not become inactive when I turn on + Airplane Mode ?](#g) +- [Why can\'t I use a downloaded icon for my shortcut task / Notify + action ?](#h) +- [Why does my profile have 2 enter tasks ? Why can\'t I add an exit + task ?](#i) + +------------------------------------------------------------------------ + +[]{#f} + +#### Why am I an idiot if I use a pirated copy of Tasker ? + +The hacker can do virtually anything with your phone. Record your calls +and upload them to a website, SMS your location and all your contacts, +make calls automatically, wipe your SD card, secretely record from your +microphone any time etc etc []{#a} + +#### Why is GPS often scanning when I unlock my device ? + +When the device wakes up, Tasker switches from a low-frequency GPS check +schedule to a higher-frequency one. Android\'s GPS software always does +an immediate scan when switching the check frequency. + +It\'s not because Tasker is constantly scanning while the device is off + +You can change the frequency in Menu / Prefs / Monitor. + +[]{#b} + +#### Why does Tasker need so many permissions ? + +Because it can do so much! + +Unfortunately, Android requires that an app specify it\'s permissions +even if they are never used, which means that permissions for all of the +things which the user could **potentially** ask Tasker to do need to be +specified. + +If you are still concerned, consider that Tasker has over 25,000 +downloads at the time of writing and any abuse taking place would +quickly be discovered. + +[]{#c} + +#### Why does Tasker need the INTERNET permission ? + +The INTERNET permission is used solely for: + +- google maps downloading map data, only for setting up a Location + context +- to carry out HTTP Post/Get actions and other actions that require an + Internet connection by their nature +- to verify the order number, and only until it has been successfully + verified +- to check whether a new Tasker version is available, if configured in + Preferences + +Tasker never directly uses Internet access for **anything** else. + +[]{#d} + +#### Why isn\'t Tasker shown in the Application Context list ? + +Because it\'s easy to get into trouble firing tasks in Tasker. For +example, if a profile is setup with a Tasker Application Context and a +task with Load App Calculator, it will not be possible to enter Tasker +anymore. []{#e} + +#### Why does Tasker have it\'s own music player **and** controls for the system music player ? + +- the system music player is not guaranteed to be present or the same + on all systems. +- finer control can be exercised over the Tasker player e.g. starting + the track from a preset seek point +- Tasker\'s player is more discrete, there is no notification bar + icon. +- by having two players available you can do things like alternating + audio from different music sources or even playing simiultaneously. + +[]{#g} + +#### Why does a Cell Near context not become inactive when I turn on Airplane Mode ? + +Cell Near is *sticky*. That means that once active it stays active until +a non-matching Cell ID is seen. In Airplane Mode no Cell IDs are seen +and so the context stays active. + +Many people use Airplane Mode at night e.g. to save battery. If you also +have a Cell Near profile that detects when you are home, it would become +inactive at night if Cell Near wasn\'t sticky. + +A couple of points: + +- the Cell radio isn\'t being turned on by Tasker in Airplane Mode. +- if you want a profile to become inactive for Airplane Mode, just add + an Inverted state Airplane Mode to it. + +[]{#h} + +#### Why can\'t I use a downloaded icon for my shortcut task / `Notify` action ? + +Some things just weren\'t meant to be (i.e. Android doesn\'t allow it). + +To solve the shortcut problem, you can always use a widget though. + +For notifications: + +- if you would like this to be possible one day, please star this + [Android feature + request](http://code.google.com/p/android/issues/detail?id=12302) +- it would be technically possible to create \'icon pack\' APKs and + that might happen one day + +[]{#i} + +#### Why does my profile have 2 enter tasks ? Why can\'t I add an exit task ? + +That\'s because it\'s an [instant](faq-other.html#instant) profile. + +As a convenience, the Exit task with such profiles is replaced by an +extra Enter task in case you have a lot to do with that profile. + +Note that the tasks you specify execute in the order they are specified, +their actions do not alternate. diff --git a/en/flowcontrol.md b/en/flowcontrol.md new file mode 100644 index 0000000..729ae5e --- /dev/null +++ b/en/flowcontrol.md @@ -0,0 +1,291 @@ +--- +title: 'Tasker: Flow Control' +--- + +Flow Control ![](icon_tasker.png) +--------------------------------- + +#### Overview + +Task flow control is based on the following Tasker elements: + +- [variable](variables.html) values +- [conditions](#condition) on individual actions +- *If / Else / Endif* actions for conditional grouping of following + actions +- *For / End For* to do a set of actions once for each of a set of + elements +- *Goto* action (jumping around within a task). +- *Perform Task* action (calling other tasks as subroutines) +- *Stop* action (terminate task immediately) + +On the Wiki there is a detailed example of [processing a file\'s +content](http://tasker.wikidot.com/fileproc) \[External Link\]. + +Tip: if you accidentally create a task that never ends when +experimenting with loops, use the **Kill** button in the Task Edit +screen to end it manually. + +[]{#condition} + +##### Conditions + +Every action can have a condition associated with it (specify this in +the Action Edit screen). If the condition does not match, the action +will be skipped. + +A condition consists of an *operator* (\'equals\' etc) and two +*parameters*. The possible operators are: + +- *Equals* (eq)\ + The left parameter is identical to the right parameter. +- *Doesn\'t Equal* (neq)\ + The left parameter is not identical to the right parameter. +- *Matches* (\~)\ + The right parameter is a pattern which the left parameter is + [matched against](matching.html). +- *Not Matches* (!\~)\ + As above, but the match must fail for the action to be executed. +- *Matches Regex* (\~R)\ + The right parameter is a regular expression which the left parameter + is [matched against](matching.html#regex). +- *Doesn\'t Match Regex* (!\~R)\ + As above, but the match must fail for the action to be executed. +- *Maths: Less Than* (\<)\ + Both parameters (after variables are substitued) must be numbers or + mathematical expressions and the first must be **less** than the + second e.g. `3` \< `6`. See [Maths](maths.html) for more info. +- *Maths: Greater Than* (\>)\ + As above, but the first parameter must evaluate to **more** than the + second. +- *Maths: Equals* (=)\ + As above, but the two parameters must be numerically equal. +- *Maths: Isn\'t Equal To* (!=)\ + As above, but the two parameters must be **not** numerically equal. +- *Maths: Is Even* (Even)\ + The left parameter is an even number. +- *Maths: Is Odd* (Odd)\ + The left parameter is an odd number. +- *Is/Isn\'t Set* (Set/!Set)\ + Whether the specified variable has a value or not. + +Expressions which are not mathematically valid e.g. *I Am The Walrus \> +5* give a warning and evaluate to **false** when used with a +mathematical operator. + +[]{#for} + +#### Foreach Loop + +Goal: perform a set of actions for each of *apple*, *pear* and *banana*. + + ----------------------- ----------------------- ----------------------- + 1. **For**\ Loop once for each of + %item\ apple, pear and banana + apple,pear,banana + + 2.   **Action One**\ Example: Flash %item + + 3.   **Action Two**\ \... + + 4. **End For**\ Return to action 1 if + we havn\'t done all the + items yet + ----------------------- ----------------------- ----------------------- + +Result: Action One and Action Two are performed three times. The first +time, the variable %item is set to *apple*, the second time *pear* and +the last time *banana*. + +You can insert a `Goto` action in the loop with either *Top of Loop* +(meaning continue, skip to the next item straight away) or *End of Loop* +(meaning break, stop without doing any more items) specified. + +In adition to simple text, the `For` action accepts any comma-separated +combination of these Items: + +- a numeric range e.g. 1:5 (= **1,2,3,4,5**) +- a numeric range with a jump e.g. 8:2:-2 (= **8,6,4,2**) +- a numeric range defined by variable values e.g. *2:%end:%skip*, + *1:%arr(\#)* +- a variable name (which is replaced) e.g. %fruit (= **banana** maybe) +- a [variable array](variables.html#arrays) part e.g. *%arr(1:2)* (= + %arr1, %arr2 = **apple,banana** maybe) + +A common case is to use %arr(), which performs a loop for each element +in the array %arr. + +**Warning**: the *Values* parameter in the loop is reevaluated with each +iteration of the loop, meaning that modifying array variables which +appear there from within the loop can have unexpected effects. To +workaround that, it can be best to use the following sequence: + + Variables Set, %values, %arrayWhichWillChange() + Variable Split, %values + For, %value, %values() + ... + +#### For Loop + +Goal: perform a set of actions for each of a set of elements in turn. + +Use the *Foreach Loop* as described above, with the *Items* parameter +being a range specification e.g. 4:0, 100, 0:8:2 (= +**4,3,2,1,0,100,0,2,4,6,8**). + +#### Until Loop + +Goal: perform a Task X until some condition is met (at least once) + + ----------------------- ----------------------- ----------------------- + 1. **Action One**\ \... + + 2. **Action Two**\ \... + + 3. **Goto**\ Return to action 1 if + 1\ runtime \< 20 + If %qtime **\<** 20 + ----------------------- ----------------------- ----------------------- + +Result: Action One and Action Two are performed until %QTIME contains +the value 20 or more i.e. until the task has been running for 20 +seconds. + +Note: %QTIME is a builtin local variable available in all tasks. + +#### While Loop + +Goal: perform a Task X while some condition is met. + + ----------------------- ----------------------- ----------------------- + 1. **Stop**\ Stop task if it\'s not + \ crunchy, otherwise go + If %fruit **Not to next action + Matches** Apple + + 2. **Action One**\ \... + + 3. **Action Two**\ \... + + 4. **Goto**\ Go back and see if + 1 we\'re still crunchy + ----------------------- ----------------------- ----------------------- + +Result: Action One and Action Two are performed while %fruit contains +the value Apple. + +#### Counter Loop + +Goal: perform a Task X a set number of times. + + ----------------------- ----------------------- ----------------------- + 1. **Variable Set**\ Initialize the counter + %count, 0 + + 2. **Action One**\ \... + Label: *LoopStart* + + 3. **Action Two**\ \... + + 4. **Variable Add**\ Add one to %count + %count, 1 + + 5. **Goto**\ Return to action 2 if + *LoopStart*\ count \< 10 + If %count **\<** 10 + ----------------------- ----------------------- ----------------------- + +Result: after initialization of %count to 0, the task loops around the +actions from 2-5 until %count reaches 10, at which point the condition +on the `Goto` fails and the end of the task is reached. + +Note that we used a `Goto` to a **labelled** action this time. In all +but the very simplest tasks it\'s better to use a label rather than a +number. It\'s easier to work out what\'s happening and if you insert or +delete actions before the loop starts, the `Goto` will still jump to the +right place. + +An alternative way to do this loop is to use a For action specified as +*0:10*. + +#### If / Then / Else Condition + +Goal: perform certain Tasks if conditions are met, otherwise perform a +different task. + + ----------------------- ----------------------- ----------------------- + 1. **If**\ **\~** is short for + %fruit **\~** Apple \'matches\' + + 2.   **Action One** \... + + 3.   **Action Two**\ \... + + 4. **Else If**\ an `Else` action with a + %fruit **\~** Pear condition + + 5.   **Action Three** \... + + 6. **Else**\ + + 7.   **Action Four**\ \... + ----------------------- ----------------------- ----------------------- + +Result: actions One and Two are executed if %fruit matches Apple, Action +Three is executed if %fruit matches Pear, otherwise Action Four is +executed. + +Notes: + +- you can have as many `Else If`s in a condition as you like +- if your condition is in the middle of a more complicated task, you + need to tell Tasker where the condition ends with an `End If` action + +#### Subroutines + +To call another task, use the `Perform Task` action. To use it as a +subroutine, you just need to ensure that the priority of the calling +task is less than the priority of the called task (more info: +[scheduling](tasks.html#scheduling)). + +The parent can optionally pass values to the child and receive a result +back: + +*Parent Task* + + ----------------------- ----------------------- ----------------------- + 1.   **Perform Task**\ pass 5 to the child, + Child,\ expect a result in + Priority, 10\ %result + %par1, 5,\ + Result Value Variable, + %result + + 2.   **Variable Flash**\ what did we get back ? + Result: %result + ----------------------- ----------------------- ----------------------- + +*Child Task* + + ----------------------- ----------------------- ----------------------- + 1.   **Variable Set**\ add one to the value + %newval, %par1 + 1, Do that was passed + Maths + + 1.   **Return**\ set %result in the + %newval\ parent to the value of + %newval in the child + ----------------------- ----------------------- ----------------------- + +Result: the parent flashes **6** + +Notes: + +- changes made to *%par1* and *%par2* in the child task are **not** + reflected by their changing in the parent task +- receiving a return value is optional for the parent, even if the + child tries to give it one +- unlike `Return` statements in most computer languages, Tasker\'s + does not necessarily stop the child task, so if the child and parent + have the same priority they can both run together and the child + return several results over time. diff --git a/en/gestures.md b/en/gestures.md new file mode 100644 index 0000000..552b93d --- /dev/null +++ b/en/gestures.md @@ -0,0 +1,104 @@ +--- +title: 'Tasker: Gestures & Shaking' +--- + +Gestures & Shaking ![](icon_tasker.png) +--------------------------------------- + +#### General + +*Gestures* are physical movements of the phone in space, which you first +record by creating a new Event of type *Gesture* (in the *Misc* +category). + +When you later redo the gesture while using your device, Tasker will +carry out the corresponding task(s) you have attached to its profile. + +Like normal events, gestures are restricted by other contexts. For +example, if you define a profile with a Gesture (Event) and Application +context, the gesture will only be recognized while using that particular +application. + +Note: it might be a good idea to disable Tasker before setting up new +gestures, as otherwise you are likely to trigger previously defined +ones. + +#### Recording A Gesture + +##### Gesture Points + +First off, it\'s important to know that Tasker only records the +particular points (which we\'ll call *inflection points*) of a gesture +that you tell it to. For example, recording a gesture involving tilting +the phone to the left and back you would record three inflection points: +the start, the tilted left position, and the end (which is the same as +the start in this case). + +You can record as many points as you like, but in general it\'s best to +record only the points where the phone is not moving. + +##### Recognized Movements + +Tasker will only recognize changes in the **angle** of the phone i.e. +**tilting** to left or right, backwards or forwards, or rotating +vertically. Imagine three poles going through the device in the three +dimensions. + +**Moving** the phone backwards or forwards, up or down or side to side +cannot be recognized. + +##### Procedure + +1. create a new Gesture Event and give it a name (so you can + differentiate between different gestures). +2. put the phone in the position where you want the gesture to start + and **press-and-hold** the **Call**, **Camera**, **Menu**, + **Search** or **Volume** hardware buttons to record the point. The + device will buzz. +3. move to another (preferably not-moving) point on the path of your + gesture, and press the button again (not a long press). The device + will buzz. +4. on the **final** inflection point, **press-and-hold** the button to + mark the end of the gesture. The device will buzz again and the + \"Recorded.\" message should now flash up. +5. Press **Done**, and add a Vibrate action so you can hear when your + pattern matches when testing it. + +#### Activation + +##### Calibration + +Before trying to match a pattern, you probably need to calibrate the +hardware in your device. Go to `Menu / Prefs / Monitor / Gestures`. +Press the **Calibrate** button and tilt your phone around in all +directions. + +Tasker now has some idea what kind of values the *accelerometer* in your +phone produces. + +You only need to calibrate once. + +#### Matching + +Now exit Tasker and move your device through the points you previously +defined when recording. You should hear the device vibrate when it +reaches the final recorded point. + +If not, try playing with the values in the Gesture Settings screen. For +instance, you could try raising the Match Radius (but be careful not to +raise it too much or you\'ll get a lot of matches by mistake). + +#### Power Usage + +Tasker does its best to limit power usage of gesture monitoring. + +- monitoring for gestures only takes place when all the other contexts + in a profile are already active (and so the gesture might have a + chance of activating the profile). For example, if you combine an + Application and Gesture (Event) context, gesture monitoring will + only take place while using that particular application. +- Gesture monitoring is by default turned off when the display is off + unless a power source is connected to the device, unless specified + otherwise in `Menu / Prefs / Monitor / Display Off Monitoring` +- updates from the accelerometer are at the minumum rate until the + start of a gesture is detected. diff --git a/en/help/ah_accelerometer.md b/en/help/ah_accelerometer.md new file mode 100644 index 0000000..a9d9669 --- /dev/null +++ b/en/help/ah_accelerometer.md @@ -0,0 +1,4 @@ +### Display AutoRotate + +Whether rotating the device also rotates the screen (between portrait +and landscape). diff --git a/en/help/ah_airplane_mode.md b/en/help/ah_airplane_mode.md new file mode 100644 index 0000000..7d02171 --- /dev/null +++ b/en/help/ah_airplane_mode.md @@ -0,0 +1,6 @@ +### Airplane Mode + +Whether airplane mode is enabled (all wireless devices off) or enabled +(each wireless device is enabled if it is individually enabled).\ +\ +See also: action Airplane Radios. diff --git a/en/help/ah_airplane_radios.md b/en/help/ah_airplane_radios.md new file mode 100644 index 0000000..5deff53 --- /dev/null +++ b/en/help/ah_airplane_radios.md @@ -0,0 +1,13 @@ +### Airplane Radios + +Specify which radios should be **disabled** when entering Airplane +Mode.\ +\ +This can be useful for e.g. turning off the phone radio when it is not +required; first set Airplane Radios to only Phone, then use the Airplane +Mode action to enter Airplane Mode.\ +\ +Important: for some radios the setting may not take effect until the +device has been restarted.\ +\ +See also: variable %AIRR. diff --git a/en/help/ah_alarm_volume.md b/en/help/ah_alarm_volume.md new file mode 100644 index 0000000..cbae2f5 --- /dev/null +++ b/en/help/ah_alarm_volume.md @@ -0,0 +1,9 @@ +### Alarm Volume + +Alarm volume level.\ +\ +Setting to 0 will mute alarms.\ +\ +When Display is enabled, a popup will show the new level.\ +\ +When Sound is enabled, a tone will sound at the new volume level. diff --git a/en/help/ah_anchor.md b/en/help/ah_anchor.md new file mode 100644 index 0000000..8c6ea44 --- /dev/null +++ b/en/help/ah_anchor.md @@ -0,0 +1,7 @@ +### Anchor + +Provides a fixed, named point in a task.\ +\ +This is most useful as the top action in a loop with a Goto action at +the end; it allows new actions to easily be inserted at the top of the +loop (under the Anchor). diff --git a/en/help/ah_android_media_control.md b/en/help/ah_android_media_control.md new file mode 100644 index 0000000..3a08881 --- /dev/null +++ b/en/help/ah_android_media_control.md @@ -0,0 +1,11 @@ +### Media Control + +Send a command to a media playback application.\ +\ +A target app need only be specified when multiple apps are interpreting +the command.\ +\ +Note: the Toggle Pause function may not work unless playback has already +been started manually.\ +\ +Note: Tasker\'s Music XXX actions are not controlled by this action. diff --git a/en/help/ah_android_notifier.md b/en/help/ah_android_notifier.md new file mode 100644 index 0000000..308354c --- /dev/null +++ b/en/help/ah_android_notifier.md @@ -0,0 +1,8 @@ +### Android Notifier + +Android Notifier is a service for contacting your desktop via your +mobile phone.\ +\ +Info:\ +\ +http://code.google.com/p/android-notifier/ diff --git a/en/help/ah_array_clear.md b/en/help/ah_array_clear.md new file mode 100644 index 0000000..519b784 --- /dev/null +++ b/en/help/ah_array_clear.md @@ -0,0 +1,3 @@ +### Array Clear + +Remove all the elements of an array variable. diff --git a/en/help/ah_array_pop.md b/en/help/ah_array_pop.md new file mode 100644 index 0000000..decbd26 --- /dev/null +++ b/en/help/ah_array_pop.md @@ -0,0 +1,13 @@ +### Array Pop + +Remove an element from an array and shuffle all the higher array +elements down to fill the gap.\ +If Position is higher than the last index in the array, the last element +is removed.\ +\ +If To Var is set, the \'popped\' value is assigned to that variable.\ +\ +Note: a variable clear or set broadcast is only done for the specified +array index.\ +\ +See Also: the Variables section of the Userguide. diff --git a/en/help/ah_array_process.md b/en/help/ah_array_process.md new file mode 100644 index 0000000..11fcab2 --- /dev/null +++ b/en/help/ah_array_process.md @@ -0,0 +1,13 @@ +### Array Process + +Perform an operation on the elements of an array as a group.\ +\ +Rotate shifts all the elements to left or right, and puts the end one +back at the other side.\ +\ +Squash removes array indices for which no value is assigned e.g. if +%var1=one and %var3=three, squash will result in %var1=one and +%var2=three.\ +\ +The numeric sorts use the first number they find in each entry e.g. a3c, +b5, 1x becomes 1x, a3c, b5. diff --git a/en/help/ah_array_push.md b/en/help/ah_array_push.md new file mode 100644 index 0000000..5cfeb2c --- /dev/null +++ b/en/help/ah_array_push.md @@ -0,0 +1,15 @@ +### Array Push + +Add a new element to a variable array, pushing existing elements upwards +to make space if necessary.\ +\ +If Position is higher than the last index in the array, the new element +is added at the end of the array.\ +\ +If Fill Spaces is specified, higher elements will only be pushed up +until a non-defined element is found (which will be filled).\ +\ +Note: a variable set broadcast is only done for the specified array +element even if the action also causes changes in other elements.\ +\ +See Also: the Variables section of the Userguide. diff --git a/en/help/ah_array_set.md b/en/help/ah_array_set.md new file mode 100644 index 0000000..c946aef --- /dev/null +++ b/en/help/ah_array_set.md @@ -0,0 +1,11 @@ +### Array Set + +Set the values of an array from a preset list of Values.\ +\ +The values are split by Splitter, or whitespace if none is specified, +and each value is then placed in a successive array index of the new +array.\ +\ +If the array already existed, it is first cleared.\ +\ +See Also: action Variable Split. diff --git a/en/help/ah_ask_permissions.md b/en/help/ah_ask_permissions.md new file mode 100644 index 0000000..e2c8bbc --- /dev/null +++ b/en/help/ah_ask_permissions.md @@ -0,0 +1,11 @@ +### Ask Permissions + +Bring up a permission granting dialog asking for the permissions you +specify. + +Some special permissions like **Writing Secure Settings** or **Drawing +over other apps** bring up their own special dialogs. + +This is meant to be used when sharing Tasks/Apps and they need special +permissions to run. You can use this action to ask for permissions prior +to using actions that need them. diff --git a/en/help/ah_astrid.md b/en/help/ah_astrid.md new file mode 100644 index 0000000..2bdb342 --- /dev/null +++ b/en/help/ah_astrid.md @@ -0,0 +1,5 @@ +### Astrid + +Info:\ +\ +http://weloveastrid.com diff --git a/en/help/ah_authentication_dialog.md b/en/help/ah_authentication_dialog.md new file mode 100644 index 0000000..f3c6462 --- /dev/null +++ b/en/help/ah_authentication_dialog.md @@ -0,0 +1,36 @@ +Authentication Dialog +--------------------- + +Show a dialog that allows the current user to authenticate. This can be +used to allow for secure execution of certain tasks. + +**Read Result To** will set the authentication result into both a +variable and an array with that variable name: + +- **Variable**: Will contain the last authentication result. Can be + **success** or whatever error there was in case of an error. You + will probably use this most of the time. +- **Array**: For advanced uses. Will contain all authentication + results that resulted from the dialog, ie, if your finger wasn\'t + recognized first but then it was you\'ll have an array with 2 items: + an error and success + +If you want to handle errors use the **Continue Task After Error** +option and check the result variable. + +### Credentials + +Works on all Android versions. + +Shows the standard Android authentication dialog and asks for whatever +credentials you currently have setup on your device. + +It doesn\'t work if you don\'t have any credentials setup at the moment +of running. + +### Biometric + +Only works for Android 9 and above + +If you fail to authenticate 5 times in a row Android will block access +to this for 30 seconds diff --git a/en/help/ah_auto_sync.md b/en/help/ah_auto_sync.md new file mode 100644 index 0000000..d83f1d6 --- /dev/null +++ b/en/help/ah_auto_sync.md @@ -0,0 +1,7 @@ +### Auto-Sync + +Whether auto-syncing of data is enabled.\ +\ +Note: the Android power manager widget does not update correctly after +this action. Also: actual sync will only take place if the Android +Background Data setting is enabled. diff --git a/en/help/ah_beep.md b/en/help/ah_beep.md new file mode 100644 index 0000000..4727827 --- /dev/null +++ b/en/help/ah_beep.md @@ -0,0 +1,9 @@ +### Beep + +Generate a fixed-frequency audio tone.\ +\ +Amplitude is the percentage of maximum amplitude. The system volume +setting for the selected output stream will also affect the perceived +volume.\ +\ +Note: Frequency is not on a Hertz scale. diff --git a/en/help/ah_beyondpod.md b/en/help/ah_beyondpod.md new file mode 100644 index 0000000..fc9e11f --- /dev/null +++ b/en/help/ah_beyondpod.md @@ -0,0 +1,5 @@ +### BeyondPod + +Info:\ +\ +http://beyondpod.mobi diff --git a/en/help/ah_block_phonecalls.md b/en/help/ah_block_phonecalls.md new file mode 100644 index 0000000..79554f2 --- /dev/null +++ b/en/help/ah_block_phonecalls.md @@ -0,0 +1,21 @@ +### Call Block + +Block outgoing calls to the specified matched number(s).\ +\ +If no Number is specified, all calls will be blocked.\ +\ +If Info is checked, all diversions and blocks will be displayed after +the action.\ +\ +To stop blocking, use Call Revert.\ +\ +Note: you can\'t block \*and\* divert a particular pattern.\ +\ +Matching occurs in the same way as for event contexts, see the Event +Edit Activity help page.\ +\ +Examples:\ +\ +*0193\** - any number starting with **0193**\ +\ +*12345/56789* - either of the numbers **12345** or **56789** diff --git a/en/help/ah_bluetooth_name.md b/en/help/ah_bluetooth_name.md new file mode 100644 index 0000000..5cc4ad2 --- /dev/null +++ b/en/help/ah_bluetooth_name.md @@ -0,0 +1,4 @@ +### Bluetooth ID + +Sets the name of the local bluetooth device (the one seen by other +devices). diff --git a/en/help/ah_bluetooth_sco.md b/en/help/ah_bluetooth_sco.md new file mode 100644 index 0000000..af150fd --- /dev/null +++ b/en/help/ah_bluetooth_sco.md @@ -0,0 +1,6 @@ +### Bluetooth Voice + +Switch to or from using a Bluetooth headset for voice communications.\ +\ +Probably only works in-call, and may not be reflected visually by the +Phone application. diff --git a/en/help/ah_bluetooth_status.md b/en/help/ah_bluetooth_status.md new file mode 100644 index 0000000..ba9c063 --- /dev/null +++ b/en/help/ah_bluetooth_status.md @@ -0,0 +1,8 @@ +### Bluetooth + +Whether the Bluetooth radio is enabled or disabled.\ +\ +This action is ignored when Airplane Mode is on.\ +\ +Note: when enabling, it will probably be some seconds before the +Bluetooth service is actually usable. diff --git a/en/help/ah_browse_files.md b/en/help/ah_browse_files.md new file mode 100644 index 0000000..d54e441 --- /dev/null +++ b/en/help/ah_browse_files.md @@ -0,0 +1,12 @@ +### Browse Files + +Runs File Magic, the Tasker-integrated file manager available +separately.\ +\ +If Dir is specified, the File Magic starts in that directory.\ +\ +If Match is specified, only files containing that sequence are shown +(e.g. .jpg)\ +\ +If Show Hidden is selected, files starting with \'.\' are also shown +(this option overrides File Magic\'s user preference). diff --git a/en/help/ah_bt_voice_volume.md b/en/help/ah_bt_voice_volume.md new file mode 100644 index 0000000..442a4fc --- /dev/null +++ b/en/help/ah_bt_voice_volume.md @@ -0,0 +1,7 @@ +### BT Voice Volume + +In-call volume when using bluetooth.\ +\ +When Display is enabled, a popup will show the new level.\ +\ +When Sound is enabled, a tone will sound at the new volume level. diff --git a/en/help/ah_button.md b/en/help/ah_button.md new file mode 100644 index 0000000..febcb39 --- /dev/null +++ b/en/help/ah_button.md @@ -0,0 +1,8 @@ +### Button + +Simulate pressing of a hardware button.\ +\ +Only available on a rooted device.\ +\ +USB Debugging probably needs to be enabled in Android\'s Developer +Settings. diff --git a/en/help/ah_calendar_insert.md b/en/help/ah_calendar_insert.md new file mode 100644 index 0000000..5929887 --- /dev/null +++ b/en/help/ah_calendar_insert.md @@ -0,0 +1,15 @@ +### Calendar Insert + +Insert an entry into the specified calendar.\ +\ +In / For: the number of minutes from now at which the calendar entry +should start. Optionally, For how many minutes the calendar entry should +last.\ +\ +The default for In / For is 0 / 0.\ +\ +Available: if not clicked, the calendar entry is marked as \'Busy\' (see +Menu / Show Extra Options in the Calendar app).\ +\ +Tip: if you want to use variables with In / For, be sure to leave spaces +otherwise the variables won\'t be recognized. diff --git a/en/help/ah_call_log.md b/en/help/ah_call_log.md new file mode 100644 index 0000000..9ba929b --- /dev/null +++ b/en/help/ah_call_log.md @@ -0,0 +1,3 @@ +### Call Log + +Show the Call Log tab of the standard Android contacts application. diff --git a/en/help/ah_call_volume.md b/en/help/ah_call_volume.md new file mode 100644 index 0000000..5ca0930 --- /dev/null +++ b/en/help/ah_call_volume.md @@ -0,0 +1,9 @@ +### In-Call Volume + +Volume level of speech during calls.\ +\ +Setting to 0 will make phone calls difficult.\ +\ +When Display is enabled, a popup will show the new level.\ +\ +When Sound is enabled, a tone will sound at the new volume level. diff --git a/en/help/ah_cancel_alarm.md b/en/help/ah_cancel_alarm.md new file mode 100644 index 0000000..cfb9066 --- /dev/null +++ b/en/help/ah_cancel_alarm.md @@ -0,0 +1,14 @@ +### Cancel Alarm + +Cancel a currently active or future system alarm.\ +\ +If there are two or more matching alarms, or on some devices always, +Android will show a UI allowing the user to select the desired alarm. +Therefore, for best results when automating, it\'s recommended to give +each alarm a unique label and then use that for cancellation.\ +\ +If the specified alarm is a repeating alarm, then only the next instance +is cancelled (the alarm remains enabled)\ +\ +Some modes are poorly implemented by many Android devices. For instance, +snooze time may be ignored. diff --git a/en/help/ah_cancel_notification.md b/en/help/ah_cancel_notification.md new file mode 100644 index 0000000..f63dcfe --- /dev/null +++ b/en/help/ah_cancel_notification.md @@ -0,0 +1,15 @@ +### Notify Cancel + +Cancel a notification (created by Tasker) currently in the System +Notification bar.\ +\ +Title is the title of the notification to cancel. If Title is not +specified, all notifications will be cancelled (including \'permanent\') +ones.\ +\ +If more than one notification with the specified Title is currently +being displayed, only the last one displayed will be cancelled, the +otherwise will need to be cancelled manually.\ +\ +Warn Not Exist: if set, a warning will be flashed if there is no +matching notification. diff --git a/en/help/ah_car_mode.md b/en/help/ah_car_mode.md new file mode 100644 index 0000000..5f93e28 --- /dev/null +++ b/en/help/ah_car_mode.md @@ -0,0 +1,8 @@ +### Car Mode + +Enable or disable Android\'s Car Mode.\ +\ +If Go Home is checked, the relevant home screen will be launched +dependent on whether Car Mode is being entered or exited.\ +\ +Requires Android 2.2+ diff --git a/en/help/ah_change_icon_set.md b/en/help/ah_change_icon_set.md new file mode 100644 index 0000000..736749d --- /dev/null +++ b/en/help/ah_change_icon_set.md @@ -0,0 +1,15 @@ +### Change Icon Set + +Change Widget Task icons in the home screen.\ +\ +Only Widgets that have a downloaded icon can have it switched to a new +set.\ +\ +The New field specifies the new icon set.\ +\ +If no Old set is specified, all icons are changed to the New set, +otherwise only icons that currently have an icon of the Old set are +changed.\ +\ +Warning: for Tasker icon sets, each icon is guaranteed to exist in each +set. For user-installed icons, that may not be the case. diff --git a/en/help/ah_change_widget_icon.md b/en/help/ah_change_widget_icon.md new file mode 100644 index 0000000..ebd4f01 --- /dev/null +++ b/en/help/ah_change_widget_icon.md @@ -0,0 +1,9 @@ +### Set Widget Icon + +Change the label of the specified (existing) Task Widget on the home +screen.\ +\ +Name is the name of the Task which the widget performs (which appears on +the homescreen, unless a label has been set with Set Widget Label.\ +\ +Icon is the new icon to set. diff --git a/en/help/ah_change_widget_text.md b/en/help/ah_change_widget_text.md new file mode 100644 index 0000000..d8e5a60 --- /dev/null +++ b/en/help/ah_change_widget_text.md @@ -0,0 +1,12 @@ +### Set Widget Label + +Change the icon of the specified (existing) Task Widget on the home +screen.\ +\ +Name is the name of the Task which the widget performs (set when it was +initially created and initially used as the label).\ +\ +Label is the new home screen label for the widget.\ +\ +Note: if you want to change the label several times, you refer to the +\*original\* Task name each time, which does not change. diff --git a/en/help/ah_clear_passphrase.md b/en/help/ah_clear_passphrase.md new file mode 100644 index 0000000..75d93cd --- /dev/null +++ b/en/help/ah_clear_passphrase.md @@ -0,0 +1,6 @@ +### Clear Key + +Clear an encryption key. Next time you try to encrypt or decrypt with +that key, you will be asked for the passphrase.\ +\ +See *Encryption* in the Userguide for details. diff --git a/en/help/ah_clear_variable.md b/en/help/ah_clear_variable.md new file mode 100644 index 0000000..894025e --- /dev/null +++ b/en/help/ah_clear_variable.md @@ -0,0 +1,8 @@ +### Variable Clear + +Remove the stored value for the user-variable Name.\ +\ +If no Name is specified, all user-variables are cleared.\ +\ +If Pattern Matching is specified, all variables which match the pattern +are cleared (see Pattern Matching in the Userguide). diff --git a/en/help/ah_close_system_dialogs.md b/en/help/ah_close_system_dialogs.md new file mode 100644 index 0000000..22d9396 --- /dev/null +++ b/en/help/ah_close_system_dialogs.md @@ -0,0 +1,6 @@ +### Close System Dialogs + +Close (some of the) system dialogs like Recent Apps or the +Long-Home-Key-Press dialog.\ +\ +Tip: you can detect some such dialogs opening with the New Window event. diff --git a/en/help/ah_contacts.md b/en/help/ah_contacts.md new file mode 100644 index 0000000..f62370e --- /dev/null +++ b/en/help/ah_contacts.md @@ -0,0 +1,7 @@ +### Contacts + +Show a selected list of contacts from the standard Android contacts +application.\ +\ +Note: to show all contacts, you can use the Apps/Load App action and +select the Contacts application. diff --git a/en/help/ah_convert_variable.md b/en/help/ah_convert_variable.md new file mode 100644 index 0000000..b2cda31 --- /dev/null +++ b/en/help/ah_convert_variable.md @@ -0,0 +1,23 @@ +### Variable Convert + +Convert the specified variable\'s value from one unit to another.\ +\ +If a variable is specified for Store Result In, the new value is stored +there and the original variable will not be changed.\ +\ +If the conversion fails, no values will be unchanged.\ +\ +Notes on particular conversions:\ +\ +Date Time to Seconds\ +\* date and time must be separated by whitespace e.g. 20110304 11.32\ +\* date can be in YYYYMMDD format or xx-yy-zz, in which case the +positions of day, month and year are determined by Android preferences\ +\* if time is ommitted it is assumed to be 00:00\ +\* time must be in 24hr format\ +\* individual components of date and time can also be separated by a +colon, slash etc.\ +\ +Bytes\ +\*Megabyte and Gigabyte conversions are human-readable rather than +precise. diff --git a/en/help/ah_copy_dir.md b/en/help/ah_copy_dir.md new file mode 100644 index 0000000..7288831 --- /dev/null +++ b/en/help/ah_copy_dir.md @@ -0,0 +1,6 @@ +### Copy Dir + +Recursively copy a directory to a new one.\ +\ +If To specifies an existing directory, the copy will be placed +**inside** it, otherwise the copy will have that name. diff --git a/en/help/ah_copy_file.md b/en/help/ah_copy_file.md new file mode 100644 index 0000000..1528d57 --- /dev/null +++ b/en/help/ah_copy_file.md @@ -0,0 +1,10 @@ +### Copy File + +Copy an SD card file to a new directory.\ +\ +If To specifies an existing file, it will be overwritten.\ +\ +The paths start in the root directory of the SD card.\ +\ +Root users: note that the \"Mount namespace separation\" option of +SuperSu can cause problems. diff --git a/en/help/ah_create_scene.md b/en/help/ah_create_scene.md new file mode 100644 index 0000000..7f9c06c --- /dev/null +++ b/en/help/ah_create_scene.md @@ -0,0 +1,8 @@ +### Create Scene + +Create a scene without displaying it.\ +\ +This might be useful if needs to be prepared in some way before +displaying.\ +\ +See also: Scenes in the Userguide. diff --git a/en/help/ah_crop_image.md b/en/help/ah_crop_image.md new file mode 100644 index 0000000..21f8890 --- /dev/null +++ b/en/help/ah_crop_image.md @@ -0,0 +1,8 @@ +### Crop Image + +Crop the image currently in the image store.\ +\ +The parameters specify what percentage of the image to remove from each +side of the image.\ +\ +See also: Load Image. diff --git a/en/help/ah_dailyroads.md b/en/help/ah_dailyroads.md new file mode 100644 index 0000000..524c97f --- /dev/null +++ b/en/help/ah_dailyroads.md @@ -0,0 +1,5 @@ +### DailyRoads Voyager + +Info:\ +\ +http://www.dailyroads.com/voyager.php diff --git a/en/help/ah_data_backup.md b/en/help/ah_data_backup.md new file mode 100644 index 0000000..ac7b57d --- /dev/null +++ b/en/help/ah_data_backup.md @@ -0,0 +1,29 @@ +### Data Backup + +Backup your Tasker data to a local file and optionally to Google Drive. + +::: {.inputs} +::: {.input} +::: {.title} +Path +::: + +::: {.text} +Path to a local xml file to store your backup in. +::: +::: + +::: {.input} +::: {.title} +Google Drive Account +::: + +::: {.text} +If you set this account, a file with the same name as the local file +above will be created in your backup folder on Google Drive. +::: +::: +::: + +**Note**: For security reasons this action can\'t be used on App Factory +generated apps. diff --git a/en/help/ah_data_sms.md b/en/help/ah_data_sms.md new file mode 100644 index 0000000..f8b9576 --- /dev/null +++ b/en/help/ah_data_sms.md @@ -0,0 +1,12 @@ +### Send Data SMS + +Send a binary data SMS without user interaction. The maximum length is +133 bytes.\ +\ +Multiple numbers can be specified by comma-separating them.\ +\ +The Data field must consist of a Base 64 encoded string.\ +\ +A Tasker variable contents can be encoded to Base 64 with the Variable +Convert action, or binary data loaded from a file with the File / Read +Binary action. diff --git a/en/help/ah_dec_variable.md b/en/help/ah_dec_variable.md new file mode 100644 index 0000000..8f03684 --- /dev/null +++ b/en/help/ah_dec_variable.md @@ -0,0 +1,19 @@ +### Variable Subtract + +Decrease the value of the variable Name.\ +\ +The value is decreased by the integer By.\ +\ +If the variable does not contain a numeric value (e.g. 3) this action +has no effect and a warning will be flashed.\ +\ +If the variable does not exist, it will first be created with a value of +0.\ +\ +If the Wrap Around parameter is set and the result is below zero, it +will wrap back to the Wrap Around value.\ +\ +See the section on Conditions and Loops in the Userguide for more +information.\ +\ +Use action Variable Set for non-integer subtraction. diff --git a/en/help/ah_decrypt_file.md b/en/help/ah_decrypt_file.md new file mode 100644 index 0000000..449e60c --- /dev/null +++ b/en/help/ah_decrypt_file.md @@ -0,0 +1,17 @@ +### Decrypt File + +Decrypt the specified SD card file which was previously encrypted with +Tasker\'s *Encrypt File* action.\ +\ +The path starts in the root directory of the SD card e.g. secret.txt, +secret/recording.mp3.\ +\ +Key Name is the name of the encryption key to use.\ +\ +The key is not deleted unless Clear Key is set, since you will usually +want to use the same key to encrypt the file again at some point.\ +\ +There must be space left on the SD card at least equal to the size of +the file before starting decryption.\ +\ +See *Encryption* in the Userguide for details. diff --git a/en/help/ah_delete_dir.md b/en/help/ah_delete_dir.md new file mode 100644 index 0000000..0ee6796 --- /dev/null +++ b/en/help/ah_delete_dir.md @@ -0,0 +1,9 @@ +### Delete Directory + +Delete an SD card directory.\ +\ +The path starts in the root directory of the SD card.\ +\ +If it is not empty, it will not be deleted unless you specify Recurse. +\*Warning\*: you can delete the whole SD card contents if you are not +careful with this option. diff --git a/en/help/ah_delete_file.md b/en/help/ah_delete_file.md new file mode 100644 index 0000000..c4a267e --- /dev/null +++ b/en/help/ah_delete_file.md @@ -0,0 +1,15 @@ +### Delete File + +Delete an SD card file.\ +\ +The path starts in the root directory of the SD card.\ +\ +If Shred Level is more than 0, the contents of the file are overwritten +with random bytes the specified number of times before it is deleted.\ +\ +The intention is to make it (much) harder to recover the contents than +if the file was simply deleted.\ +\ +Security note: shredding will only provide basic protection on +\'journalling\' filesystems, but most external storage uses FAT32 at the +time of writing. diff --git a/en/help/ah_deprecated.md b/en/help/ah_deprecated.md new file mode 100644 index 0000000..f949f0a --- /dev/null +++ b/en/help/ah_deprecated.md @@ -0,0 +1,3 @@ +### Deprecated + +Please see Menu / Info / Release Notes for more information. diff --git a/en/help/ah_destroy_scene.md b/en/help/ah_destroy_scene.md new file mode 100644 index 0000000..6a78388 --- /dev/null +++ b/en/help/ah_destroy_scene.md @@ -0,0 +1,3 @@ +### Destroy Scene + +Destroy a previously created scene, hiding it first if necessary. diff --git a/en/help/ah_dialog_battery_info_settings.md b/en/help/ah_dialog_battery_info_settings.md new file mode 100644 index 0000000..49d381b --- /dev/null +++ b/en/help/ah_dialog_battery_info_settings.md @@ -0,0 +1,3 @@ +### Battery Info + +This setting screen is not supported by Samsung ROMs diff --git a/en/help/ah_disable_tasker.md b/en/help/ah_disable_tasker.md new file mode 100644 index 0000000..37cd622 --- /dev/null +++ b/en/help/ah_disable_tasker.md @@ -0,0 +1,12 @@ +### Disable + +Turn off Tasker's monitor and stop servicing Perform Task actions.\ +\ +Perform Task will fail with the message \"Tasker is disabled\" until +three-dots/Enable Tasker is selected from the Profiles, Tasks, Scenes, +or Vars screen. + +Disabling the Tasker monitor is sometimes required in Kids created in +Tasker App Factory to remove them from background processing. If the +Disable action is executed in a Kid the Kid can then be run again +without reenabling Tasker's monitor. diff --git a/en/help/ah_display_density.md b/en/help/ah_display_density.md new file mode 100644 index 0000000..cb31ba7 --- /dev/null +++ b/en/help/ah_display_density.md @@ -0,0 +1,3 @@ +### Display Size + +Makes items on your screen appear smaller or larger diff --git a/en/help/ah_divert_phonecalls.md b/en/help/ah_divert_phonecalls.md new file mode 100644 index 0000000..7c8ecc5 --- /dev/null +++ b/en/help/ah_divert_phonecalls.md @@ -0,0 +1,17 @@ +### Call Divert + +Divert outgoing calls from the specified number (pattern), to the +specified (full) phone number.\ +\ +From: the number (pattern) to divert. If any part of the outgoing number +matches From the diversion will take place. If no From is specified, all +calls will be diverted.\ +\ +To: the number which will be called instead.\ +\ +If Info is checked, all diversions and blocks will be displayed after +the action.\ +\ +To stop diverting, use Call Revert.\ +\ +Note: you can\'t block \*and\* divert a particular pattern. diff --git a/en/help/ah_dpad.md b/en/help/ah_dpad.md new file mode 100644 index 0000000..4fe43ee --- /dev/null +++ b/en/help/ah_dpad.md @@ -0,0 +1,9 @@ +### Dpad + +Simulate use of the Dpad or trackball. Useful for moving around and +clicking controls in an application.\ +\ +Only available on a rooted device.\ +\ +USB Debugging probably needs to be enabled in Android\'s Developer +Settings. diff --git a/en/help/ah_dtmf_volume.md b/en/help/ah_dtmf_volume.md new file mode 100644 index 0000000..37983ea --- /dev/null +++ b/en/help/ah_dtmf_volume.md @@ -0,0 +1,7 @@ +### DTMF Volume + +The function is a bit of a mystery\...\ +\ +When Display is enabled, a popup will show the new level.\ +\ +When Sound is enabled, a tone will sound at the new volume level. diff --git a/en/help/ah_duetoday.md b/en/help/ah_duetoday.md new file mode 100644 index 0000000..29d9b17 --- /dev/null +++ b/en/help/ah_duetoday.md @@ -0,0 +1,5 @@ +### Due Today + +Info:\ +\ +http://www.lakeridgesoftware.com/products/android/DueToday/ diff --git a/en/help/ah_dump_grant.md b/en/help/ah_dump_grant.md new file mode 100644 index 0000000..6b3f048 --- /dev/null +++ b/en/help/ah_dump_grant.md @@ -0,0 +1,38 @@ +#### [Check running services]{.name} Permission + +To use this, Tasker needs to be granted permission to [check what +services are running]{.name} on your device + +1. **Enable Developer Mode**: Go to Android Settings -\> About Phone + and look for the **Build Number** option. Touch it multiple times + until developer mode is enabled. +2. **Enable USB Debugging**: Go to Android Settings -\> and look for + the **Developer Options** option. In there, enable the **USB + debugging** option. +3. **Install ADB on your PC**: Check + [here](https://www.xda-developers.com/google-releases-separate-adb-and-fastboot-binary-downloads/) + for a quick way to do it. +4. **Connect device to PC**: Connect your device to a PC and look on + your phone. A prompt should show up asking you to allow your phone + to be debugged by your PC. Accept this. +5. Open the command prompt from the file folder that contains the + extracted downloads. To do this, press the windows key and type + **cmd**. When the prompt opens, type **cd** followed by folder your + downloaded ADB to. +6. **Grant permission**: Open a command line a on your PC and write + + ``` {.small} + adb shell pm grant net.dinglisch.android.taskerm android.permission.DUMP + ``` + + If you\'re on a mac write + + ``` {.small} + ./adb shell pm grant net.dinglisch.android.taskerm android.permission.DUMP + ``` + +#### Notes: + +- On MIUI devices you may have to open developer options and enable + the **USB debugging (Security Settings)** setting to be able to run + the above command. diff --git a/en/help/ah_edit_scene.md b/en/help/ah_edit_scene.md new file mode 100644 index 0000000..8b6f73e --- /dev/null +++ b/en/help/ah_edit_scene.md @@ -0,0 +1,7 @@ +### Edit Scene + +Open the Scene Edit screen in the Tasker UI to edit the named scene. +Optionally, the specified element will be edited immediately.\ +\ +This action will fail if the Tasker UI is already open or the given +scene is normally locked in the UI. diff --git a/en/help/ah_edit_task.md b/en/help/ah_edit_task.md new file mode 100644 index 0000000..4801fdb --- /dev/null +++ b/en/help/ah_edit_task.md @@ -0,0 +1,8 @@ +### Edit Task + +Open the Task Edit screen in the Tasker UI to edit the named task. +Optionally, the specified action (being a number, partial label, action +name or parameter match) will be edited immediately.\ +\ +This action will fail if the Tasker UI is already open or the given task +is normally locked in the UI. diff --git a/en/help/ah_else.md b/en/help/ah_else.md new file mode 100644 index 0000000..123a684 --- /dev/null +++ b/en/help/ah_else.md @@ -0,0 +1,6 @@ +### Else + +Used after an If action to specify actions which should take place if +the If condition didn\'t match.\ +\ +See Flow Control in the Userguide for more info. diff --git a/en/help/ah_email_compose.md b/en/help/ah_email_compose.md new file mode 100644 index 0000000..42562fe --- /dev/null +++ b/en/help/ah_email_compose.md @@ -0,0 +1,6 @@ +### Compose Email + +Launch an application to compose an email from optional predefined +elements.\ +\ +Recipient(s) is a comma-separated list of receivers of the email. diff --git a/en/help/ah_encrypt_file.md b/en/help/ah_encrypt_file.md new file mode 100644 index 0000000..c9fe968 --- /dev/null +++ b/en/help/ah_encrypt_file.md @@ -0,0 +1,19 @@ +### Encrypt File + +Encrypt the specified SD card file.\ +\ +The path starts in the root directory of the SD card e.g. secret.txt, +secret/recording.mp3\ +\ +Key Name is the name of the encryption key to use.\ +\ +Usually the key is deleted after encryption, set Leave Key if you have +more files to encrypt.\ +\ +There must be space left on the SD card at least equal to the size of +the file before starting encryption.\ +\ +See *Encryption* in the Userguide for details.\ +\ +You can also access Tasker\'s encryption features via File Magic, a +Tasker-integrated file manager. diff --git a/en/help/ah_enter_passphrase.md b/en/help/ah_enter_passphrase.md new file mode 100644 index 0000000..79da646 --- /dev/null +++ b/en/help/ah_enter_passphrase.md @@ -0,0 +1,8 @@ +### Enter Key + +Enter an encryption key in preparation for encrypting at a later time.\ +\ +If Confirm is set, the key will be requested twice in order to be sure +it was entered correctly.\ +\ +See *Encryption* in the Userguide for details. diff --git a/en/help/ah_filter_image.md b/en/help/ah_filter_image.md new file mode 100644 index 0000000..67f6883 --- /dev/null +++ b/en/help/ah_filter_image.md @@ -0,0 +1,5 @@ +### Filter Image + +Apply a filter to the image currently in the image store.\ +\ +See also: Load Image. diff --git a/en/help/ah_flash.md b/en/help/ah_flash.md new file mode 100644 index 0000000..1dc60ed --- /dev/null +++ b/en/help/ah_flash.md @@ -0,0 +1,11 @@ +### Flash + +Flash a message up.\ +\ +If Long is selected, the message will flash up for longer.\ +\ +A Flash is less intrusive than a popup: it is still possible to interact +with the application below while the message is showing.\ +\ +On some devices, disabling Notifications for Tasker in Android settings +will also prevent flash messages. diff --git a/en/help/ah_flip_image.md b/en/help/ah_flip_image.md new file mode 100644 index 0000000..b5dd034 --- /dev/null +++ b/en/help/ah_flip_image.md @@ -0,0 +1,5 @@ +### Flip Image + +Flip the image currently in the image store.\ +\ +See also: Load Image. diff --git a/en/help/ah_for.md b/en/help/ah_for.md new file mode 100644 index 0000000..8a2154b --- /dev/null +++ b/en/help/ah_for.md @@ -0,0 +1,18 @@ +### For + +Do a set of actions to process each of a set of values.\ +\ +Values is a comma-separated list of items to iterate through\ +\ +A For loop should be ended with a matching End For action (if one is not +present, one is automatically added to the end of the task)\ +\ +Example Items:\ +\ +apple, 0, 2:4, 3:9:3, %ARR(1:2), pear\ +\ +This would set Variable one at a time to:\ +\ +apple, 0, 2, 3, 4, 3, 6, 9, %ARR1, %ARR2, pear\ +\ +See Flow Control in the Userguide for more info. diff --git a/en/help/ah_force_rotation.md b/en/help/ah_force_rotation.md new file mode 100644 index 0000000..aaa2d52 --- /dev/null +++ b/en/help/ah_force_rotation.md @@ -0,0 +1,12 @@ +### Force Rotation + +Force your display\'s rotation independently of your device\'s +orientation. + +#### Alternative Method + +If the action works for your needs without this option enabled, it\'s +best to leave it off. + +Only enable the option if on some of your apps the rotation is not +respected. diff --git a/en/help/ah_gentlealarm.md b/en/help/ah_gentlealarm.md new file mode 100644 index 0000000..4afd082 --- /dev/null +++ b/en/help/ah_gentlealarm.md @@ -0,0 +1,6 @@ +### Gentle Alarm + +Enable/Disable a Gentle Alarm alarm, or all alarms (Power) if no Name is +specified.\ +\ +Requires v3.1.0+ diff --git a/en/help/ah_get_fix.md b/en/help/ah_get_fix.md new file mode 100644 index 0000000..9546325 --- /dev/null +++ b/en/help/ah_get_fix.md @@ -0,0 +1,23 @@ +### Get Location + +Get a location fix.\ +\ +GPS: a value will be set when the accuracy stops improving. \'Use GPS +Satellites\' must be enabled in Android Location Settings.\ +\ +Net: a value will returned upon the first fix.\'Use Wireless Networks\' +must be enabled in Android Location Settings.\ +\ +Continue Task Immediately: move on to the next action in the task as +soon as the fixing has started.\ +\ +Keep Tracking: don\'t stop tracking the location source(s) when a value +is returned This will use more power but enables faster fixes after the +first one. When using this option, tracking can be stopped by the action +Stop Location or doing Get Location without the option checked.\ +\ +It will stop automatically if at any time no tasks are left to execute +or the Get Location times out.\ +\ +Note: the fix data are stored in the relevant %LOC variables, see the +Variables section of the userguide. diff --git a/en/help/ah_get_voice.md b/en/help/ah_get_voice.md new file mode 100644 index 0000000..c93ef1c --- /dev/null +++ b/en/help/ah_get_voice.md @@ -0,0 +1,21 @@ +### Get Voice + +Use a speech recognizer to convert speech into text.\ +\ +A comma-separated list of results are stored in the variable %VOICE. +It\'s possible there may be several results because of deficiencies in +the speech-recognition or e.g. environmental noise. To get e.g. the +first result, use the Variable Split action and then access %VOICE1.\ +\ +If the recognition fails or the specified Timeout is exceeded, %VOICE is +cleared (detect this condition with the Is Set operator).\ +\ +Language Model is a hint to the speech-recognizer for fine-tuning the +results.\ +\ +The default Android speech recognizer requires a network connection and +therefore has a high-latency. Other recognizers are available e.g. on +Play Store.\ +\ +Tip: it may be necessary to install the Google Search app in order to +access this action on some devices. diff --git a/en/help/ah_go_home.md b/en/help/ah_go_home.md new file mode 100644 index 0000000..779926e --- /dev/null +++ b/en/help/ah_go_home.md @@ -0,0 +1,12 @@ +### Go Home + +Go to the current system Home Screen.\ +\ +If the Page parameter is greater than 0, the home screen is requested to +start on that page.\ +\ +Some of the supporting home screens are Holo Launcher, Launcher Pro, +Nova Launcher and Car Dock Home (v3). If your Home Screen app doesn\'t +support it, you could contact the developer and refer them to Tasker\'s +developer page: tasker.dinglisch.net/developer.html for info on how to +include it. diff --git a/en/help/ah_google_drive_download.md b/en/help/ah_google_drive_download.md new file mode 100644 index 0000000..d41d2c7 --- /dev/null +++ b/en/help/ah_google_drive_download.md @@ -0,0 +1,68 @@ +### Google Drive Download + +Get a file or folder from Google Drive for a given account. + +While the content is downloading, a notification will be shown with the +progress. + +::: {.inputs} +::: {.input} +::: {.title} +Output Variables +::: + +::: {.text} +Array of local file paths corresponding to the files that were +downloaded +::: +::: + +::: {.input} +::: {.title} +Account +::: + +::: {.text} +The account you want to download the files from +::: +::: + +::: {.input} +::: {.title} +Type: File Id +::: + +::: {.text} +Download a file by its ID. You can get the Id after you upload the file, +or with a Google Drive List action (check the output variables) +::: +::: + +::: {.input} +::: {.title} +Type: Remote Path +::: + +::: {.text} +Download a file or folder by specifying its Google Drive path. If you +only specify the **Remote Folder** field, a folder will be downloaded. +If you also specify the **Remote File Name** field, only a single file +will be downloaded. +::: +::: + +::: {.input} +::: {.title} +Local Path +::: + +::: {.text} +Place to store the files/folders on local storage. If you are +downloading a folder, then this path must be a folder. If you are +downloading a file, this can be either a folder or file. +::: +::: +::: + +**Note**: For security reasons this action can\'t be used on App Factory +generated apps. diff --git a/en/help/ah_google_drive_list.md b/en/help/ah_google_drive_list.md new file mode 100644 index 0000000..b1c5629 --- /dev/null +++ b/en/help/ah_google_drive_list.md @@ -0,0 +1,54 @@ +### Google Drive List + +Get details about files and folders on your Google Drive. + +::: {.inputs} +::: {.input} +::: {.title} +Output Variables +::: + +::: {.text} +Arrays of details about your files and folders. Each position on each +array corresponds to one item. For example, position **1** on +**%gd\_id()** corresponds to position **1** on **%gd\_name**, etc. +::: +::: + +::: {.input} +::: {.title} +Account +::: + +::: {.text} +The account you want to list the files from +::: +::: + +::: {.input} +::: {.title} +Type: Remote Folder +::: + +::: {.text} +List files inside a folder on your Google Drive +::: +::: + +::: {.input} +::: {.title} +Type: Query +::: + +::: {.text} +List the files using a custom query. For example, you can use **name +contains \'My doc\'** to search for files that contain the words \'My +doc\' in their name. Check +[here](https://developers.google.com/drive/api/v3/search-parameters) for +complete documentation. +::: +::: +::: + +**Note**: For security reasons this action can\'t be used on App Factory +generated apps. diff --git a/en/help/ah_google_drive_sign_in.md b/en/help/ah_google_drive_sign_in.md new file mode 100644 index 0000000..664b3eb --- /dev/null +++ b/en/help/ah_google_drive_sign_in.md @@ -0,0 +1,15 @@ +### Google Drive Sign In + +Select an account to use with Google Drive. + +If the account hasn\'t give Tasker permission to access Google Drive +yet, the appropriate permission screen will be shown. + +The **%gd\_account** variable will be created with the selected account. + +If **Full Access** is selected, Tasker will ask permission to access the +user\'s full list of Google Drive files and folders. Otherwise only +access to files and folders created by Tasker itself will be asked for. + +**Note**: For security reasons this action can\'t be used on App Factory +generated apps. diff --git a/en/help/ah_google_drive_trash.md b/en/help/ah_google_drive_trash.md new file mode 100644 index 0000000..88d8c04 --- /dev/null +++ b/en/help/ah_google_drive_trash.md @@ -0,0 +1,52 @@ +### Google Drive Trash + +Put a file or folder from Google Drive into or out of Trash. + +::: {.inputs} +::: {.input} +::: {.title} +Output Variables +::: + +::: {.text} +Details about the trashed/untrashed file or folder +::: +::: + +::: {.input} +::: {.title} +Account +::: + +::: {.text} +The account you want to the files with +::: +::: + +::: {.input} +::: {.title} +Type: File Id +::: + +::: {.text} +Trash a file by its ID. You can get the Id after you upload the file, or +with a Google Drive List action (check the output variables) +::: +::: + +::: {.input} +::: {.title} +Type: Remote Path +::: + +::: {.text} +Trash a file or folder by specifying its Google Drive path. If you only +specify the **Remote Folder** field, a folder and its contents will be +trashed. If you also specify the **Remote File Name** field, only a +single file will be trashed. +::: +::: +::: + +**Note**: For security reasons this action can\'t be used on App Factory +generated apps. diff --git a/en/help/ah_google_drive_upload_file.md b/en/help/ah_google_drive_upload_file.md new file mode 100644 index 0000000..710949e --- /dev/null +++ b/en/help/ah_google_drive_upload_file.md @@ -0,0 +1,103 @@ +### Google Drive Upload + +Send a file or folder to Google Drive for a given account. If uploading +a folder, all files in sub-folders will also be uploaded recursively. + +While the content is uploading, a notification will be shown with the +progress. + +::: {.inputs} +::: {.input} +::: {.title} +Output Variables +::: + +::: {.text} +This action will generate several local variables related to the +uploaded files/folder, including their web url. If uploading multiple +files or folder, array variables will be generated. +::: +::: + +::: {.input} +::: {.title} +Account +::: + +::: {.text} +The account you want to upload the file/folder to +::: +::: + +::: {.input} +::: {.title} +Data/File +::: + +::: {.text} +If it\'s a valid file/folder path, the file/folder will be uploaded. If +not, the text you provide will uploaded as the file\'s content +::: +::: + +::: {.input} +::: {.title} +Remote Name +::: + +::: {.text} +The file name on Google Drive where you want to upload the content to. +Ignored if uploading a folder. If not set, file name will be the same as +the local file name. +::: +::: + +::: {.input} +::: {.title} +Remote Folder +::: + +::: {.text} +Folder path on Google Drive. If left empty, file/folder will be uploaded +to the root folder +::: +::: + +::: {.input} +::: {.title} +Content Description +::: + +::: {.text} +Description for the file that shows up on Google Drive. Will also be +used in the progress notification\'s text +::: +::: + +::: {.input} +::: {.title} +Overwrite If Exists +::: + +::: {.text} +Will overwrite the Google Drive files if they already exists. If not +enabled and a file with the same name exists, a file with the same name +will be created, so you\'ll end up with multiple files with the exact +same name. +::: +::: + +::: {.input} +::: {.title} +Publicly Share File +::: + +::: {.text} +Will create a share link for the files and anyone with the link will be +able to access it. +::: +::: +::: + +**Note**: For security reasons this action can\'t be used on App Factory +generated apps. diff --git a/en/help/ah_goto.md b/en/help/ah_goto.md new file mode 100644 index 0000000..559ed69 --- /dev/null +++ b/en/help/ah_goto.md @@ -0,0 +1,16 @@ +### Goto + +Go to a different place in the current task.\ +\ +Number: specify an action number to jump to.\ +\ +Label: specify an action label to jump to. This is almost always better +than specifying a number.\ +\ +Top of Loop: jump to the first For action above the current action +(\'continue\')\ +\ +End of Loop: jump to the action **after** the next End For action +(\'break\')End of If: jump to the next End If action\ +\ +See the section on Flow Control in the Userguide for more info. diff --git a/en/help/ah_gps_status.md b/en/help/ah_gps_status.md new file mode 100644 index 0000000..a00e98f --- /dev/null +++ b/en/help/ah_gps_status.md @@ -0,0 +1,3 @@ +### GPS + +Whether the GPS receiver is enabled or not. diff --git a/en/help/ah_grab_media_button.md b/en/help/ah_grab_media_button.md new file mode 100644 index 0000000..b8399cc --- /dev/null +++ b/en/help/ah_grab_media_button.md @@ -0,0 +1,12 @@ +### Media Button Events + +After grabbing the Media Button via this action all presses will be sent +to Tasker.\ +\ +It only makes sense to do this if you configure Tasker to do something +with them (via state Media Button) or you want to block them from going +to another app.\ +\ +Note: any app can grab the Media Button at any time, Tasker cannot +\'keep hold\' of it. For example, the system media player seems to grab +the button at the start of each track. diff --git a/en/help/ah_gunzip_file.md b/en/help/ah_gunzip_file.md new file mode 100644 index 0000000..eda3be3 --- /dev/null +++ b/en/help/ah_gunzip_file.md @@ -0,0 +1,7 @@ +### GUnzip + +Decompress the specified gzip archive file on the SD card.\ +\ +You do not need to add .gz on the end of the filename.\ +\ +Specify Delete Zip to delete the gzip file if the compression succeeds. diff --git a/en/help/ah_gzip_file.md b/en/help/ah_gzip_file.md new file mode 100644 index 0000000..31e1a5c --- /dev/null +++ b/en/help/ah_gzip_file.md @@ -0,0 +1,7 @@ +### GZip + +Compress the specified file on the SD card to a gzip archive of the same +name with a .gz extension.\ +\ +Specify Delete Orig to delete the original file if the compression +succeeds. diff --git a/en/help/ah_haptic_feedback.md b/en/help/ah_haptic_feedback.md new file mode 100644 index 0000000..ffc00ce --- /dev/null +++ b/en/help/ah_haptic_feedback.md @@ -0,0 +1,4 @@ +### Haptic Feedback + +Change the global system haptic feedback setting (found in Android Sound +settings). diff --git a/en/help/ah_hide_scene.md b/en/help/ah_hide_scene.md new file mode 100644 index 0000000..8563c75 --- /dev/null +++ b/en/help/ah_hide_scene.md @@ -0,0 +1,11 @@ +### Hide Scene + +Hide a scene currently being displayed.\ +\ +The scene is **not** destroyed. If you are finished with the scene you +should use Destroy Scene instead to release it\'s resources.\ +\ +Animation is only relevant for non-overlay scenes and when animations +are enabled in Android settings.\ +\ +See also: Scenes in the Userguide. diff --git a/en/help/ah_html_popup.md b/en/help/ah_html_popup.md new file mode 100644 index 0000000..33d031d --- /dev/null +++ b/en/help/ah_html_popup.md @@ -0,0 +1,6 @@ +### HTML Popup + +Show a popup with the content defined by the user in HTML.\ +\ +Most Tasker actions are available via JavaScript, see the JavaScript +section of the Userguide. diff --git a/en/help/ah_http_auth.md b/en/help/ah_http_auth.md new file mode 100644 index 0000000..471bf14 --- /dev/null +++ b/en/help/ah_http_auth.md @@ -0,0 +1,85 @@ +### HTTP Auth + +Authenticate with a web service. + +#### OAuth 2.0 + +Allows you to sign in a user and act on behalf of that user in a web +service. + +For example, if you sign in as a user on the Spotify API and give it +proper permissions, you can then add songs to the user\'s Spotify +playlists. + +On most web services that use OAuth 2.0 you have to create an *app* on +that service that you can then use to sign in the user. + +**Very important**: when creating the app on the web service make sure +to set the **Redirect URI** to +**https://tasker.joaoapps.com/auth.html**. + +::: {.inputs} +::: {.input} +::: {.title} +Client ID and Client Secret +::: + +::: {.text} +Given to you by the web service when you create an app on it +::: +::: + +::: {.input} +::: {.title} +Endpoint To Get Code +::: + +::: {.text} +A URL that is indicated in the web service documentation. Look for a URL +in the docs that has the **response\_type=code** parameter and use just +the base URL. +::: + +::: {.text} +For example, for Google web services that support OAuth 2.0 this URL is +**https://accounts.google.com/o/oauth2/v2/auth** as you can see +[here](https://developers.google.com/identity/protocols/OAuth2WebServer). +::: +::: + +::: {.input} +::: {.title} +Endpoint To Get Refresh Token +::: + +::: {.text} +Also an URL that is indicated in the web service documentation. Look for +a URL in the docs that has the **grant\_type=refresh\_token** parameter +in the request body. +::: + +::: {.text} +For example, for Google web services that support OAuth 2.0 this URL is +**https://www.googleapis.com/oauth2/v4/token** as you can see +[here](https://developers.google.com/identity/protocols/OAuth2WebServer). +::: +::: + +::: {.input} +::: {.title} +Scopes +::: + +::: {.text} +The will define the permissions that your app will request the user when +acting on his/her behalf. +::: + +::: {.text} +For example, to [list a user\'s calendars in the Google Calendar +API](https://developers.google.com/calendar/v3/reference/calendarList/list) +you would need to use the +**https://www.googleapis.com/auth/calendar.readonly** scope. +::: +::: +::: diff --git a/en/help/ah_http_get.md b/en/help/ah_http_get.md new file mode 100644 index 0000000..abb7ea2 --- /dev/null +++ b/en/help/ah_http_get.md @@ -0,0 +1,35 @@ +### HTTP Get + +Send an HTTP GET request to a webserver.\ +\ +The response code is stored in %HTTPR. A response code of -1 indicates a +problem making the request. Any returned data is stored in the variable +%HTTPD if the content type is text-based (max 4K).\ +\ +Returned header fields are stored in the local variable array %header +(%header1, %header2 etc)\ +\ +Example: running a script\ +\ +Server:Port: www.big.com \[no port specified, use port 80\]\ +Path: cgi-bin/palpable.pl\ +Attributes: \[must be separated by newlines, no spaces please\]\ +colour=pink\ +scent=rosy\ +Timeout: 30 \[read timeout after 30 seconds\]\ +Content-Type: \[if nothing specified, use server-specified value\]\ +File: results.html \[optional: store returned data in +/sdcard/results.html\]\ +\ +Attribute keys and values are url-encoded automatically.\ +\ +Server:Port can be preceeded by a) https:// to require a secure, trusted +connection b) a username:password@ to add a Basic Authorization header +field to the request.\ +\ +The Cookies parameter is of the form:\ +\ +name1=valuu1;name2=value2\ +\ +Ignore SSL Anchor Errors: only for https connections, ignoring such +errors leaves the connection open to man-in-the-middle attacks. diff --git a/en/help/ah_http_head.md b/en/help/ah_http_head.md new file mode 100644 index 0000000..858f51a --- /dev/null +++ b/en/help/ah_http_head.md @@ -0,0 +1,4 @@ +### HTTP Head + +Identical to the HTTP Get action except the HEAD request method is used +so no data is returned from the server. diff --git a/en/help/ah_http_post.md b/en/help/ah_http_post.md new file mode 100644 index 0000000..74b6166 --- /dev/null +++ b/en/help/ah_http_post.md @@ -0,0 +1,37 @@ +### HTTP Post + +Send an HTTP POST request to a webserver.\ +\ +The response code is stored in %HTTPR. A response code of -1 indicates a +problem making the request. Any returned data is stored in the variable +%HTTPD if the content type is text-based (max 4K).\ +\ +Returned header fields are stored in the local variable array %header +(%header1, %header2 etc)\ +\ +Example: sending a script some data\ +\ +Server:Port www.small.com \[no port specified, use port 80\]\ +Path: cgi-bin/grinder.pl\ +Data:\ +name=Fred\ +hair=Blond\ +Timeout: 30 \[read timeout after 30 seconds\]\ +Content-Type: \[default is: x-www-form-urlencoded, if not specified +server value is used\]\ +File: results.html \[optional: store returned data in +/sdcard/results.html\]\ +\ +If Content-Type is x-www-form-urlencoded, the data must be formatted as +in the example and the keys and values will be encoded automatically.\ +\ +Server:Port can be preceeded by a) https:// to require a secure, trusted +connection b) username:password@ which will add a Basic Authorization +header field to the request.\ +\ +The Cookies parameter is of the form:\ +\ +name1=valuu1;name2=value2\ +\ +Ignore SSL Anchor Errors: only for https connections, ignoring such +errors leaves the connection open to man-in-the-middle attacks. diff --git a/en/help/ah_if.md b/en/help/ah_if.md new file mode 100644 index 0000000..d90d7c3 --- /dev/null +++ b/en/help/ah_if.md @@ -0,0 +1,7 @@ +### If + +If the action condition does not match, skip all actions until a +matching Else or Endif is found or until the end of the task is +reached.\ +\ +See Flow Control in the Userguide for more info. diff --git a/en/help/ah_immersive_mode.md b/en/help/ah_immersive_mode.md new file mode 100644 index 0000000..032cc99 --- /dev/null +++ b/en/help/ah_immersive_mode.md @@ -0,0 +1,8 @@ +### Immersive Mode + +Can hide + +- **Status Bar**: the bar above the Android UI, where the notification + icons reside +- **Navigation Bar**: the bar below the Android UI, where the home, + back and recent apps buttons reside diff --git a/en/help/ah_import_data.md b/en/help/ah_import_data.md new file mode 100644 index 0000000..63d28a8 --- /dev/null +++ b/en/help/ah_import_data.md @@ -0,0 +1,13 @@ +### Import Data + +Dynamically load a task into the active configuration or replace the +whole active configuration.\ +\ +Usually the data to be loaded is first read into a variable via the Read +File action.\ +\ +When a new configuration is successfully loaded, the task (and all +others) will be stopped and the monitor service also restarted.\ +\ +Tip: the action Variable Convert / To MD5 Sum, can be used to validate +the loaded data after Read File. diff --git a/en/help/ah_inc_variable.md b/en/help/ah_inc_variable.md new file mode 100644 index 0000000..edefcd6 --- /dev/null +++ b/en/help/ah_inc_variable.md @@ -0,0 +1,20 @@ +### Variable Add + +Increase the value of the variable Name.\ +\ +The value is increased by the integer Value.\ +\ +If the variable does not contain a numeric value (e.g. 3) this action +has no effect and a warning will be flashed.\ +\ +If the variable does not exist, it will first be created with a value of +0.\ +\ +If a Wrap Around is not zero, then when the final result is equal to or +greater than the Wrap Around value, it will wrap back to 0 e.g. with +Wrap Around 5, 2 + 4 = 1.\ +\ +See the section on Conditions and Loops in the Userguide for more +information.\ +\ +Use action Variable Set for non-integer addition. diff --git a/en/help/ah_index.md b/en/help/ah_index.md new file mode 100644 index 0000000..2f91a9a --- /dev/null +++ b/en/help/ah_index.md @@ -0,0 +1,3008 @@ +--- +title: 'Tasker: Action A-Z' +--- + +### Tasker: Action A-Z + +#### APN Droid + +Enable or disable mobile data by changing APN data.\ +\ +This action requires that the application APNDroid is installed on your +device.\ +\ +It apparently does \*not\* work for CDMA phones e.g. Motorola Droid, try +the Mobile Data action instead.\ +\ +If you have trouble reconnecting after using this action, use the +\'Reset to Default\' menu item in the APNs screen of Android Settings.\ +\ +Warning: APNDroid v2.5+: the Tasker action seems \*not\* to affect the +new APNDroid data toggle. If you use Tasker with APNDroid 2.5+, it\'s +recommended that you \*disable\* the \'Use system toggle\' option in +system settings to prevent confusion. + +#### Airplane Mode + +Whether airplane mode is enabled (all wireless devices off) or enabled +(each wireless device is enabled if it is individually enabled).\ +\ +See also: action Airplane Radios. + +#### Airplane Radios + +Specify which radios should be **disabled** when entering Airplane +Mode.\ +\ +This can be useful for e.g. turning off the phone radio when it is not +required; first set Airplane Radios to only Phone, then use the Airplane +Mode action to enter Airplane Mode.\ +\ +Important: for some radios the setting may not take effect until the +device has been restarted.\ +\ +See also: variable %AIRR. + +#### Alarm Volume + +Alarm volume level.\ +\ +Setting to 0 will mute alarms.\ +\ +When Display is enabled, a popup will show the new level.\ +\ +When Sound is enabled, a tone will sound at the new volume level. + +#### Anchor + +Provides a fixed, named point in a task.\ +\ +This is most useful as the top action in a loop with a Goto action at +the end; it allows new actions to easily be inserted at the top of the +loop (under the Anchor). + +#### Android Notifier + +Android Notifier is a service for contacting your desktop via your +mobile phone.\ +\ +Info:\ +\ +http://code.google.com/p/android-notifier/ + +#### Array Clear + +Remove all the elements of an array variable. + +#### Array Pop + +Remove an element from an array and shuffle all the higher array +elements down to fill the gap.\ +If Position is higher than the last index in the array, the last element +is removed.\ +\ +If To Var is set, the \'popped\' value is assigned to that variable.\ +\ +Note: a variable clear or set broadcast is only done for the specified +array index.\ +\ +See Also: the Variables section of the Userguide. + +#### Array Process + +Perform an operation on the elements of an array as a group.\ +\ +Rotate shifts all the elements to left or right, and puts the end one +back at the other side.\ +\ +Squash removes array indices for which no value is assigned e.g. if +%var1=one and %var3=three, squash will result in %var1=one and +%var2=three.\ +\ +The numeric sorts use the first number they find in each entry e.g. a3c, +b5, 1x becomes 1x, a3c, b5. + +#### Array Push + +Add a new element to a variable array, pushing existing elements upwards +to make space if necessary.\ +\ +If Position is higher than the last index in the array, the new element +is added at the end of the array.\ +\ +If Fill Spaces is specified, higher elements will only be pushed up +until a non-defined element is found (which will be filled).\ +\ +Note: a variable set broadcast is only done for the specified array +element even if the action also causes changes in other elements.\ +\ +See Also: the Variables section of the Userguide. + +#### Array Set + +Set the values of an array from a preset list of Values.\ +\ +The values are split by Splitter, or whitespace if none is specified, +and each value is then placed in a successive array index of the new +array.\ +\ +If the array already existed, it is first cleared.\ +\ +See Also: action Variable Split. + +#### Astrid + +Info:\ +\ +http://weloveastrid.com + +#### Auto Brightness + +Enable or disable automatic screen brightness adjustment by the system +(dependent on ambient light).\ +\ +Not available on all devices and OS versions.\ +\ +In some cases, though the setting is restored, the screen will not react +until the settings screen is visited. It may be therefore useful to put +Wait 500ms and Screen Brightness XXX actions in your exit task. + +#### Auto-Sync + +Whether auto-syncing of data is enabled.\ +\ +Note: the Android power manager widget does not update correctly after +this action. Also: actual sync will only take place if the Android +Background Data setting is enabled. + +#### BT Voice Volume + +In-call volume when using bluetooth.\ +\ +When Display is enabled, a popup will show the new level.\ +\ +When Sound is enabled, a tone will sound at the new volume level. + +#### Battery Info + +This setting screen is not supported by Samsung ROMs + +#### Beep + +Generate a fixed-frequency audio tone.\ +\ +Amplitude is the percentage of maximum amplitude. The system volume +setting for the selected output stream will also affect the perceived +volume.\ +\ +Note: Frequency is not on a Hertz scale. + +#### BeyondPod + +Info:\ +\ +http://beyondpod.mobi + +#### Bluetooth + +Whether the Bluetooth radio is enabled or disabled.\ +\ +This action is ignored when Airplane Mode is on.\ +\ +Note: when enabling, it will probably be some seconds before the +Bluetooth service is actually usable. + +#### Bluetooth ID + +Sets the name of the local bluetooth device (the one seen by other +devices). + +#### Bluetooth Voice + +Switch to or from using a Bluetooth headset for voice communications.\ +\ +Probably only works in-call, and may not be reflected visually by the +Phone application. + +#### Browse Files + +Runs File Magic, the Tasker-integrated file manager available +separately.\ +\ +If Dir is specified, the File Magic starts in that directory.\ +\ +If Match is specified, only files containing that sequence are shown +(e.g. .jpg)\ +\ +If Show Hidden is selected, files starting with \'.\' are also shown +(this option overrides File Magic\'s user preference). + +#### Browse URL + +Open the specified URL in the default browser. + +#### Button + +Simulate pressing of a hardware button.\ +\ +Only available on a rooted device.\ +\ +USB Debugging probably needs to be enabled in Android\'s Developer +Settings. + +#### Calendar Insert + +Insert an entry into the specified calendar.\ +\ +In / For: the number of minutes from now at which the calendar entry +should start. Optionally, For how many minutes the calendar entry should +last.\ +\ +The default for In / For is 0 / 0.\ +\ +Available: if not clicked, the calendar entry is marked as \'Busy\' (see +Menu / Show Extra Options in the Calendar app).\ +\ +Tip: if you want to use variables with In / For, be sure to leave spaces +otherwise the variables won\'t be recognized. + +#### Call + +Bring up the dialer screen with the specified phone number filled in.\ +\ +Commas and Semi-Colons terminate the number currently, this is filed as +an Android bug. + +#### Call Block + +Block outgoing calls to the specified matched number(s).\ +\ +If no Number is specified, all calls will be blocked.\ +\ +If Info is checked, all diversions and blocks will be displayed after +the action.\ +\ +To stop blocking, use Call Revert.\ +\ +Note: you can\'t block \*and\* divert a particular pattern.\ +\ +Matching occurs in the same way as for event contexts, see the Event +Edit Activity help page.\ +\ +Examples:\ +\ +*0193\** - any number starting with **0193**\ +\ +*12345/56789* - either of the numbers **12345** or **56789** + +#### Call Divert + +Divert outgoing calls from the specified number (pattern), to the +specified (full) phone number.\ +\ +From: the number (pattern) to divert. If any part of the outgoing number +matches From the diversion will take place. If no From is specified, all +calls will be diverted.\ +\ +To: the number which will be called instead.\ +\ +If Info is checked, all diversions and blocks will be displayed after +the action.\ +\ +To stop diverting, use Call Revert.\ +\ +Note: you can\'t block \*and\* divert a particular pattern. + +#### Call Log + +Show the Call Log tab of the standard Android contacts application. + +#### Call Revert + +Stop blocking or diverting calls to to the specified number.\ +\ +If no number is specified, all blocks and diversions will be cancelled.\ +\ +If Info is checked, all diversions and blocks will be displayed after +the action.\ +\ +See also: Block Calls, Divert Calls + +#### Cancel Alarm + +Cancel a currently active or future system alarm.\ +\ +If there are two or more matching alarms, or on some devices always, +Android will show a UI allowing the user to select the desired alarm. +Therefore, for best results when automating, it\'s recommended to give +each alarm a unique label and then use that for cancellation.\ +\ +If the specified alarm is a repeating alarm, then only the next instance +is cancelled (the alarm remains enabled)\ +\ +Some modes are poorly implemented by many Android devices. For instance, +snooze time may be ignored. + +#### Car Mode + +Enable or disable Android\'s Car Mode.\ +\ +If Go Home is checked, the relevant home screen will be launched +dependent on whether Car Mode is being entered or exited.\ +\ +Requires Android 2.2+ + +#### Change Icon Set + +Change Widget Task icons in the home screen.\ +\ +Only Widgets that have a downloaded icon can have it switched to a new +set.\ +\ +The New field specifies the new icon set.\ +\ +If no Old set is specified, all icons are changed to the New set, +otherwise only icons that currently have an icon of the Old set are +changed.\ +\ +Warning: for Tasker icon sets, each icon is guaranteed to exist in each +set. For user-installed icons, that may not be the case. + +#### Clear Key + +Clear an encryption key. Next time you try to encrypt or decrypt with +that key, you will be asked for the passphrase.\ +\ +See *Encryption* in the Userguide for details. + +#### Close System Dialogs + +Close (some of the) system dialogs like Recent Apps or the +Long-Home-Key-Press dialog.\ +\ +Tip: you can detect some such dialogs opening with the New Window event. + +#### Compose Email + +Launch an application to compose an email from optional predefined +elements.\ +\ +Recipient(s) is a comma-separated list of receivers of the email. + +#### Compose MMS + +Launch an application to compose an MMS from optional predefined +elements. + +#### Compose SMS + +Launch an application to compose an SMS from optional predefined +elements.\ +\ +To send an SMS directly, see Send SMS.\ +\ +On Android 4.4+, only one of Recipient or Message can be specified. + +#### Contacts + +Show a selected list of contacts from the standard Android contacts +application.\ +\ +Note: to show all contacts, you can use the Apps/Load App action and +select the Contacts application. + +#### Copy Dir + +Recursively copy a directory to a new one.\ +\ +If To specifies an existing directory, the copy will be placed +**inside** it, otherwise the copy will have that name. + +#### Copy File + +Copy an SD card file to a new directory.\ +\ +If To specifies an existing file, it will be overwritten.\ +\ +The paths start in the root directory of the SD card.\ +\ +Root users: note that the \"Mount namespace separation\" option of +SuperSu can cause problems. + +#### Create Directory + +Create an SD card directory.\ +\ +If Create All is specified, all of the directories above the specified +one will be created if necessary.\ +\ +The path starts in the root directory of the SD card. + +#### Create Scene + +Create a scene without displaying it.\ +\ +This might be useful if needs to be prepared in some way before +displaying.\ +\ +See also: Scenes in the Userguide. + +#### Crop Image + +Crop the image currently in the image store.\ +\ +The parameters specify what percentage of the image to remove from each +side of the image.\ +\ +See also: Load Image. + +#### [Data Backup](ah_data_backup.html) + +#### DTMF Volume + +The function is a bit of a mystery\...\ +\ +When Display is enabled, a popup will show the new level.\ +\ +When Sound is enabled, a tone will sound at the new volume level. + +#### DailyRoads Voyager + +Info:\ +\ +http://www.dailyroads.com/voyager.php + +#### Decrypt File + +Decrypt the specified SD card file which was previously encrypted with +Tasker\'s *Encrypt File* action.\ +\ +The path starts in the root directory of the SD card e.g. secret.txt, +secret/recording.mp3.\ +\ +Key Name is the name of the encryption key to use.\ +\ +The key is not deleted unless Clear Key is set, since you will usually +want to use the same key to encrypt the file again at some point.\ +\ +There must be space left on the SD card at least equal to the size of +the file before starting decryption.\ +\ +See *Encryption* in the Userguide for details. + +#### Default Ringtone + +Sets the default ringtone for alarms, notifications or the ringer.\ +\ +Music files you place in /sdcard/media/ringtones/ will be included in +the selection list for the Ringer ringtone, similarly for Notification +and Alarm ringtones. You may have to create the folders first.\ +\ +An easier way to use SD card audio files as ringtones is to install a +tone picker application e.g. Tone Picker.\ +\ +You can also just put the title of the track in the box if it matches +the title of an audio track you have on SD. + +#### Delete Directory + +Delete an SD card directory.\ +\ +The path starts in the root directory of the SD card.\ +\ +If it is not empty, it will not be deleted unless you specify Recurse. +\*Warning\*: you can delete the whole SD card contents if you are not +careful with this option. + +#### Delete File + +Delete an SD card file.\ +\ +The path starts in the root directory of the SD card.\ +\ +If Shred Level is more than 0, the contents of the file are overwritten +with random bytes the specified number of times before it is deleted.\ +\ +The intention is to make it (much) harder to recover the contents than +if the file was simply deleted.\ +\ +Security note: shredding will only provide basic protection on +\'journalling\' filesystems, but most external storage uses FAT32 at the +time of writing. + +#### Deprecated + +Please see Menu / Info / Release Notes for more information. + +#### Destroy Scene + +Destroy a previously created scene, hiding it first if necessary. + +#### Disable + +Permanently turn off Tasker\'s monitor and stop running tasks.\ +\ +Tasker will not do anything further until enabled via the On/Off button +in the Profile List screen. + +#### Display AutoRotate + +Whether rotating the device also rotates the screen (between portrait +and landscape). + +#### Display Brightness + +Brightness setting of the screen (0-255).\ +\ +If the safeguard is enabled, levels less than 20 will be set to 20 to +prevent accidental black screens.\ +\ +Ignore Current Level: if it looks like it\'s already at the required +level, go ahead and set it again anyway.\ +\ +Immediate Effect: ensure the change takes effect immediately. If not +selected, it may not take effect till Android registers the new value, +which may require a display on-off.You may that find Immediate Effect +disrupts some applications.\ +Immediate Effect is only needed on Android versions up till 4.4.\ +\ +If you have auto-brightness controls on your device, it\'s advisable to +disable them before attempting to set the brightness manually. See +system settings or Tasker action Auto-Brightness. + +#### Display Timeout + +The length of time with no user action before the screen powers off.\ +\ +Setting all sliders to the maximum value means \'Never\'.\ +\ +Note: this setting may be overruled by the Stay On action when the +device is plugged into a power source.\ +\ +Note: if you go to Android settings after running this action, Android +will change the value to one it \'knows about\' e.g. if you have set it +to 9 minutes, Android Settings may change it to 10 minutes.\ +Some have reported the same thing occuring after a reboot. + +#### Dpad + +Simulate use of the Dpad or trackball. Useful for moving around and +clicking controls in an application.\ +\ +Only available on a rooted device.\ +\ +USB Debugging probably needs to be enabled in Android\'s Developer +Settings. + +#### Due Today + +Info:\ +\ +http://www.lakeridgesoftware.com/products/android/DueToday/ + +#### Edit Scene + +Open the Scene Edit screen in the Tasker UI to edit the named scene. +Optionally, the specified element will be edited immediately.\ +\ +This action will fail if the Tasker UI is already open or the given +scene is normally locked in the UI. + +#### Edit Task + +Open the Task Edit screen in the Tasker UI to edit the named task. +Optionally, the specified action (being a number, partial label, action +name or parameter match) will be edited immediately.\ +\ +This action will fail if the Tasker UI is already open or the given task +is normally locked in the UI. + +#### Element Add GeoMarker + +Add a marker to a scene Map element.\ +\ +Spot Radius specifies the size of circle to place at the base of the +market.\ +\ +The scene must have been created first.\ +\ +See also: Element Delete GeoMarker. + +#### Element Back Colour + +Set the background colour(s) of a scene element.\ +\ +Applies to Text, TextEdit, Image, Menu, Oval and Rectangle elements.\ +\ +End Colour is only relevant if the element\'s background has a Shader +specified.\ +\ +The scene must have been created first. + +#### Element Border + +Set the width and colour of an element\'s border.\ +\ +Applies to Text, TextEdit, Image, Menu, Oval and Rectangle elements.\ +\ +The scene must have been created first. + +#### Element Create + +Create a new scene element dynamically and add it to an existing +(created) scene.\ +\ +If you wish to animate the appearance of the element, deselect the +Visible parameter and use the Element Visibility action afterwards.\ +\ +Note: unfortunately it\'s not yet possible to link event tasks to +dynamically-created elements. + +#### Element Delete GeoMarker + +Delete a marker from a scene Map element.\ +\ +The scene must have been created first.\ +\ +See also: Element Add GeoMarker. + +#### Element Depth + +Set the depth of the specified element in the scene relative to all the +other elements. + +#### Element Destroy + +Dynamically destroy and remove an element from an existing (created) +scene.\ +\ +The element need not necessarily have been dynamically created. + +#### Element Focus + +Give input focus to, or remove input focus from, the specified element. + +#### Element Image + +Set the image of an Image scene element or the icon of a Button or +Slider element.\ +\ +The scene must have been created first. + +#### Element Map Control + +Manipulate a Map scene element e.g. to zoom in or out\ +\ +The scene must have been created first.\ +\ +Note: Enable Compass: the compass is only shown when the map is tilted +or rotated. + +#### Element Position + +Move a scene element within it\'s scene.\ +\ +The scene must have been created first. + +#### Element Size + +Change the size of an element.\ +\ +The scene must have been created first. + +#### Element Text + +Set the text of a scene element.\ +\ +Applies to Button, Text and TextEdit elements only.\ +\ +The scene must have been created first.\ +\ +For TextEdit elements, the parameter Selection specifies a part of the +text to select after it has been set.\ +The specification is either a range (e.g. 1:4 for characters 1 to 4 +inclusive, or 3: to select everything from character 3 onwards) or a +simple match e.g. v\*e to select everything between a v and an e. Use : +or \* to select the whole text. + +#### Element Text Colour + +Set the text colour of a scene element\ +\ +Applies only to Button, Text and TextEdit elements.\ +\ +The scene must have been created first. + +#### Element Value + +Set the value of a scene element.\ +\ +Applies only to CheckBox, Number Picker, Slider, Spinner and Toggle +elements.\ +\ +For a CheckBox, value should be 0 (off) or 1 (on).\ +\ +For a Spinner, the value is the index of the item to set.\ +\ +The scene must have been created first.\ +\ +The action can only trigger a possible event associated with the element +value if the scene is currently showing.\ +\ +To set the value of a Text, EditText or Button element, use the Element +Text action. + +#### Element Video Control + +Manipulate a Video element in a scene.\ +\ +Not all actions are possible at all times. For instance, Play is not +possible until the video has loaded.\ +\ +Tip: to simplify a manual load-and-start-video, specify in the element a +variable as the source of the video and check Start Automatically. Then +instead of using a Video Control action with Load Source, just set the +variable. + +#### Element Visibility + +Hide or show a scene element.\ +\ +The scene must have been created first. + +#### Element Web Control + +Manipulate a WebView scene element e.g. to page up or down\ +\ +This action will not work until the scene has ben **displayed** at least +once. + +#### Else + +Used after an If action to specify actions which should take place if +the If condition didn\'t match.\ +\ +See Flow Control in the Userguide for more info. + +#### Encrypt File + +Encrypt the specified SD card file.\ +\ +The path starts in the root directory of the SD card e.g. secret.txt, +secret/recording.mp3\ +\ +Key Name is the name of the encryption key to use.\ +\ +Usually the key is deleted after encryption, set Leave Key if you have +more files to encrypt.\ +\ +There must be space left on the SD card at least equal to the size of +the file before starting encryption.\ +\ +See *Encryption* in the Userguide for details.\ +\ +You can also access Tasker\'s encryption features via File Magic, a +Tasker-integrated file manager. + +#### Enter Key + +Enter an encryption key in preparation for encrypting at a later time.\ +\ +If Confirm is set, the key will be requested twice in order to be sure +it was entered correctly.\ +\ +See *Encryption* in the Userguide for details. + +#### Filter Image + +Apply a filter to the image currently in the image store.\ +\ +See also: Load Image. + +#### Flash + +Flash a message up.\ +\ +If Long is selected, the message will flash up for longer.\ +\ +A Flash is less intrusive than a popup: it is still possible to interact +with the application below while the message is showing.\ +\ +On some devices, disabling Notifications for Tasker in Android settings +will also prevent flash messages. + +#### Flip Image + +Flip the image currently in the image store.\ +\ +See also: Load Image. + +#### For + +Do a set of actions to process each of a set of values.\ +\ +Values is a comma-separated list of items to iterate through\ +\ +A For loop should be ended with a matching End For action (if one is not +present, one is automatically added to the end of the task)\ +\ +Example Items:\ +\ +apple, 0, 2:4, 3:9:3, %ARR(1:2), pear\ +\ +This would set Variable one at a time to:\ +\ +apple, 0, 2, 3, 4, 3, 6, 9, %ARR1, %ARR2, pear\ +\ +See Flow Control in the Userguide for more info. + +#### [Google Drive Download](ah_google_drive_download.html) + +#### [Google Drive List](ah_google_drive_list.html) + +#### [Google Drive Sign-In](ah_google_drive_sign_in.html) + +#### [Google Drive Trash](ah_google_drive_trash.html) + +#### [Google Drive Upload](ah_google_drive_upload_file.html) + +#### GPS + +Whether the GPS receiver is enabled or not. + +#### GUnzip + +Decompress the specified gzip archive file on the SD card.\ +\ +You do not need to add .gz on the end of the filename.\ +\ +Specify Delete Zip to delete the gzip file if the compression succeeds. + +#### GZip + +Compress the specified file on the SD card to a gzip archive of the same +name with a .gz extension.\ +\ +Specify Delete Orig to delete the original file if the compression +succeeds. + +#### Gentle Alarm + +Enable/Disable a Gentle Alarm alarm, or all alarms (Power) if no Name is +specified.\ +\ +Requires v3.1.0+ + +#### Get Location + +Get a location fix.\ +\ +GPS: a value will be set when the accuracy stops improving. \'Use GPS +Satellites\' must be enabled in Android Location Settings.\ +\ +Net: a value will returned upon the first fix.\'Use Wireless Networks\' +must be enabled in Android Location Settings.\ +\ +Continue Task Immediately: move on to the next action in the task as +soon as the fixing has started.\ +\ +Keep Tracking: don\'t stop tracking the location source(s) when a value +is returned This will use more power but enables faster fixes after the +first one. When using this option, tracking can be stopped by the action +Stop Location or doing Get Location without the option checked.\ +\ +It will stop automatically if at any time no tasks are left to execute +or the Get Location times out.\ +\ +Note: the fix data are stored in the relevant %LOC variables, see the +Variables section of the userguide. + +#### Get Voice + +Use a speech recognizer to convert speech into text.\ +\ +A comma-separated list of results are stored in the variable %VOICE. +It\'s possible there may be several results because of deficiencies in +the speech-recognition or e.g. environmental noise. To get e.g. the +first result, use the Variable Split action and then access %VOICE1.\ +\ +If the recognition fails or the specified Timeout is exceeded, %VOICE is +cleared (detect this condition with the Is Set operator).\ +\ +Language Model is a hint to the speech-recognizer for fine-tuning the +results.\ +\ +The default Android speech recognizer requires a network connection and +therefore has a high-latency. Other recognizers are available e.g. on +Play Store.\ +\ +Tip: it may be necessary to install the Google Search app in order to +access this action on some devices. + +#### Go Home + +Go to the current system Home Screen.\ +\ +If the Page parameter is greater than 0, the home screen is requested to +start on that page.\ +\ +Some of the supporting home screens are Holo Launcher, Launcher Pro, +Nova Launcher and Car Dock Home (v3). If your Home Screen app doesn\'t +support it, you could contact the developer and refer them to Tasker\'s +developer page: tasker.dinglisch.net/developer.html for info on how to +include it. + +#### Goto + +Go to a different place in the current task.\ +\ +Number: specify an action number to jump to.\ +\ +Label: specify an action label to jump to. This is almost always better +than specifying a number.\ +\ +Top of Loop: jump to the first For action above the current action +(\'continue\')\ +\ +End of Loop: jump to the action **after** the next End For action +(\'break\')End of If: jump to the next End If action\ +\ +See the section on Flow Control in the Userguide for more info. + +#### HTML Popup + +Show a popup with the content defined by the user in HTML.\ +\ +Most Tasker actions are available via JavaScript, see the JavaScript +section of the Userguide. + +#### HTTP Get + +Send an HTTP GET request to a webserver.\ +\ +The response code is stored in %HTTPR. A response code of -1 indicates a +problem making the request. Any returned data is stored in the variable +%HTTPD if the content type is text-based (max 4K).\ +\ +Returned header fields are stored in the local variable array %header +(%header1, %header2 etc)\ +\ +Example: running a script\ +\ +Server:Port: www.big.com \[no port specified, use port 80\]\ +Path: cgi-bin/palpable.pl\ +Attributes: \[must be separated by newlines, no spaces please\]\ +colour=pink\ +scent=rosy\ +Timeout: 30 \[read timeout after 30 seconds\]\ +Content-Type: \[if nothing specified, use server-specified value\]\ +File: results.html \[optional: store returned data in +/sdcard/results.html\]\ +\ +Attribute keys and values are url-encoded automatically.\ +\ +Server:Port can be preceeded by a) https:// to require a secure, trusted +connection b) a username:password@ to add a Basic Authorization header +field to the request.\ +\ +The Cookies parameter is of the form:\ +\ +name1=valuu1;name2=value2\ +\ +Ignore SSL Anchor Errors: only for https connections, ignoring such +errors leaves the connection open to man-in-the-middle attacks. + +#### HTTP Head + +Identical to the HTTP Get action except the HEAD request method is used +so no data is returned from the server. + +#### HTTP Post + +Send an HTTP POST request to a webserver.\ +\ +The response code is stored in %HTTPR. A response code of -1 indicates a +problem making the request. Any returned data is stored in the variable +%HTTPD if the content type is text-based (max 4K).\ +\ +Returned header fields are stored in the local variable array %header +(%header1, %header2 etc)\ +\ +Example: sending a script some data\ +\ +Server:Port www.small.com \[no port specified, use port 80\]\ +Path: cgi-bin/grinder.pl\ +Data:\ +name=Fred\ +hair=Blond\ +Timeout: 30 \[read timeout after 30 seconds\]\ +Content-Type: \[default is: x-www-form-urlencoded, if not specified +server value is used\]\ +File: results.html \[optional: store returned data in +/sdcard/results.html\]\ +\ +If Content-Type is x-www-form-urlencoded, the data must be formatted as +in the example and the keys and values will be encoded automatically.\ +\ +Server:Port can be preceeded by a) https:// to require a secure, trusted +connection b) username:password@ which will add a Basic Authorization +header field to the request.\ +\ +The Cookies parameter is of the form:\ +\ +name1=valuu1;name2=value2\ +\ +Ignore SSL Anchor Errors: only for https connections, ignoring such +errors leaves the connection open to man-in-the-middle attacks. + +#### Haptic Feedback + +Change the global system haptic feedback setting (found in Android Sound +settings). + +#### Hide Scene + +Hide a scene currently being displayed.\ +\ +The scene is **not** destroyed. If you are finished with the scene you +should use Destroy Scene instead to release it\'s resources.\ +\ +Animation is only relevant for non-overlay scenes and when animations +are enabled in Android settings.\ +\ +See also: Scenes in the Userguide. + +#### If + +If the action condition does not match, skip all actions until a +matching Else or Endif is found or until the end of the task is +reached.\ +\ +See Flow Control in the Userguide for more info. + +#### Import Data + +Dynamically load a task into the active configuration or replace the +whole active configuration.\ +\ +Usually the data to be loaded is first read into a variable via the Read +File action.\ +\ +When a new configuration is successfully loaded, the task (and all +others) will be stopped and the monitor service also restarted.\ +\ +Tip: the action Variable Convert / To MD5 Sum, can be used to validate +the loaded data after Read File. + +#### In-Call Volume + +Volume level of speech during calls.\ +\ +Setting to 0 will make phone calls difficult.\ +\ +When Display is enabled, a popup will show the new level.\ +\ +When Sound is enabled, a tone will sound at the new volume level. + +#### Input Method Select + +Show the Android Input Method picker dialog.\ +\ +If some methods you have installed are not shown, make sure they are +enabled in Android settings.\ +\ +Note: unfortunately Android does not allow changing of the input method +without user iteraction. + +#### Interrupt Mode + +Sets the interruption mode for the device i.e. whether notifications, +alarms etc should interrupt the current activity.\ +\ +This action requires that Tasker\'s notification access service is +running, see Android\'s Sound And Notification settings.\ +\ +Note that changes to Ringer, DTMF, Notification or System volume may +knock the system out of mode \'none\'.\ +\ +Android 5.0+ only.\ +\ +See Also: variable %INTERRUPT. + +#### Java Function + +Execute a native Java function.\ +\ +See Java in the userguide. + +#### Java Object + +Manipulate in some way a Java object previously created by the action +Java Function.\ +\ +See Java in the userguide. + +#### JavaScript + +Run JavaScript from a file and wait till it finishes.\ +\ +Most Tasker actions are available via function calls.\ +\ +Warning: code in the file will have access to local device files, data +stores etc\ +\ +See the JavaScript section of the Userguide for more information. + +#### JavaScriptlet + +Run a piece of JavaScript and wait till it finishes.\ +\ +Most Tasker actions are available via function calls.\ +\ +See the JavaScript section of the Userguide for more information. + +#### Juice Defender Data + +Use the Juice Defender app to change Mobile Data APNs (in order to +change mobile data connectivity).\ +\ +Juice Defender Control: Juice Defender decides whether to turn the APNs +on or off. + +#### Juice Defender Status + +Turn the Juice Defender app on or off. Requires JD version 3.3.2 or +higher. + +#### [Keyboard](ah_keyboard.html) + +#### Keyguard + +Whether the keyguard is enabled or disabled.\ +\ +The keyguard is the dialog requiring some sort of unlock action when the +device is turned on.\ +\ +Note: while keyguard is disabled, your SIM pin unlock screen may +disappear after a few seconds after a reboot.\ +\ +WARNING: while keyguard is disabled, the \'lock pattern\' mechanism is +also disabled, so your phone is unprotected if it is lost. There is also +the possibility of interference with other applications that manipulate +the keyguard.\ +\ +On Android 2.2+, this action should probably only be used when the +device is on and unlocked, unless the unlock method in Android settings +is set to None.\ +\ +Side-effect: coming out of Airplane Mode with Keyguard disabled may +leave the SIM unrecognized until Keyguard is toggled again.\ +\ +See also: action Keyguard Pattern. + +#### Keyguard Pattern + +Control the lock pattern displayed by the Android keyguard. If the +keyguard is disabled, no pattern is displayed even if the pattern is +enabled.\ +\ +WARNING: behaviour is unknown if you enable the lock pattern without +having first entered a pattern in Android settings.\ +\ +See also: action Keyguard. + +#### Kill App + +Stop the specified application.\ +\ +Android 2.2+: restarts an application\'s background services only.\ +\ +For other Android versions or if Use Root is selected: kills a running +application and all its background services, notifications, alarms etc +Note that Use Root can cause future malfunctioning of the target app if +it e.g. is killed while writing data.\ +\ +Tip: may be more effective if the target app is not in the foreground, +try using action Go Home first. + +#### Launch App + +Launch the specified application.\ +\ +If Data is specified, it is passed to the application when launched. Not +all applications examine the data field, however.\ +\ +If *Exclude From Recent Apps* is checked, the application will not +appear in the recent apps list (usually accessed by long-clicking home +in the Android launcher), unless it was already in the list.\ +\ +If Always Use New Copy is not checked, any existing copy of the app to +be launched instead of a new copy.\ +\ +To change the application once you\'ve selected one, tap on the +application icon.\ +\ +When selecting an app, you can long-click to select a sub-activity of +the app. Note that often the app is not expecting a sub-activity to be +launched directly and may crash. + +#### List Apps + +List installed packages, apps and components in the specified array +variable.\ +\ +Packages correspond to APK files.\ +\ +Each package can contain multiple apps (though usually there is only +one) and multiple components of each of the four types.\ +\ +Only **enabled** and **exported** apps and components are listed.\ +\ +Apps and components are listed in the format PkgName:ClassName. + +#### List Files + +List the files contained in a specified directory in alphabetical +order.\ +\ +If a Match is specified, only filename which match that pattern are +included.\ +\ +The results are stored in the specified variable. The first file path is +stored in %VAR1, the second in %VAR2 etc\ +\ +Note: when Use Root is selected, it may be necessary to specify an +absolute path (starts with /) for Dir. + +#### Load Image + +Load an image into the image store, overwriting any image there +previously.\ +\ +The image store is an image held in the device memory on which all +actions from the Image category act.\ +\ +Once finished manipulating an image, it can be saved to a file with the +Save Image action.\ +\ +However, it could also be used to e.g. directly set an image element in +a scene.\ +\ +Max Width Or Height: if specified, the image is scaled as it is loaded +so that no dimension is more than the specified number of pixels. Useful +when memory is an issue.\ +\ +Respect EXIF Orientation: if the specified image is JPG format, it will +be automatically adjusted after loading dependent on the EXIF meta-data +tag, if present. + +#### Load Last App + +Launch the previous foreground application. + +#### Lock + +Show a lock screen.\ +\ +To continue, the specified code must be entered. Allow Cancel determines +whether a Cancel button will be shown or not. If Cancel is pressed the +user is taken back to the home screen.\ +\ +If Remember Till Off is selected, a correctly entered password will be +remembered and reused until the device enters sleep mode.\ +\ +A common use is to lock particular applications.\ +\ +Consider locking this profile. That will prevent circumvention of this +action\'s lock by changes within Tasker.\ +\ +Also consider attaching a Lock action to any application on your system +which would allow removal of Tasker e.g. system Settings.\ +\ +In any case, this action should not considered as a replacement for the +system Keyguard lock, as it is less secure. A reboot will remove the +lock screen, for instance. + +#### MIDI Play + +Play notes on a MIDI instrument attached by USB.\ +\ +For details, see MIDI in the userguide. + +#### Media Button Events + +After grabbing the Media Button via this action all presses will be sent +to Tasker.\ +\ +It only makes sense to do this if you configure Tasker to do something +with them (via state Media Button) or you want to block them from going +to another app.\ +\ +Note: any app can grab the Media Button at any time, Tasker cannot +\'keep hold\' of it. For example, the system media player seems to grab +the button at the start of each track. + +#### Media Control + +Send a command to a media playback application.\ +\ +A target app need only be specified when multiple apps are interpreting +the command.\ +\ +Note: the Toggle Pause function may not work unless playback has already +been started manually.\ +\ +Note: Tasker\'s Music XXX actions are not controlled by this action. + +#### Media Volume + +Volume level during media playback.\ +\ +Setting to 0 will mute music.\ +\ +When Display is enabled, a popup will show the new level.\ +\ +When Sound is enabled, a tone will sound at the new volume level. + +#### Menu + +Show a selection dialog and perform a different action depending on +which item the user selects.\ +\ +The Layout parameter specifies the look of all the items. Click to edit +it.\ +\ +The Items parameter specifies the content of each item.\ +\ +The selected item label and index are available in the resulting task in +%tap\_label and %tap\_index respectively.\ +\ +If the user does not explicity select an item then when the specified +Timeout is reached the item with a checkmark will be automatically +selected.\ +\ +More info: Menu element in the Userguide. + +#### Mic Mute + +Mute the device\'s microphone. + +#### Mobile Data + +Set mobile data status without affecting incoming calls.\ +\ +This action has the disadvantage that Android may manipulate it +internally when certain things happen e.g. wifi disconnected.\ +\ +Note: this action requires that Mobile Data is intitially turned \*on\* +in Android System Settings.\ +\ +When Mobile Data is \*off\* in System Settings, this action will have no +effect.\ +\ +It has been reported that many Google apps reenable the setting. + +#### Mobile Data 2G/3G + +Setting the mode to 2G only will save power at the cost of speed.\ +\ +This action is not possible on a standard Android ROM. + +#### Morse + +Play morse code representing the given Text.\ +\ +Amplitude is the percentage of maximum amplitude. The system volume +setting for the selected output stream will also affect the perceived +volume.\ +\ +Non-latin characters are not supported.\ +\ +Note: Frequency is not on a Hertz scale. + +#### Move + +Move an SD card file or directory to a new directory.\ +\ +If To specifies an existing file, it will be overwritten.\ +\ +The paths start in the root directory of the SD card.\ +\ +Note: files cannot be moved from one file system to another e.g. +internal memory to SD. A workaround is to Copy and then Delete. + +#### Music Back + +Jump backwards in a sound file which was previously started with Play +Music.\ +\ +Jump value is in seconds. + +#### Music Play + +Play a sound file from the SD card.\ +\ +File is the path to the file on the SD card e.g. Music/wow.mp3\ +\ +If Loop is selected, the playback will restart when it reaches the end +of the file.\ +\ +Start specifies how many seconds into the track to begin playing.\ +\ +You can stop the playback before it is finished with the Stop Music +action.\ +\ +You can start playback from the start by repeating the action\ +\ +Playback has been tested with 3gp, mp3 and wma formats.\ +\ +See also: variable Music Track + +#### Music Play Dir + +Play music files from the specified SD card directory.\ +\ +If Audio Only is selected, only files with the following extensions will +be played: 3gp, mp3, wma, au, mid, midi, mp2, ogg, wav.\ +\ +If Random is selected, files will be played in random order.\ +\ +You can stop the playback before it is finished with the Stop Music +action.\ +\ +Doing the same action on the same directory will move playback to the +next file. If you want to start afresh, use Music Stop first.\ +\ +See also: variable Music Track. + +#### Music Skip + +Jump forward in a sound file which was previously started with Play +Music.\ +\ +Jump value is in seconds. + +#### Music Stop + +Stop playback of a sound file or directory which was previously started +with Play Music.\ +\ +If Clear Dir is specified and a directory was being played, next time +Music Play is used the playback will start from the first file. + +#### [Navigation Bar](ah_navigation_bar.html) + +#### Network Access + +Deny network access to all or selected apps.\ +\ +When mode Deny is selected, all apps have network access except for +those specified.\ +\ +When mode Allow is selected, only the specified apps have access.\ +\ +Use of this action overrides and replaces the effects of any previous +use.\ +\ +Notes:\ +\* this action is implemented via a VPN local to the device and cannot +be used in combination with other VPNs.\ +\* some devices will clear the users confirmation of Tasker\'s +permission to setup a VPN after every boot\ +\* the icon which Android shows in the status bar cannot be avoided\ +\* Tasker does not examine the contents of any network packet + +#### NewsRob + +Info:\ +\ +http://newsrob.com + +#### [NFC Tag](ah_nfc_tag.html) + +#### Night Mode + +Change Android\'s Night Mode setting.\ +\ +Only effective when Android\'s UI Mode is Car or Desk.\ +\ +Requires Android 2.2+ + +#### Notification Pulse + +Android system setting, whether to pulse the notification light for new +notifications. + +#### Notification Volume + +Volume level of notification alert.\ +\ +Setting to 0 will mute the notification sound.\ +\ +When Display is enabled, a popup will show the new level.\ +\ +When Sound is enabled, a tone will sound at the new volume level.\ +\ +Note: on some devices Notification and Ringer volume are linked, +changing one will change the other. There may be an Android setting for +controlling that behaviour. + +#### Notify + +Show a notification on the top bar.\ +\ +The specified Title will appear on the bar initially with the Icon.\ +\ +Notifications with a particular (non-empty) title replace existing ones +with that title.\ +\ +When the notification area is pulled down, the specified Text will be +visible.\ +\ +If Permanent is checked, the notification will not be removed by +clicking on it or pressing the Clear button. It \*can\* be removed using +the Notify Cancel action.\ +\ +A common use of creating a permanent notification is to allow permanent +quick access to e.g. a Menu Task through the Notification Bar. Specify a +task to run when the notification is clicked by creating a profile with +a Notification Click event.\ +\ +Up to 3 Actions can be specified which will appear in the notification +area. In some cases it may be necessary to slide down to reveal the +actions. Actions do not run as part of the notifying task. + +#### Notify Cancel + +Cancel a notification (created by Tasker) currently in the System +Notification bar.\ +\ +Title is the title of the notification to cancel. If Title is not +specified, all notifications will be cancelled (including \'permanent\') +ones.\ +\ +If more than one notification with the specified Title is currently +being displayed, only the last one displayed will be cancelled, the +otherwise will need to be cancelled manually.\ +\ +Warn Not Exist: if set, a warning will be flashed if there is no +matching notification. + +#### Notify LED + +Show a notification on the top bar and flash an LED.\ +\ +The specified title will appear on the bar initially. Notifications with +a particular (non-empty) title replace existing ones with that title.\ +\ +When the notification area is pulled down, the specified text will be +visible.\ +\ +A Number other than 0 causes that number to be included in the +notification area.\ +\ +Rate is the number of milliseconds the LED will flash on and then again +be off. It must be at least 1.\ +\ +Not all devices support all colours. Many devices will only support red +and green. In general, colours near the top of the list are more likely +to be supported.\ +\ +Some devices will only flash the LED when the device is off at the time +the notification is received.\ +\ +Up to 3 Actions can be specified which will appear in the notification +area. In some cases it may be necessary to slide down to reveal the +actions. Actions do not run as part of the notifying task. + +#### Notify Sound + +Show a notification on the top bar and play a sound.\ +\ +The specified Title will appear on the bar initially. Notifications with +a particular (non-empty) title replace existing ones with that title.\ +\ +When the notification area is pulled down, the specified Text will be +visible.\ +\ +A Number other than 0 causes that number to be superimposed on the +notification icon.\ +\ +Music File specifies a file location on the sdcard e.g. music/hello.mp3. +If it\'s blank, the default notification sound will play.\ +\ +Up to 3 Actions can be specified which will appear in the notification +area. In some cases it may be necessary to slide down to reveal the +actions. + +#### Notify Vibrate + +Show a notification on the top bar and vibrate.\ +\ +The specified Title will appear on the bar initially. Notifications with +a particular (non-empty) title replace existing ones with that title.\ +\ +When the notification area is pulled down, the specified Text will be +visible.\ +\ +A Number other than 0 causes that number to be included in the +notification area.\ +\ +Pattern: enter a comma-separated list of numbers. The 1st one is how +long to be silent for, the 2nd one how long to vibrate for and then +alternating.\ +\ +Specify no pattern to use the default pattern.\ +\ +Up to 3 Actions can be specified which will appear in the notification +area. In some cases it may be necessary to slide down to reveal the +actions Actions do not run as part of the notifying task.. + +#### Open File + +Open the specified file on the SD card.\ +\ +The file type is determined by the extension, unless a specific Mime +Type is specified.\ +\ +The viewer/listener used depends on that registered by the system for +the file type. + +#### Open Map + +Launches Google Maps with a particular mode and location/destination.\ +\ +Exactly one of Address or Lat/Long must be specified. Address is not +valid for StreetView mode.\ +\ +Address is in the format X+Y+Z e.g. Littleton+Delaware\ +\ +Zoom is only possible with Point / StreetView and a Lat/Long +specification.\ +\ +Label is only possible with Point mode, it will show a marker with the +specified label.\ +\ +Google Maps version 3.2.1 or higher is (probably) required for +Navigation. + +#### Perform Task + +Run the selected Tasker task.\ +\ +You can \'nest\' as many tasks as you wish.\ +\ +When this action is used as part of an Enter task, the settings it +contains are \*not\* restored when the profile exits.\ +\ +When a task is started from an existing task, the existing task +continues unless the Stop parameter is set.\ +\ +If you set the priority lower than the current task, the current task +will finish before the new one starts.\ +\ +If you set the priority the same or higher than the current task (a good +way to do this is to specify \'%priority+1\'), the new task will +completely execute before the current one resumes.\ +\ +Values assigned to %par1 and %par2 are available in the child task as +normal variables.\ +\ +If the child does a Return action, the Return Value Variable in the +parent task is set to the Value specified in that Return action, however +note that the value will not be returned if the Perform Task is the last +action of the parent.\ +\ +See Flow Control in the Userguide for more info. + +#### Play Ringtone + +Play an alarm, notification or ringer ringtone throught the specified +audio stream.\ +\ +If no Sound is specified, the current default tone of the specified Type +will be played.\ +\ +Note: the task will not wait for the ringtone to complete before +continuing.\ +\ +Note: in some Android versions ringtones will endlessly loop due to an +Android bug. + +#### Plugin + +Runs the specified action plugin.\ +\ +Timeout specifies how long Tasker should wait for the plugin to finish. +**None** indicates that Tasker will proceed immediately to the next +action in the task.\ +\ +Warning: data you enter in the plugin configuration screen is collected +by the \*plugin\*, not by Tasker. If the plugin has Internet permissions +it could e.g. transmit your data to third-parties. + +#### Popup + +Show a popup box with a message.\ +\ +The popup will dissappear after the specified number of seconds or if +its text is tapped. + +#### Popup Task Buttons + +Show a popup box with a message and 1-3 buttons with Task names, icons +or both.\ +\ +If one of the buttons is clicked, the popup exits and the relevant task +is performed. + +#### Power Mode + +Set the system power mode.\ +\ +Requires a rooted device. + +#### Profile Status + +Enable or disable the named profile.\ +\ +If the state is already the desired one, there will be no effect. + +#### Query Action + +Get details of an action to run, then run it.\ +\ +If Action is specified, only the parameters will be queried. This is a +very useful action to assign to a home screen widget, since it allows +you to easily execute any of Tasker\'s actions without having to set up +a profile etc first.\ +\ +Wait and Wait Until actions cannot be queried. As a workaround, you +could query for a variable and then then Wait in the next action of the +task using the variable value. + +#### Quick Setting Add + +Add a custom tile to the system Quick Settings panel.\ +\ +If Items are specified, then when the icon is clicked they will be shown +in a menu.\ +\ +If **no** Items are specified, a click on the tile can be detected via +the event Quick Setting Clicked.\ +\ +Only usable on Cyanogen 5.1.1+ ROMs with Custom Tile support. + +#### Quick Setting Remove + +Remove a custom tile previously added to the system Quick Settings panel +with action Quick Setting Add.\ +\ +It is not classified as an error if the tile did not previously exist.\ +\ +Only usable on Cyanogen 5.1.1+ ROMs with Custom Tile support. + +#### Radio + +Set the status of the phone radio.\ +\ +Warning: turning off the phone radio will prevent outgoing/incoming +calls and mobile data transfer. + +#### Read Binary + +Read binary data (e.g. image data) from the specified file into a +variable in base 64 format.\ +\ +Base 64 is a textual format meaning it is safe for use where pure binary +data may not be.\ +\ +Base 64 can have various formats: that used by Tasker has regular line +terminators and potentially ends with padding characters (=).\ +\ +See Also: actions Write Binary, Variable Convert + +#### Read File + +Read a text file into a variable.\ +\ +Don\'t try to read a non-text file with this, the results will probably +be disastrous + +#### Read Line / Read Paragraph + +Read a record (a line or paragraph) from a text file.\ +\ +Line/Paragraph is the name of a variable containing the record number to +read. If unspecified, the record after the previously read one \*in that +file\* is read. A variable is used in place of a number here to permit +e.g. reading a random record via the Variable Randomize action.\ +\ +If the end of the file was reached before the specified record number +was found, it will contain the value EOF. The next line number then +resets to 1.\ +\ +Blank lines and any newline character at the end of a file are always +ignored.\ +\ +Don\'t try to read a non-text file with this, the results will probably +be disastrous.\ +\ +The action is not very efficient for reading all the records in a file, +since it starts from the beginning each time. + +#### Reboot + +Reboot (or just shutdown) the device.\ +\ +Unfortunately, this is not a \'clean\' shutdown. Neither Android nor +running applications are informed that the device is rebooting, so be +prepared for possible data corruption.\ +\ +On the other hand, every other app that allows reboot does it the same +way. + +#### Record Audio + +Record from the microphone to an SD card file.\ +\ +File is the path to the file on the SD card. It will have extension .3gp +added.\ +\ +Source is where to record from. Not all sources are available on all +hardware, for instance the Call source is not available on the G1.\ +\ +The Max Filesize is the maximum size of the resulting audio file in K.\ +\ +A zero value for Filesize places no limit, in which case the recording +will not stop until the SD card is full or the Tasker action Record +Audio Stop is performed.\ +\ +Note: playback of the resulting files can be done with Tasker\'s Play +Music action, amongst others.\ +\ +Warning: in many countries, recording of individuals\' speech without +their consent is illegal. + +#### Record Audio Stop + +Stop a sound recording previously started with Record Audio. + +#### Remount + +Remount a file system read-write or read-only.\ +\ +Warning: it\'s inadvisable to\ +\ +\* use this action unless you know what you are doing\ +\* leave /system writeable for long periods + +#### Resize Image + +Resize and scale the image currently in the image store.\ +\ +Specifying a value of 0 for one of Width or Height will cause that +dimension to be scaled proportionally with the other dimension so as to +keep the original aspect ratio of the image.\ +\ +See also: Load Image. + +#### Return + +Return a value to the parent of this task i.e. the one that started it +via Perform Task.\ +\ +The parent task must have started it\'s child at equal or higher +priority and have specified a Return Value Variable in it\'s Perform +Task action, which will then be set to the Value specified in this +Return action.\ +\ +If Stop is checked, this task (the child) will terminate after returning +the Value to the parent.\ +\ +See Flow Control in the Userguide for more info. + +#### Ringer Volume + +Volume level of phone ringer.\ +\ +When Display is enabled, a popup will show the new level.\ +\ +When Sound is enabled, a tone will sound at the new volume level.\ +\ +If you want to put your phone in vibrate or silent mode, use action +Audio / Silent Mode, not this.\ +\ +Note: on some devices Notification and Ringer volume are linked, +changing one will change the other. There may be an Android setting for +controlling that behaviour. + +#### Rotate Image + +Rotate the image currently in the image store.\ +\ +See also: Load Image. + +#### Run SL4A Script + +Run the named Scripting Layer for Android (SL4A) script.\ +\ +Every file in /sdcard/sl4a/scripts is expected to be a script.\ +\ +More information: http://code.google.com/p/android-scripting/.\ +\ +Passed Variables is a comma-separated list of variables to pass in the +intent which starts the script. Their values \*at time of launch\* can +be accessed from the script by looking at the received intent. + +#### Run Shell + +Run a system shell command under linux.\ +\ +If Timeout is 0, the command will never time-out.\ +\ +Store Output In is a variable name for the output (stdout) of the +command.\ +\ +Similarly, Store Errors In is for error output (stderr).\ +\ +A result code of 256 indicates a technical failure executing the +command, 257 indicates that the specified Timeout value was exceeded, +258 indicates the process was interrupted.\ +\ +Any non-zero result code will cause the task to stop, unless Continue On +Error is checked, otherwise the result code will be stored in %err. + +#### SMS Backup+ + +Info: https://github.com/jberkel/sms-backup-plus\ +\ +Minimal version 1.3.4. + +#### SQL Query + +Query an SQL database in a file or URI.\ +\ +In Raw mode, the Query must be entered as a full SQL statement.\ +\ +In Table URI mode the URI refers to a specific table rather than a DB; +an example is content://com.android.contacts/groups.\ +\ +In both Formatted modes, SQL directives (SELECT, WHERE etc) should be +ommitted.\ +\ +Selection refers to the WHERE directive (\'column \> 5\', \'column = +?\')\ +\ +Selection Args specifies content that fills each ? in Selection in the +order they appear.\ +\ +The result rows of the query are stored in the specified array with a +row at each index. The columns within each row are separated by the +Output Column Divider.\ +\ +Null DB values are represented as , BLOBs as , problems with \\ +\ +When making several transactions on a DB on external storage or which +needs root to access, it will be much more efficient to first move the +DB file to internal storage (Move File action) and operate on it there.\ +\ +In Raw mode, only the following directives requiring writeable DB access +are supported: INSERT INTO, UPDATE, CREATE TABLE, DELETE FROM, ALTER +TABLE. + +#### Save Image + +Write the image currently in the image store to a file.\ +\ +The file extension will only be respected for JPEG and WEBP (if +available on the device); all other extensions will result in PNG +output.\ +\ +Higher Image Quality values will also result in greater file size and +more chance of running out of memory. Image Quality is not relevant for +PNG.\ +\ +See also: Load Image. + +#### Say + +Synthesize the given Text into speech.\ +\ +Engine:Voice specifies the speech engine and voice/language to use. +*default:en* specifies the default engine and English voice.\ +Stream/File specifies where the sound should go. Stream specifies a +sound channel, File specifies a location on the SD card; the synthesized +speech is stored in WAV format.\ +\ +Network: use network synthesis, if supported by the current +engine/voice. This may result in better quality.\ +\ +Continue Task Immediately: if selected, Tasker will continue with the +next queued action while the speech is still ongoing. You must select +this in order to do a Shut Up action later.\ +\ +Android settings may override locale, speed and pitch. Please see the +\'Always use my settings option\' in Android\'s Text-To-Speech settings +section.\ +\ +If *Reduce Resource Usage* in Tasker Prefs / Misc is checked, the speech +engine will be shutdown after each utterance, meaning the speech will +always begin later for subsequent Say actions. + +#### [Say WaveNet](ah_say_wavenet.html) + +#### Scan Media + +Force the system to scan the SD card for new/deleted media. This can +save a lot of time removing and reinserting the physical card.\ +\ +If a file is specified, only that file is scanned.\ +If a directory is specified, all of its contents will be scanned +recursively.\ +\ +Note: repeatedly scanning the same file will not update the thumbnail in +Gallery.\ +\ +On Android 4.4+, scanning the whole card or a directory only picks up +\*new\* files and the task waits till the scan is finished. + +#### Search + +Perform a search for the specified text. + +#### Send Data SMS + +Send a binary data SMS without user interaction. The maximum length is +133 bytes.\ +\ +Multiple numbers can be specified by comma-separating them.\ +\ +The Data field must consist of a Base 64 encoded string.\ +\ +A Tasker variable contents can be encoded to Base 64 with the Variable +Convert action, or binary data loaded from a file with the File / Read +Binary action. + +#### Send Intent + +Broadcast an ordered Intent.\ +\ +This action is intended for advanced users.\ +\ +See *Intents* in the Userguide for more info. + +#### Send SMS + +Send an SMS without user interaction.\ +\ +Multiple numbers can be specified by comma-separating them.\ +\ +Email addresses are not supported.\ +\ +Store in Messaging App: whether a record will be kept of the sent SMS in +the standard messaging app (only available prior to Android 4.4).\ +\ +Success or failure can be caught by creating an Event context SMS +Success/Failure.\ +\ +Maximum length of an SMS is 140 characters. In some character encodings +that translates to 140 characters, in others to only 70 characters. + +#### Set Alarm + +Set a new alarm in the default alarm clock application.\ +\ +If Confirm is not checked no user interaction will be required.\ +\ +Note that on some devices, setting the alarm too close to the current +time may result in the alarm being set for the next day.\ +\ +Also, some devices require that a Message be stipulated. + +#### Set Clipboard + +Copy the specified text to the system clipboard.\ +\ +If Add is set, the text will be added on the end of the clipboard, +otherwise it will replace the existing clipboard text.\ +\ +This is probably most useful for storing some data from an event (e.g. +the text of an arriving SMS). Note that you can also place the clipboard +contents in an action. + +#### Set Key + +Preset the passphrase for an encryption key.\ +\ +This allows subsequent en/decryptions to take place automatically +without user interaction.\ +\ +Important: it is less secure than the Enter Key action; read the +userguide section on Encryption before use. + +#### Set Light + +Change the brightness of a light.\ +\ +Available lights will vary per-device but typically include things like +keyboard backlights, LEDs, camera flashlights, display and button +backlights.\ +\ +Despite the maximum being given as 255, many lights will only be on or +off, in which case 0 specifies off and any other number specifies on.\ +\ +Note that turning a light off is not permanent, Android may turn it on +at a later time in response to various events on the device.\ +\ +If you accidentally reduce the display backlight to 0, a reboot should +solve the problem. + +#### Set SMS App + +Set the app which is the system-default SMS app.\ +\ +A dialog will be shown to confirm the change.\ +\ +Will have no effect unless a valid app is chosen. + +#### Set Tasker Icon + +Set the icon for Tasker\'s permanent notification in the status bar.\ +\ +Lasts until the monitor service is stopped e.g. due to disabling +Tasker.\ +\ +To permanently change the icon, see Menu / Prefs / Monitor / +Notification Icon + +#### Set Tasker Pref + +Dynamically set a preference value normally configured via Menu / Prefs +in the Tasker UI.\ +\ +The changed values will have immediate effect unless the related +operation is already in progress.\ +\ +The Use Reliable Alarms preference will not cause existing alarms to be +recreated. + +#### Set Wallpaper + +Set the system (home screen) wallpaper from an SD card image file.\ +\ +JPG and PNG are supported.\ +\ +If no image is specified, the default system image is set.\ +\ +Scale: if the image is smaller in width or height than the +launcher-specified values, scale it up to those values while keeping the +aspect ratio.\ +\ +Crop: if the image dimensions (possibly after scaling) are greater than +the launcher-specified values crop it down to those dimensions. This can +be necessary to prevent Android-internal problems.\ +\ +Note that it can take more than 20 seconds for this action to take +effect. + +#### Set Widget Icon + +Change the label of the specified (existing) Task Widget on the home +screen.\ +\ +Name is the name of the Task which the widget performs (which appears on +the homescreen, unless a label has been set with Set Widget Label.\ +\ +Icon is the new icon to set. + +#### Set Widget Label + +Change the icon of the specified (existing) Task Widget on the home +screen.\ +\ +Name is the name of the Task which the widget performs (set when it was +initially created and initially used as the label).\ +\ +Label is the new home screen label for the widget.\ +\ +Note: if you want to change the label several times, you refer to the +\*original\* Task name each time, which does not change. + +#### Setup App Shortcuts + +Dynamically configure the list of app shortcuts which will show when the +Tasker icon is long-clicked in the launcher.\ +\ +If no task is specified, that slot will receive the default appearance +and functionality.\ +\ +This action is mainly of use for child apps created with Tasker.\ +\ +See also: Prefs / Action / App Shortcut Tasks. + +#### Setup Quick Setting + +Dynamically change one of Tasker\'s quick settings tiles.\ +\ +If no task name is specified, the tile will receive the default +appearance and functionality.\ +\ +The status affects the appearance of the tile in a way defined by the +system. In addition, if it is set to Disabled, the tile will not respond +to clicks.\ +\ +The effects of this action will only be visible when the tile is +manually added to the set of used tiles via the Android UI.\ +\ +See Also: Prefs / Action / Quick Settings Tasks. + +#### Share File + +Share a file with another application or device.\ +\ +If Mime Type is not specified, Tasker will attempt to deduce it.\ +\ +If Show Chooser is specified, Android will display a selection of +possible ways of sharing the file, in a dialog.\ +\ +If not specified, the chooser may be shown anyway if there is no known +default way of handling that Mime Type.\ +\ +Some Android versions may ignore Chooser Title. + +#### Show Alarms + +Bring up a screen showing the configured system alarms. + +#### Show Scene + +Display a scene, creating it first if necessary.\ +\ +All Overlays are displayed over the current application and persist +until hidden or destroyed.\ +\ +Blocking overlays only block touches on the part of the screen they +cover.\ +\ +Non-blocking Overlays are also displayed over the Keyguard.\ +\ +Dialogs are little popup windows which take all user input while they +are displayed and can be dismissed with the Back key.\ +\ +Activities are standard Android app views.\ +\ +Offsets are percentages of the screen size with in the range 0-200, +(0=100% left, 100=centre, 200=100% right).\ +\ +Animation is only relevant for non-overlay scenes and when animations +are enabled in Android settings.\ +\ +See also: Scenes in the Userguide. + +#### Shut Up + +Stop speech initiated from a previous Say or Say To File action.\ +\ +Note: you must select Continue Task Immediately in the Say action to be +able to use Shut Up, otherwise Tasker will not get to the Shut Up action +until the speech has finished anyway. + +#### Silence Ringer + +During an incoming call, immediately stop the ringsound and/or +vibration.\ +\ +This is temporary; the ringer will still sound on the next incoming +call. + +#### Silent Mode + +Android 5.0: toggles vibrate mode on or off.\ +\ +Prior Android versions: in silent mode, all sounds except media and +alarm are surpressed by the system (without having their volume settings +changed). With Vibrate, the phone will vibrate on an incoming call.\ +\ +This setting overrides the Ringer Vibrate setting. + +#### SleepBot + +Info:\ +\ +http://wiki.mysleepbot.com + +#### Sound Effects + +Whether to enable or disable system sounds like clicks on icons.\ +\ +See also: Sound/System Volume setting. + +#### Speakerphone + +Whether the speakerphone is on or off.\ +\ +Note: this will only have any effect when a call has already started, +but you could use it with e.g. a Phone Offhook event if you want every +incoming call on speakerphone. + +#### Start System Timer + +Start a system or 3rd party countdown timer.\ +\ +When Show UI is selected the UI of the timer app will be displayed, +otherwise probably only a notification will be shown.\ +\ +Only available from Android 4.3.\ +\ +This action has no relation to Tasker\'s countdown timer widgets. + +#### Status Bar + +Expand or collapse the system status bar.\ +\ +On some devices Tasker\'s Accessibility Service will need to be enabled +in Android settings. + +#### Stay On + +Whether to prevent the screen going off while a power supply is +present.\ +\ +The screen will still dim a few seconds before Screen Timeout is +reached. + +#### Stop + +Stop execution of one or more tasks after any currently running action +has finished.\ +\ +If a task is specified, then **all** tasks with the same name currently +executing are stopped.\ +\ +If no task is specified, the current task is stopped (but **not** other +tasks with the same name).\ +\ +If With Error is checked, the task(s) are marked as finished due to an +error.\ +\ +Note: to stop a different task will often require that it has a lower +priority than the task with the Stop action, since otherwise the Stop +action will perhaps never be executed.\ +\ +Currently running actions in a different task will not be interupted by +a Stop action, with the exception of Play Ringtone and a non-root Run +Shell. + +#### Stop Location + +Stop tracking a location source which was previously initiated by Get +Location.\ +\ +This is only necessary if the Keep Tracking parameter is checked in Get +Location. + +#### System Lock + +Turn off the display and engage the keyguard. + +#### System Volume + +Volume level of system sounds.\ +\ +Setting to 0 will mute system sounds.\ +\ +When Display is enabled, a popup will show the new level.\ +\ +When Sound is enabled, a tone will sound at the new volume level.\ +\ +Note: System Sounds must also be enabled if required. + +#### Take Call + +Silence the ringer and pick up the phone, if it\'s ringing. + +#### Take Photo + +Take a photo. The current activity will be interrupted for a couple of +seconds.\ +\ +If Discreet is checked, there will be no visible or audible sign of the +picture being taken, and the device will not turn on if it is already +off (except on Eclair devices).\ +\ +Without Discreet, a small delay allows time for aiming.\ +\ +Insert in Gallery: immediately insert a thumbnail in the Gallery +application, otherwise it will not appear until the next time the SD +card is scanned.\ +\ +Naming Sequence: Series: photo names have an index number attached which +increases with each one taken. Chronological: the date and time is +attached to the filename.\ +\ +Photos are in JPG format and stored in /sdcard/dcim/Tasker/. You should +not attach the .jpg affix when specifying the filename prefix.\ +\ +See also: Menu / Prefs / Action / Camera Delay. + +#### Take Screenshot + +Take a screenshot of the phones current display.\ +\ +Writing to external storage is not supported. + +#### TeslaLED + +Use the camera flash as a torch.\ +\ +More info:\ +\ +http://teslacoilsw.com/teslaled\ +\ +Please reward the developer by choosing the Donate version!\ +\ +See Also: Alert / Torch. + +#### Test App + +Test some aspect of an application.\ +\ +A failed test will result in the specified result variable being +cleared.\ +\ +Calendar tests: require the time in seconds since the epoch as Data +(e.g. use %TIMES, or use the Variable Convert action to convert a +date/time into seconds first) and are entered in an array (%var1, %var2 +etc), not a plain value, because there may be multiple events at the +time specified. + +#### Test Display + +Test an attribute of the display.\ +\ +AutoRotate: on or off\ +\ +Orientation: portrait or landscape.\ +\ +Resolution/DPI: depends on current orientation of display. + +#### Test Element + +Test some property of the specified scene element e.g. it\'s position +within the scene.\ +\ +The scene must have been created first and in some cases already be +displayed.\ +\ +Not all tests apply to all elements. + +#### Test File + +Test an attribute of a file and put the result in a variable.\ +\ +A failed test will result in the specified result variable being +cleared.\ +\ +Parent Dir: the parent directory of the given file, note that it may not +actually exist.\ +Size: file size in bytes, or for directories number of children.\ +Modification time: the modification time of a directory is the time a +file was last added or deleted from them.\ +Type: either **file** or **dir**. + +#### Test Media + +Test some aspect of a media carrier or player.\ +\ +Music Playing Position: applies only to tracks started by Tasker via the +Music Play action.\ +\ +Note: a failed test will result in the specified result variable being +cleared. + +#### Test Net + +Test a network attribute.\ +\ +Possible Connection Types are **none, mobile, wifi, mms, supl, dun, +hipri, wimax, bluetooth, dummy, ethernet**, and **vpn**.\ +Mobile Data and Wifi Hidden are **yes** or **no**.\ +\ +BT Paired Addresses is a comma-separated list of the bluetooth devices +this device is paired with. The other BT tests need a name or address to +test.\ +\ +BT Device Connected may require Tasker to be enabled when the device +connects (for some device types).\ +Bluetooth must be enabled for all BT tests. + +#### Test Phone + +Test something phone related.\ +\ +\ +\ +A failed test will result in the specified result variable being +cleared.\ +\ +All tests require the phone number of the contact as Data. + +#### Test Scene + +Test an attribute of the specified scene and store the result in the +specified variable.\ +\ +Possible status values are\ +\ +uncreated, hidden, visible, background (shown but currently not on +screen)\ +\ +Offsets are percentages from -100 to 100, with 0 being display centre.\ +\ +If the scene does not exist the specified variable will be cleared. + +#### Test System + +Test an attribute of the operating system.\ +\ +Android ID: 64 bit hex value which should be constant for the life of +the device.\ +\ +UserID: the user ID of the current active (foreground) user, only +available on Android 4.2+. + +#### Test Tasker + +Test some aspect of Tasker\'s configuration.\ +\ +The Global Var, Local Var, Profile, Scene and Task test types store +their results as an array (%var1, %var2 etc).\ +\ +The Global Var type doesn\'t include built-in variables.\ +\ +The Profile and Task test types only list **named** profiles or tasks. + +#### Test Variable + +Test a variable attribute. + +#### Timer Widget Control + +Control the operation of a previously-created Task Timer widget.\ +\ +End: cause the timer to finish. The associated task will execute if the +timer was previously running.\ +\ +Resume: resume (or start, if not paused)) the countdown.\ +\ +Reset: stop the countdown and set it to it\'s initial value.\ +\ +Update: refresh the display of the remaining time, not usually +necessary. + +#### Timer Widget Set + +Set the period of a previously-created Task Timer widget.\ +\ +The elapsed time is set to 0.\ +\ +If the timer was already running, it will continue to do so. + +#### Toggle Split Screen + +Toggle whether the current app is in split screen mode or not. + +#### Torch + +Hold the camera flashlight on.\ +\ +May not work on all devices.\ +\ +If it gets stuck on, just turn the device off.\ +\ +See Also: 3rd Party / TeslaLED. + +#### Turn On + +Restart the system display timeout timer. If the display is off, it will +be turned on. + +#### Type + +Simulate typing of text.\ +\ +Only available on a rooted device.\ +\ +Accented characters currently do not work.\ +\ +USB Debugging probably needs to be enabled in Android\'s Developer +Settings. + +#### USB Tether + +Turn on sharing of the device\'ss Internet connection via USB cable.\ +\ +On some devices, you may need to enable the USB tether once in Android +settings before Tasker will be able to do it. + +#### UnZip + +Decompress the specified zip archive file on the SD card.\ +\ +You do not need to add .zip on the end of the filename.\ +\ +Specify Delete Zip to delete the zip file if the compression succeeds. + +#### Variable Add + +Increase the value of the variable Name.\ +\ +The value is increased by the integer Value.\ +\ +If the variable does not contain a numeric value (e.g. 3) this action +has no effect and a warning will be flashed.\ +\ +If the variable does not exist, it will first be created with a value of +0.\ +\ +If a Wrap Around is not zero, then when the final result is equal to or +greater than the Wrap Around value, it will wrap back to 0 e.g. with +Wrap Around 5, 2 + 4 = 1.\ +\ +See the section on Conditions and Loops in the Userguide for more +information.\ +\ +Use action Variable Set for non-integer addition. + +#### Variable Clear + +Remove the stored value for the user-variable Name.\ +\ +If no Name is specified, all user-variables are cleared.\ +\ +If Pattern Matching is specified, all variables which match the pattern +are cleared (see Pattern Matching in the Userguide). + +#### Variable Convert + +Convert the specified variable\'s value from one unit to another.\ +\ +If a variable is specified for Store Result In, the new value is stored +there and the original variable will not be changed.\ +\ +If the conversion fails, no values will be unchanged.\ +\ +Notes on particular conversions:\ +\ +Date Time to Seconds\ +\* date and time must be separated by whitespace e.g. 20110304 11.32\ +\* date can be in YYYYMMDD format or xx-yy-zz, in which case the +positions of day, month and year are determined by Android preferences\ +\* if time is ommitted it is assumed to be 00:00\ +\* time must be in 24hr format\ +\* individual components of date and time can also be separated by a +colon, slash etc.\ +\ +Bytes\ +\*Megabyte and Gigabyte conversions are human-readable rather than +precise. + +#### Variable Join + +Join all the values in the array %ARR into a single simple variable with +the given Joiner.\ +\ +Example: if %VAR1=\"I\", %VAR2=\"like\" and %VAR3=\"humus\", then after +the action Join/%VAR/;/Yes there will be a single variable %VAR with the +value \"I;like;humus\".\ +\ +Any missing indices in the array will be completely skipped. + +#### Variable Query + +Ask the user for a value via a popup dialog and assign it to the +specified variable.\ +\ +Tip: if you specify the same variable for the Default parameter, your +last input will be automatically filled in. + +#### Variable Randomize + +Set the variable Name to a random integer value between Min and Max +(inclusive; the number could be Min or Max). + +#### Variable Search Replace + +Find parts of a variable which match a regular expression (regex) and +optionally replace them with something else.\ +\ +Store Matches In specifies an array variable in which each successive +part of the Variable contents which matches the **whole** Search +parameter is stored.\ +\ +Replace With specifies what each matching part of the variable should be +replaced with.\ +\ +See Pattern Matching in the Userguide for more info. + +#### Variable Section + +Select a particular section of a variable and throw away the rest.\ +\ +If Adapt To Fit is checked, the specified Length is changed, if it is +too long, so that the selected section ends at the end of the original +variable contents. + +#### Variable Set + +Set the variable Name to the value To.\ +\ +Name can be any desired string, however it\'s advisable to make it a +sequence that does not commonly occur in text otherwise it will match at +unexpected times.\ +\ +Names all in lower-case are *local* variables which are only visible in +the current task.\ +\ +If Recurse Variables is checked, all variables mentioned in the To +parameter will be repeatedly replaced until there are no variable names +left, otherwise only one round of variable replacement will take place.\ +\ +If Append is checked, To is added to the existing value of the +variable.\ +\ +If Do Maths is checked then at the time of assignment the value of To +will be evaluated as a mathematical expression.\ +\ +e.g.\ +\ +Name: %FROG\ +\ +To: %VOLC + 1\ +\ +Assuming %VOLC is 8, if Do Maths is checked, %FROG will get the value +\'9\', otherwise it will get the value \'8 + 1\'.\ +\ +If To cannot be numerically evaluated (e.g. it is \'cat + 3\') then the +current task will terminate.\ +\ +See Also: Variables section in the Userguide. + +#### Variable Split + +Split the value of the given variable into several sub-variables.\ +\ +Each time Splitter is encountered in the variable value, a new variable +is made with name %VARX.\ +\ +If Delete Base is selected, the original variable is removed after the +split.\ +\ +Example: %VAR contains \"I;like;humus\". After the action +Split/%VAR/;/Yes %VAR is replaced with 3 variables %VAR1, %VAR2 and +%VAR3 containtin \"I\", \"like\" and \"humus\". + +#### Variable Subtract + +Decrease the value of the variable Name.\ +\ +The value is decreased by the integer By.\ +\ +If the variable does not contain a numeric value (e.g. 3) this action +has no effect and a warning will be flashed.\ +\ +If the variable does not exist, it will first be created with a value of +0.\ +\ +If the Wrap Around parameter is set and the result is below zero, it +will wrap back to the Wrap Around value.\ +\ +See the section on Conditions and Loops in the Userguide for more +information.\ +\ +Use action Variable Set for non-integer subtraction. + +#### Vibrate + +Activate the device\'s vibrator.\ +\ +The specified time is in milliseconds i.e. to vibrate for one second +enter 1000, to vibrate for half a second enter 500. + +#### Vibrate On Notify + +Whether to vibrate with a system notification.\ +\ +Note: if you are going to use Tasker for this, it\'s probably best not +to mix it with other methods of controlling the setting.\ +\ +See also: Notification Volume. + +#### Vibrate On Ringer + +Whether to vibrate on an incoming call.\ +\ +You\'re probably really looking for the action Audio / Silent Mode if +you want to put your phone in vibrate or silent mode.\ +\ +Note: if silent/vibrate mode is engaged, this setting is overridden.\ +\ +Note: if you are going to use Tasker for this, it\'s probably best not +to mix it with other methods of controlling the setting.\ +\ +See also: Ringer Volume. + +#### Vibrate Pattern + +Activate the device\'s vibrator in a pattern.\ +\ +Enter a comma-separated list of numbers. The 1st one is how long to be +silent for, the 2nd one is how long to vibrate for and then +alternating.\ +\ +Times are in milliseconds i.e. to vibrate for one second enter 1000, to +vibrate for half a second enter 500.\ +\ +0 values are disallowed, excepting for the first value. + +#### Voice Command + +Run the system-default application for processing voice commands.\ +\ +Note: unlike the Get Voice action, the calling task will not wait for +the voice command to be processed. + +#### Wait + +Stop executing the current Task for the specified amount of time.\ +\ +If another task becomes queued during the wait, the wait could end up +being much longer than expected, depending on the other task\'s priority +and actions. + +#### Wait Until + +Stop executing the current Task until the condition is met. Wait +\*maximally\* the specified time between checks. The actual time between +checks will vary because Tasker will opportunistically retest the +condition at times when battery life will be unaffected.\ +\ +Note: a very small wait period might have battery life implications, in +general it should be as large as is acceptable. + +#### WiFi + +Whether the WiFi radio is enabled or disabled.\ +\ +This action is ignored when Airplane Mode is on prior to Android 2.0. It +also has no effect when a Wifi Tether (Hotspot) is enabled.\ +\ +Note: it\'s not usually advisable to use the Toggle setting when also +using a Wifi Near state with Enable Wifi checked, since the action will +then have different effects dependent on whether wifi has already been +auto-enabled for a wifi scan or not. + +#### WiFi Net + +Change the wifi network connection status.\ +\ +Reassociate: reconnect even if already connected.\ +\ +Force: try to carry out the action even if the network status that +Android reports is incompatible e.g. disconnect even if Android reports +already disconnected.\ +\ +Report Failure: flash a short error message if the action fails. Note +that Android might not e.g. report a disconnect failure if there is +currently no connection. + +#### WiFi Sleep + +The policy for deciding when Wifi should go to sleep. When Wifi goes to +sleep, the device will switch to using the mobile data connection.\ +\ +\\*Default*: depends on the Android version. Will be something like +\'When the screen goes off\' or \'After 15 Minutes\'.\ +\ +*Never While Plugged*: When Screen Off if on battery power. + +#### WiFi Tether + +Turn on sharing of the device\'s Internet connection via wifi.\ +\ +If Wifi was on, it will be turned off, you will need to enable it +manually after the tether. + +#### WiMax + +Whether the Wimax radio is enabled or disabled. + +#### WidgetLocker + +Info:\ +\ +http://teslacoilsw.com/widgetlocker\ +\ +Suspend: Keep WidgetLocker enabled/running, but prevent it from +activating on screen off. + +#### Write Binary + +Write base 64 data from a variable to binary format in a file.\ +\ +See Also: actions Read Binary, Variable Convert + +#### Write File + +Write the specified text to the specified SD card file.\ +\ +If Append is checked, the text is added to the end of the file without +changing the existing contents.\ +\ +A newline character is always appended to the text. + +#### Zip + +Compress the specified file(s) (or directory(ies), recursively) on the +SD card to a zip archive,\ +\ +Multiple Files can be specified by separating them with a newline.\ +\ +If only a single file is specified and no Output Path is give, the +Output Path will be the same file with a .zip extension.\ +\ +Level is the compression level to use. Higher values will take longer to +compress but use less space.\ +\ +Specify Delete Orig to delete the original file if the compression +succeeds. + +#### Zoom Alpha + +Set the alpha level of the specified Zoom image element.\ +\ +0 is invisible, 255 is fully visible. + +#### Zoom Colour + +Set the Colour and End Colour of the specified Zoom oval or rectangle +element.\ +\ +End Colour is only used if a shading has been specified for the element +in Zoom. + +#### Zoom Image + +Set the image source of the specified Zoom image element. + +#### Zoom Position + +Set the X and Y coordinates of the specified Zoom element, relative to +the top-left corner of its widget. + +#### Zoom Size + +Set the width and height of the specified Zoom element. + +#### Zoom State + +Set the state of the specified Zoom element, which must be a Switcher or +(more unusually) an AutoSwitcher. + +#### Zoom Text + +Set the text or label of the specified Zoom text or button element. + +#### Zoom Text Colour + +Set the text or label colour of the specified Zoom text or button +element. + +#### Zoom Text Size + +Set the text or label size of the specified Zoom text or button element. + +#### Zoom Visibility + +Show or hide the specified Zoom element. diff --git a/en/help/ah_input_method_select.md b/en/help/ah_input_method_select.md new file mode 100644 index 0000000..fe85635 --- /dev/null +++ b/en/help/ah_input_method_select.md @@ -0,0 +1,9 @@ +### Input Method Select + +Show the Android Input Method picker dialog.\ +\ +If some methods you have installed are not shown, make sure they are +enabled in Android settings.\ +\ +Note: unfortunately Android does not allow changing of the input method +without user iteraction. diff --git a/en/help/ah_interrupt_mode.md b/en/help/ah_interrupt_mode.md new file mode 100644 index 0000000..33e0a53 --- /dev/null +++ b/en/help/ah_interrupt_mode.md @@ -0,0 +1,14 @@ +### Interrupt Mode + +Sets the interruption mode for the device i.e. whether notifications, +alarms etc should interrupt the current activity.\ +\ +This action requires that Tasker\'s notification access service is +running, see Android\'s Sound And Notification settings.\ +\ +Note that changes to Ringer, DTMF, Notification or System volume may +knock the system out of mode \'none\'.\ +\ +Android 5.0+ only.\ +\ +See Also: variable %INTERRUPT. diff --git a/en/help/ah_java_func.md b/en/help/ah_java_func.md new file mode 100644 index 0000000..6755837 --- /dev/null +++ b/en/help/ah_java_func.md @@ -0,0 +1,5 @@ +### Java Function + +Execute a native Java function.\ +\ +See Java in the userguide. diff --git a/en/help/ah_java_object.md b/en/help/ah_java_object.md new file mode 100644 index 0000000..ba05cfe --- /dev/null +++ b/en/help/ah_java_object.md @@ -0,0 +1,6 @@ +### Java Object + +Manipulate in some way a Java object previously created by the action +Java Function.\ +\ +See Java in the userguide. diff --git a/en/help/ah_javascript.md b/en/help/ah_javascript.md new file mode 100644 index 0000000..221c678 --- /dev/null +++ b/en/help/ah_javascript.md @@ -0,0 +1,10 @@ +### JavaScript + +Run JavaScript from a file and wait till it finishes.\ +\ +Most Tasker actions are available via function calls.\ +\ +Warning: code in the file will have access to local device files, data +stores etc\ +\ +See the JavaScript section of the Userguide for more information. diff --git a/en/help/ah_javascriptlet.md b/en/help/ah_javascriptlet.md new file mode 100644 index 0000000..d41b72e --- /dev/null +++ b/en/help/ah_javascriptlet.md @@ -0,0 +1,7 @@ +### JavaScriptlet + +Run a piece of JavaScript and wait till it finishes.\ +\ +Most Tasker actions are available via function calls.\ +\ +See the JavaScript section of the Userguide for more information. diff --git a/en/help/ah_jd_data.md b/en/help/ah_jd_data.md new file mode 100644 index 0000000..4701b95 --- /dev/null +++ b/en/help/ah_jd_data.md @@ -0,0 +1,7 @@ +### Juice Defender Data + +Use the Juice Defender app to change Mobile Data APNs (in order to +change mobile data connectivity).\ +\ +Juice Defender Control: Juice Defender decides whether to turn the APNs +on or off. diff --git a/en/help/ah_jd_status.md b/en/help/ah_jd_status.md new file mode 100644 index 0000000..8f90506 --- /dev/null +++ b/en/help/ah_jd_status.md @@ -0,0 +1,4 @@ +### Juice Defender Status + +Turn the Juice Defender app on or off. Requires JD version 3.3.2 or +higher. diff --git a/en/help/ah_join_variable.md b/en/help/ah_join_variable.md new file mode 100644 index 0000000..9c3d22a --- /dev/null +++ b/en/help/ah_join_variable.md @@ -0,0 +1,10 @@ +### Variable Join + +Join all the values in the array %ARR into a single simple variable with +the given Joiner.\ +\ +Example: if %VAR1=\"I\", %VAR2=\"like\" and %VAR3=\"humus\", then after +the action Join/%VAR/;/Yes there will be a single variable %VAR with the +value \"I;like;humus\".\ +\ +Any missing indices in the array will be completely skipped. diff --git a/en/help/ah_keyboard.md b/en/help/ah_keyboard.md new file mode 100644 index 0000000..01082e7 --- /dev/null +++ b/en/help/ah_keyboard.md @@ -0,0 +1,62 @@ +### Keyboard + +Make Tasker send keyboard presses to whatever app is in the foreground. + +::: {.inputs} +::: {.input} +::: {.title} +Input +::: + +::: {.text} +Comma separated list of key presses. +::: + +::: {.text} +The following formats are allowed for each key press: +::: + +- **write(Some Text)**: will directly insert the text (in this case + **Some Text**) in a text box but only if a text box in an app has + focus +- **replace(Some Text)**: will replace all the text in the focused + text box with the selected text (in this case **Some Text**) +- **wait(400)**: will wait for the time (in this case **400 ms**) + before moving on to the next key press +- **select(Some Text)**: will select the first occurrence of the text + (in this case **Some Text**) in a text box but only if a text box in + an app has focus +- **selectPositions(1,10)**: will select the text in a focused text + box starting and ending in the selected positions (in this case + **start in 1** and **end in 10**) +- **cursor(1)**: will set the cursor position (in this case **position + 1**) in a focused text box. +- **selectAll()**: will select all the text in a focused text box. +- **delete(Some Text)**: will delete the first occurrence of the text + (in this case **Some Text**) in a text box but only if a text box in + an app has focus +- **deleteAll()**: will delete all the text in a focused text box. +- **\'29\'**: will use the key code between single quotes (in this + case **29**, which corresponds to the **A** keycode) directly. Check + out all the standard keycodes + [here](https://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_0). + Look for the **Constant Value** value of all the constants that + start with **KEYCODE\_**. +- **Tab**: if none of the above special characters surround the key + press, the keycode corresponding to the text will be sent (in this + case, the **Tab** key will be sent). You can find a list of these by + using the magnifying glass near the **Input** field in this action. + +::: {.title} +Modifiers +::: + +::: {.text} +The following modifiers are allowed for each key press (applies to +custom key codes and direct key): +::: + +- **Control+Shift+C**: will press **C**, with the **Control** and + **Shift** modifiers +::: +::: diff --git a/en/help/ah_keyguard.md b/en/help/ah_keyguard.md new file mode 100644 index 0000000..34498c2 --- /dev/null +++ b/en/help/ah_keyguard.md @@ -0,0 +1,23 @@ +### Keyguard + +Whether the keyguard is enabled or disabled.\ +\ +The keyguard is the dialog requiring some sort of unlock action when the +device is turned on.\ +\ +Note: while keyguard is disabled, your SIM pin unlock screen may +disappear after a few seconds after a reboot.\ +\ +WARNING: while keyguard is disabled, the \'lock pattern\' mechanism is +also disabled, so your phone is unprotected if it is lost. There is also +the possibility of interference with other applications that manipulate +the keyguard.\ +\ +On Android 2.2+, this action should probably only be used when the +device is on and unlocked, unless the unlock method in Android settings +is set to None.\ +\ +Side-effect: coming out of Airplane Mode with Keyguard disabled may +leave the SIM unrecognized until Keyguard is toggled again.\ +\ +See also: action Keyguard Pattern. diff --git a/en/help/ah_keyguard_pattern.md b/en/help/ah_keyguard_pattern.md new file mode 100644 index 0000000..8db9793 --- /dev/null +++ b/en/help/ah_keyguard_pattern.md @@ -0,0 +1,10 @@ +### Keyguard Pattern + +Control the lock pattern displayed by the Android keyguard. If the +keyguard is disabled, no pattern is displayed even if the pattern is +enabled.\ +\ +WARNING: behaviour is unknown if you enable the lock pattern without +having first entered a pattern in Android settings.\ +\ +See also: action Keyguard. diff --git a/en/help/ah_kill_app.md b/en/help/ah_kill_app.md new file mode 100644 index 0000000..444ea35 --- /dev/null +++ b/en/help/ah_kill_app.md @@ -0,0 +1,13 @@ +### Kill App + +Stop the specified application.\ +\ +Android 2.2+: restarts an application\'s background services only.\ +\ +For other Android versions or if Use Root is selected: kills a running +application and all its background services, notifications, alarms etc +Note that Use Root can cause future malfunctioning of the target app if +it e.g. is killed while writing data.\ +\ +Tip: may be more effective if the target app is not in the foreground, +try using action Go Home first. diff --git a/en/help/ah_list_apps.md b/en/help/ah_list_apps.md new file mode 100644 index 0000000..7b4c36b --- /dev/null +++ b/en/help/ah_list_apps.md @@ -0,0 +1,13 @@ +### List Apps + +List installed packages, apps and components in the specified array +variable.\ +\ +Packages correspond to APK files.\ +\ +Each package can contain multiple apps (though usually there is only +one) and multiple components of each of the four types.\ +\ +Only **enabled** and **exported** apps and components are listed.\ +\ +Apps and components are listed in the format PkgName:ClassName. diff --git a/en/help/ah_list_files.md b/en/help/ah_list_files.md new file mode 100644 index 0000000..1881290 --- /dev/null +++ b/en/help/ah_list_files.md @@ -0,0 +1,13 @@ +### List Files + +List the files contained in a specified directory in alphabetical +order.\ +\ +If a Match is specified, only filename which match that pattern are +included.\ +\ +The results are stored in the specified variable. The first file path is +stored in %VAR1, the second in %VAR2 etc\ +\ +Note: when Use Root is selected, it may be necessary to specify an +absolute path (starts with /) for Dir. diff --git a/en/help/ah_load_app.md b/en/help/ah_load_app.md new file mode 100644 index 0000000..377ab91 --- /dev/null +++ b/en/help/ah_load_app.md @@ -0,0 +1,20 @@ +### Launch App + +Launch the specified application.\ +\ +If Data is specified, it is passed to the application when launched. Not +all applications examine the data field, however.\ +\ +If *Exclude From Recent Apps* is checked, the application will not +appear in the recent apps list (usually accessed by long-clicking home +in the Android launcher), unless it was already in the list.\ +\ +If Always Use New Copy is not checked, any existing copy of the app to +be launched instead of a new copy.\ +\ +To change the application once you\'ve selected one, tap on the +application icon.\ +\ +When selecting an app, you can long-click to select a sub-activity of +the app. Note that often the app is not expecting a sub-activity to be +launched directly and may crash. diff --git a/en/help/ah_load_image.md b/en/help/ah_load_image.md new file mode 100644 index 0000000..fbec1a9 --- /dev/null +++ b/en/help/ah_load_image.md @@ -0,0 +1,21 @@ +### Load Image + +Load an image into the image store, overwriting any image there +previously.\ +\ +The image store is an image held in the device memory on which all +actions from the Image category act.\ +\ +Once finished manipulating an image, it can be saved to a file with the +Save Image action.\ +\ +However, it could also be used to e.g. directly set an image element in +a scene.\ +\ +Max Width Or Height: if specified, the image is scaled as it is loaded +so that no dimension is more than the specified number of pixels. Useful +when memory is an issue.\ +\ +Respect EXIF Orientation: if the specified image is JPG format, it will +be automatically adjusted after loading dependent on the EXIF meta-data +tag, if present. diff --git a/en/help/ah_load_last_app.md b/en/help/ah_load_last_app.md new file mode 100644 index 0000000..13bbcfc --- /dev/null +++ b/en/help/ah_load_last_app.md @@ -0,0 +1,3 @@ +### Load Last App + +Launch the previous foreground application. diff --git a/en/help/ah_location_mode.md b/en/help/ah_location_mode.md new file mode 100644 index 0000000..121b756 --- /dev/null +++ b/en/help/ah_location_mode.md @@ -0,0 +1,18 @@ +### Location Mode + +Set the type of Location tracking on your device + +- **Off**: Turn location tracking off +- **Device Only**: Use GPS and device sensors to determine location +- **Battery Saving**: Use Wi-Fi, Bluetooth, or mobile networks to + determine location +- **High Accuracy**: Use GPS, Wi-Fi, Bluetooth, or mobile networks to + determine location + +### This is a Secure Setting + +To use this setting, Tasker needs to be granted permission to change +secure settings on your device + +Please follow the [instructions](ah_secure_setting_grant.html) to learn +how to grant the permission. diff --git a/en/help/ah_lock.md b/en/help/ah_lock.md new file mode 100644 index 0000000..71342e3 --- /dev/null +++ b/en/help/ah_lock.md @@ -0,0 +1,22 @@ +### Lock + +Show a lock screen.\ +\ +To continue, the specified code must be entered. Allow Cancel determines +whether a Cancel button will be shown or not. If Cancel is pressed the +user is taken back to the home screen.\ +\ +If Remember Till Off is selected, a correctly entered password will be +remembered and reused until the device enters sleep mode.\ +\ +A common use is to lock particular applications.\ +\ +Consider locking this profile. That will prevent circumvention of this +action\'s lock by changes within Tasker.\ +\ +Also consider attaching a Lock action to any application on your system +which would allow removal of Tasker e.g. system Settings.\ +\ +In any case, this action should not considered as a replacement for the +system Keyguard lock, as it is less secure. A reboot will remove the +lock screen, for instance. diff --git a/en/help/ah_make_dir.md b/en/help/ah_make_dir.md new file mode 100644 index 0000000..2711680 --- /dev/null +++ b/en/help/ah_make_dir.md @@ -0,0 +1,8 @@ +### Create Directory + +Create an SD card directory.\ +\ +If Create All is specified, all of the directories above the specified +one will be created if necessary.\ +\ +The path starts in the root directory of the SD card. diff --git a/en/help/ah_make_phonecall.md b/en/help/ah_make_phonecall.md new file mode 100644 index 0000000..fbeffd6 --- /dev/null +++ b/en/help/ah_make_phonecall.md @@ -0,0 +1,6 @@ +### Call + +Bring up the dialer screen with the specified phone number filled in.\ +\ +Commas and Semi-Colons terminate the number currently, this is filed as +an Android bug. diff --git a/en/help/ah_menu.md b/en/help/ah_menu.md new file mode 100644 index 0000000..dcda8d8 --- /dev/null +++ b/en/help/ah_menu.md @@ -0,0 +1,18 @@ +### Menu + +Show a selection dialog and perform a different action depending on +which item the user selects.\ +\ +The Layout parameter specifies the look of all the items. Click to edit +it.\ +\ +The Items parameter specifies the content of each item.\ +\ +The selected item label and index are available in the resulting task in +%tap\_label and %tap\_index respectively.\ +\ +If the user does not explicity select an item then when the specified +Timeout is reached the item with a checkmark will be automatically +selected.\ +\ +More info: Menu element in the Userguide. diff --git a/en/help/ah_mic_mute.md b/en/help/ah_mic_mute.md new file mode 100644 index 0000000..bb18de0 --- /dev/null +++ b/en/help/ah_mic_mute.md @@ -0,0 +1,3 @@ +### Mic Mute + +Mute the device\'s microphone. diff --git a/en/help/ah_midi_play.md b/en/help/ah_midi_play.md new file mode 100644 index 0000000..f895174 --- /dev/null +++ b/en/help/ah_midi_play.md @@ -0,0 +1,5 @@ +### MIDI Play + +Play notes on a MIDI instrument attached by USB.\ +\ +For details, see MIDI in the userguide. diff --git a/en/help/ah_mms_compose.md b/en/help/ah_mms_compose.md new file mode 100644 index 0000000..682a792 --- /dev/null +++ b/en/help/ah_mms_compose.md @@ -0,0 +1,4 @@ +### Compose MMS + +Launch an application to compose an MMS from optional predefined +elements. diff --git a/en/help/ah_mobile_data_apn.md b/en/help/ah_mobile_data_apn.md new file mode 100644 index 0000000..80d0b4f --- /dev/null +++ b/en/help/ah_mobile_data_apn.md @@ -0,0 +1,17 @@ +### APN Droid + +Enable or disable mobile data by changing APN data.\ +\ +This action requires that the application APNDroid is installed on your +device.\ +\ +It apparently does \*not\* work for CDMA phones e.g. Motorola Droid, try +the Mobile Data action instead.\ +\ +If you have trouble reconnecting after using this action, use the +\'Reset to Default\' menu item in the APNs screen of Android Settings.\ +\ +Warning: APNDroid v2.5+: the Tasker action seems \*not\* to affect the +new APNDroid data toggle. If you use Tasker with APNDroid 2.5+, it\'s +recommended that you \*disable\* the \'Use system toggle\' option in +system settings to prevent confusion. diff --git a/en/help/ah_mobile_data_direct.md b/en/help/ah_mobile_data_direct.md new file mode 100644 index 0000000..6c729bd --- /dev/null +++ b/en/help/ah_mobile_data_direct.md @@ -0,0 +1,14 @@ +### Mobile Data + +Set mobile data status without affecting incoming calls.\ +\ +This action has the disadvantage that Android may manipulate it +internally when certain things happen e.g. wifi disconnected.\ +\ +Note: this action requires that Mobile Data is intitially turned \*on\* +in Android System Settings.\ +\ +When Mobile Data is \*off\* in System Settings, this action will have no +effect.\ +\ +It has been reported that many Google apps reenable the setting. diff --git a/en/help/ah_mobile_network_mode.md b/en/help/ah_mobile_network_mode.md new file mode 100644 index 0000000..8063d55 --- /dev/null +++ b/en/help/ah_mobile_network_mode.md @@ -0,0 +1,5 @@ +### Mobile Data 2G/3G + +Setting the mode to 2G only will save power at the cost of speed.\ +\ +This action is not possible on a standard Android ROM. diff --git a/en/help/ah_morse.md b/en/help/ah_morse.md new file mode 100644 index 0000000..533b9c8 --- /dev/null +++ b/en/help/ah_morse.md @@ -0,0 +1,11 @@ +### Morse + +Play morse code representing the given Text.\ +\ +Amplitude is the percentage of maximum amplitude. The system volume +setting for the selected output stream will also affect the perceived +volume.\ +\ +Non-latin characters are not supported.\ +\ +Note: Frequency is not on a Hertz scale. diff --git a/en/help/ah_move_file.md b/en/help/ah_move_file.md new file mode 100644 index 0000000..283add9 --- /dev/null +++ b/en/help/ah_move_file.md @@ -0,0 +1,10 @@ +### Move + +Move an SD card file or directory to a new directory.\ +\ +If To specifies an existing file, it will be overwritten.\ +\ +The paths start in the root directory of the SD card.\ +\ +Note: files cannot be moved from one file system to another e.g. +internal memory to SD. A workaround is to Copy and then Delete. diff --git a/en/help/ah_music_back.md b/en/help/ah_music_back.md new file mode 100644 index 0000000..7c7288b --- /dev/null +++ b/en/help/ah_music_back.md @@ -0,0 +1,6 @@ +### Music Back + +Jump backwards in a sound file which was previously started with Play +Music.\ +\ +Jump value is in seconds. diff --git a/en/help/ah_music_forward.md b/en/help/ah_music_forward.md new file mode 100644 index 0000000..de1de18 --- /dev/null +++ b/en/help/ah_music_forward.md @@ -0,0 +1,6 @@ +### Music Skip + +Jump forward in a sound file which was previously started with Play +Music.\ +\ +Jump value is in seconds. diff --git a/en/help/ah_music_play.md b/en/help/ah_music_play.md new file mode 100644 index 0000000..bca18d4 --- /dev/null +++ b/en/help/ah_music_play.md @@ -0,0 +1,19 @@ +### Music Play + +Play a sound file from the SD card.\ +\ +File is the path to the file on the SD card e.g. Music/wow.mp3\ +\ +If Loop is selected, the playback will restart when it reaches the end +of the file.\ +\ +Start specifies how many seconds into the track to begin playing.\ +\ +You can stop the playback before it is finished with the Stop Music +action.\ +\ +You can start playback from the start by repeating the action\ +\ +Playback has been tested with 3gp, mp3 and wma formats.\ +\ +See also: variable Music Track diff --git a/en/help/ah_music_play_dir.md b/en/help/ah_music_play_dir.md new file mode 100644 index 0000000..ffcd4d7 --- /dev/null +++ b/en/help/ah_music_play_dir.md @@ -0,0 +1,16 @@ +### Music Play Dir + +Play music files from the specified SD card directory.\ +\ +If Audio Only is selected, only files with the following extensions will +be played: 3gp, mp3, wma, au, mid, midi, mp2, ogg, wav.\ +\ +If Random is selected, files will be played in random order.\ +\ +You can stop the playback before it is finished with the Stop Music +action.\ +\ +Doing the same action on the same directory will move playback to the +next file. If you want to start afresh, use Music Stop first.\ +\ +See also: variable Music Track. diff --git a/en/help/ah_music_stop.md b/en/help/ah_music_stop.md new file mode 100644 index 0000000..caf042f --- /dev/null +++ b/en/help/ah_music_stop.md @@ -0,0 +1,7 @@ +### Music Stop + +Stop playback of a sound file or directory which was previously started +with Play Music.\ +\ +If Clear Dir is specified and a directory was being played, next time +Music Play is used the playback will start from the first file. diff --git a/en/help/ah_music_volume.md b/en/help/ah_music_volume.md new file mode 100644 index 0000000..016b246 --- /dev/null +++ b/en/help/ah_music_volume.md @@ -0,0 +1,9 @@ +### Media Volume + +Volume level during media playback.\ +\ +Setting to 0 will mute music.\ +\ +When Display is enabled, a popup will show the new level.\ +\ +When Sound is enabled, a tone will sound at the new volume level. diff --git a/en/help/ah_navigation_bar.md b/en/help/ah_navigation_bar.md new file mode 100644 index 0000000..c934221 --- /dev/null +++ b/en/help/ah_navigation_bar.md @@ -0,0 +1,40 @@ +### Navigation Bar + +Change the buttons on the Android navigation bar that\'s usually at the +bottom of the screen. To bring back the default buttons, run the action +with all blank fields. + +### This is a Secure Setting + +To use this setting, Tasker needs to be granted permission to change +secure settings on your device + +Please follow the [instructions](ah_secure_setting_grant.html) to learn +how to grant the permission. + +#### Important Note + +If for some reason **System UI** crashes while using this action, use +the following adb command to reset the navigation bar: + +``` {.small} +adb shell settings delete secure sysui_nav_bar +``` + +This will make the navigation bar back to what it was and make it stop +crashing. + +If you can, re-configure the action and leave all the fields empty and +run it. That should make it reset as well. + +#### Unsupported Devices + +This action may not work on all devices. These are the ones that I\'ve +confirmed are not working correctly: + +- Some (all?) OnePlus devices +- Some (all?) LG devices +- Huawei P20 Lite +- Probably a lot (if not all) of Huawei devices + +Other devices may also not be compatible diff --git a/en/help/ah_network_access.md b/en/help/ah_network_access.md new file mode 100644 index 0000000..1683537 --- /dev/null +++ b/en/help/ah_network_access.md @@ -0,0 +1,19 @@ +### Network Access + +Deny network access to all or selected apps.\ +\ +When mode Deny is selected, all apps have network access except for +those specified.\ +\ +When mode Allow is selected, only the specified apps have access.\ +\ +Use of this action overrides and replaces the effects of any previous +use.\ +\ +Notes:\ +\* this action is implemented via a VPN local to the device and cannot +be used in combination with other VPNs.\ +\* some devices will clear the users confirmation of Tasker\'s +permission to setup a VPN after every boot\ +\* the icon which Android shows in the status bar cannot be avoided\ +\* Tasker does not examine the contents of any network packet diff --git a/en/help/ah_newsrob.md b/en/help/ah_newsrob.md new file mode 100644 index 0000000..dba918f --- /dev/null +++ b/en/help/ah_newsrob.md @@ -0,0 +1,5 @@ +### NewsRob + +Info:\ +\ +http://newsrob.com diff --git a/en/help/ah_nfc_status.md b/en/help/ah_nfc_status.md new file mode 100644 index 0000000..3882a95 --- /dev/null +++ b/en/help/ah_nfc_status.md @@ -0,0 +1,3 @@ +### NFC + +Enable or disable your NFC sensor diff --git a/en/help/ah_nfc_tag.md b/en/help/ah_nfc_tag.md new file mode 100644 index 0000000..f247c58 --- /dev/null +++ b/en/help/ah_nfc_tag.md @@ -0,0 +1,48 @@ +#### NFC Tag + +Allows you to read and/or write data from and to an NFC Tag. + +You have a list of pre-defined variables that this action will create. +These are visible in the configuration screen. + +Check out [this video +example](https://www.youtube.com/watch?v=PMbj7bRoSKI) to see this in +action. + +::: {.inputs} +::: {.input} +::: {.title} +Payload To Write +::: + +::: {.text} +Optionally allows you to write data to the tag. If you leave this empty, +data will just be read. Select different **Payload Types** and then use +the magnifying glass to help selecting a payload for the selected type. +::: +::: + +::: {.input} +::: {.title} +Payload Type +::: + +::: {.text} +Optinally set a type for the payload. If none is set, the **Text** type +will be automatically used. +::: + +::: {.text} +Different Payload Types will have different behaviours when the tag is +later scanned: +::: + +- **Text**: The system will not react to this. You\'ll have to + implement your own behaviour by using the **NFC Tag Event**. +- **Application**: The system will automatically open the selected + app, even on a device that doesn\'t have Tasker installed. +- **Uri**: The system will automatically open the selected Uri (like a + web URL for example), even on a device that doesn\'t have Tasker + installed. +::: +::: diff --git a/en/help/ah_night_mode.md b/en/help/ah_night_mode.md new file mode 100644 index 0000000..81a4157 --- /dev/null +++ b/en/help/ah_night_mode.md @@ -0,0 +1,7 @@ +### Night Mode + +Change Android\'s Night Mode setting.\ +\ +Only effective when Android\'s UI Mode is Car or Desk.\ +\ +Requires Android 2.2+ diff --git a/en/help/ah_notification.md b/en/help/ah_notification.md new file mode 100644 index 0000000..74562e7 --- /dev/null +++ b/en/help/ah_notification.md @@ -0,0 +1,71 @@ +### Notify + +Show a notification on the top bar.\ +\ +The specified Title will appear on the bar initially with the Icon.\ +\ +Notifications with a particular (non-empty) title replace existing ones +with that title.\ +\ +When the notification area is pulled down, the specified Text will be +visible.\ +\ +If Permanent is checked, the notification will not be removed by +clicking on it or pressing the Clear button. It \*can\* be removed using +the Notify Cancel action.\ +\ +A common use of creating a permanent notification is to allow permanent +quick access to e.g. a Menu Task through the Notification Bar. Specify a +task to run when the notification is clicked by creating a profile with +a Notification Click event.\ +\ +Up to 3 Actions can be specified which will appear in the notification +area. In some cases it may be necessary to slide down to reveal the +actions. Actions do not run as part of the notifying task. + +#### BETA ONLY + +::: {.inputs} +::: {.input} +::: {.title} +Category +::: + +::: {.text} +If you use Android 8 or above you have to use the new **Notification +Category** system. +::: + +::: {.text} +A notification category is a mandatory feature of notifications that +allows users to change notification features in Android Settings. +::: + +::: {.text} +The first time the **Category** field is used in a **Notify** action, +the category will be created in Android Settings with the settings +(Sound, Vibration, LED, etc) set to those that are configured in the +action. Subsequent uses of the same category will use the same settings, +even if changed in the Tasker action. +::: + +::: {.text} +To make it perfectly clear, an Android Notification Category\'s settings +can never be changed by Tasker after it\'s first created. Only you, the +user, can change those settings in the Android System Settings for +Tasker. +::: + +::: {.text} +By default Tasker will use the **User Notifications** category if the +**Category** field is not filled in. +::: + +::: {.text} +You will be warned if you create a notification without a category +because, as mentioned above, the **User Notifications** category will be +used and that category will be set up with default settings that can not +be changed by Tasker. +::: +::: +::: diff --git a/en/help/ah_notification_led.md b/en/help/ah_notification_led.md new file mode 100644 index 0000000..f8af808 --- /dev/null +++ b/en/help/ah_notification_led.md @@ -0,0 +1,26 @@ +### Notify LED + +Show a notification on the top bar and flash an LED.\ +\ +The specified title will appear on the bar initially. Notifications with +a particular (non-empty) title replace existing ones with that title.\ +\ +When the notification area is pulled down, the specified text will be +visible.\ +\ +A Number other than 0 causes that number to be included in the +notification area.\ +\ +Rate is the number of milliseconds the LED will flash on and then again +be off. It must be at least 1.\ +\ +Not all devices support all colours. Many devices will only support red +and green. In general, colours near the top of the list are more likely +to be supported.\ +\ +Some devices will only flash the LED when the device is off at the time +the notification is received.\ +\ +Up to 3 Actions can be specified which will appear in the notification +area. In some cases it may be necessary to slide down to reveal the +actions. Actions do not run as part of the notifying task. diff --git a/en/help/ah_notification_pulse.md b/en/help/ah_notification_pulse.md new file mode 100644 index 0000000..de7ac3c --- /dev/null +++ b/en/help/ah_notification_pulse.md @@ -0,0 +1,4 @@ +### Notification Pulse + +Android system setting, whether to pulse the notification light for new +notifications. diff --git a/en/help/ah_notification_settings.md b/en/help/ah_notification_settings.md new file mode 100644 index 0000000..e1ea3a9 --- /dev/null +++ b/en/help/ah_notification_settings.md @@ -0,0 +1,35 @@ +#### Notification Settings + +Allows you to open an app\'s notification settings screen. + +You can optionally provide a notification category, so that the screen +opens directly on that. + +Unfortunately it\'s not possible for Tasker to get other app\'s +notification categories. + +::: {.inputs} +::: {.input} +::: {.title} +Package +::: + +::: {.text} +The app\'s package name. If left blank, the current package name will be +used, which means that if you\'re in an App Factory app, that app\'s +package name will be used, if not Tasker\'s package name will be used. +::: +::: + +::: {.input} +::: {.title} +Category +::: + +::: {.text} +If set, will open the specific category instead of the notification +settings overview screen for the app. Only available for Android 8 or +above. +::: +::: +::: diff --git a/en/help/ah_notification_sound.md b/en/help/ah_notification_sound.md new file mode 100644 index 0000000..b2b084c --- /dev/null +++ b/en/help/ah_notification_sound.md @@ -0,0 +1,19 @@ +### Notify Sound + +Show a notification on the top bar and play a sound.\ +\ +The specified Title will appear on the bar initially. Notifications with +a particular (non-empty) title replace existing ones with that title.\ +\ +When the notification area is pulled down, the specified Text will be +visible.\ +\ +A Number other than 0 causes that number to be superimposed on the +notification icon.\ +\ +Music File specifies a file location on the sdcard e.g. music/hello.mp3. +If it\'s blank, the default notification sound will play.\ +\ +Up to 3 Actions can be specified which will appear in the notification +area. In some cases it may be necessary to slide down to reveal the +actions. diff --git a/en/help/ah_notification_vibrate.md b/en/help/ah_notification_vibrate.md new file mode 100644 index 0000000..410aad6 --- /dev/null +++ b/en/help/ah_notification_vibrate.md @@ -0,0 +1,22 @@ +### Notify Vibrate + +Show a notification on the top bar and vibrate.\ +\ +The specified Title will appear on the bar initially. Notifications with +a particular (non-empty) title replace existing ones with that title.\ +\ +When the notification area is pulled down, the specified Text will be +visible.\ +\ +A Number other than 0 causes that number to be included in the +notification area.\ +\ +Pattern: enter a comma-separated list of numbers. The 1st one is how +long to be silent for, the 2nd one how long to vibrate for and then +alternating.\ +\ +Specify no pattern to use the default pattern.\ +\ +Up to 3 Actions can be specified which will appear in the notification +area. In some cases it may be necessary to slide down to reveal the +actions Actions do not run as part of the notifying task.. diff --git a/en/help/ah_notification_volume.md b/en/help/ah_notification_volume.md new file mode 100644 index 0000000..0981cdb --- /dev/null +++ b/en/help/ah_notification_volume.md @@ -0,0 +1,13 @@ +### Notification Volume + +Volume level of notification alert.\ +\ +Setting to 0 will mute the notification sound.\ +\ +When Display is enabled, a popup will show the new level.\ +\ +When Sound is enabled, a tone will sound at the new volume level.\ +\ +Note: on some devices Notification and Ringer volume are linked, +changing one will change the other. There may be an Android setting for +controlling that behaviour. diff --git a/en/help/ah_open_map.md b/en/help/ah_open_map.md new file mode 100644 index 0000000..6ec5295 --- /dev/null +++ b/en/help/ah_open_map.md @@ -0,0 +1,17 @@ +### Open Map + +Launches Google Maps with a particular mode and location/destination.\ +\ +Exactly one of Address or Lat/Long must be specified. Address is not +valid for StreetView mode.\ +\ +Address is in the format X+Y+Z e.g. Littleton+Delaware\ +\ +Zoom is only possible with Point / StreetView and a Lat/Long +specification.\ +\ +Label is only possible with Point mode, it will show a marker with the +specified label.\ +\ +Google Maps version 3.2.1 or higher is (probably) required for +Navigation. diff --git a/en/help/ah_ping.md b/en/help/ah_ping.md new file mode 100644 index 0000000..cd3a383 --- /dev/null +++ b/en/help/ah_ping.md @@ -0,0 +1,11 @@ +### Ping + +Tests the connection and latency between you and the specified host. + +**Number** is the number of times it\'ll ping the host + +If **Number** is set to **1** the 3 result variables will have the same +value. + +If there is no internet connection or the host can\'t be reached the +action will end in an error. diff --git a/en/help/ah_play_ringtone.md b/en/help/ah_play_ringtone.md new file mode 100644 index 0000000..3f26dd1 --- /dev/null +++ b/en/help/ah_play_ringtone.md @@ -0,0 +1,13 @@ +### Play Ringtone + +Play an alarm, notification or ringer ringtone throught the specified +audio stream.\ +\ +If no Sound is specified, the current default tone of the specified Type +will be played.\ +\ +Note: the task will not wait for the ringtone to complete before +continuing.\ +\ +Note: in some Android versions ringtones will endlessly loop due to an +Android bug. diff --git a/en/help/ah_plugin.md b/en/help/ah_plugin.md new file mode 100644 index 0000000..1a0496d --- /dev/null +++ b/en/help/ah_plugin.md @@ -0,0 +1,11 @@ +### Plugin + +Runs the specified action plugin.\ +\ +Timeout specifies how long Tasker should wait for the plugin to finish. +**None** indicates that Tasker will proceed immediately to the next +action in the task.\ +\ +Warning: data you enter in the plugin configuration screen is collected +by the \*plugin\*, not by Tasker. If the plugin has Internet permissions +it could e.g. transmit your data to third-parties. diff --git a/en/help/ah_poke_display.md b/en/help/ah_poke_display.md new file mode 100644 index 0000000..98b3cf4 --- /dev/null +++ b/en/help/ah_poke_display.md @@ -0,0 +1,9 @@ +### Turn On + +If the display is off, it will be turned on. + +#### Block Time + +When the screen is turned on, screen will be blocked for this many +milliseconds. In most cases the default value should work, but if it +doesn\'t work on your device, try using a higher value. diff --git a/en/help/ah_popup.md b/en/help/ah_popup.md new file mode 100644 index 0000000..24cf269 --- /dev/null +++ b/en/help/ah_popup.md @@ -0,0 +1,6 @@ +### Popup + +Show a popup box with a message.\ +\ +The popup will dissappear after the specified number of seconds or if +its text is tapped. diff --git a/en/help/ah_popup_task_buttons.md b/en/help/ah_popup_task_buttons.md new file mode 100644 index 0000000..14a9844 --- /dev/null +++ b/en/help/ah_popup_task_buttons.md @@ -0,0 +1,7 @@ +### Popup Task Buttons + +Show a popup box with a message and 1-3 buttons with Task names, icons +or both.\ +\ +If one of the buttons is clicked, the popup exits and the relevant task +is performed. diff --git a/en/help/ah_power_mode.md b/en/help/ah_power_mode.md new file mode 100644 index 0000000..2db3cbd --- /dev/null +++ b/en/help/ah_power_mode.md @@ -0,0 +1,12 @@ +### Power Mode + +Set the system power mode.\ +\ + +### This is a Secure Setting + +To use this setting, Tasker needs to be granted permission to change +secure settings on your device + +Please follow the [instructions](ah_secure_setting_grant.html) to learn +how to grant the permission. diff --git a/en/help/ah_query_variable.md b/en/help/ah_query_variable.md new file mode 100644 index 0000000..38822bd --- /dev/null +++ b/en/help/ah_query_variable.md @@ -0,0 +1,7 @@ +### Variable Query + +Ask the user for a value via a popup dialog and assign it to the +specified variable.\ +\ +Tip: if you specify the same variable for the Default parameter, your +last input will be automatically filled in. diff --git a/en/help/ah_quick_setting_add.md b/en/help/ah_quick_setting_add.md new file mode 100644 index 0000000..f9e1205 --- /dev/null +++ b/en/help/ah_quick_setting_add.md @@ -0,0 +1,11 @@ +### Quick Setting Add + +Add a custom tile to the system Quick Settings panel.\ +\ +If Items are specified, then when the icon is clicked they will be shown +in a menu.\ +\ +If **no** Items are specified, a click on the tile can be detected via +the event Quick Setting Clicked.\ +\ +Only usable on Cyanogen 5.1.1+ ROMs with Custom Tile support. diff --git a/en/help/ah_quick_setting_remove.md b/en/help/ah_quick_setting_remove.md new file mode 100644 index 0000000..746d074 --- /dev/null +++ b/en/help/ah_quick_setting_remove.md @@ -0,0 +1,8 @@ +### Quick Setting Remove + +Remove a custom tile previously added to the system Quick Settings panel +with action Quick Setting Add.\ +\ +It is not classified as an error if the tile did not previously exist.\ +\ +Only usable on Cyanogen 5.1.1+ ROMs with Custom Tile support. diff --git a/en/help/ah_radio_status.md b/en/help/ah_radio_status.md new file mode 100644 index 0000000..078b56a --- /dev/null +++ b/en/help/ah_radio_status.md @@ -0,0 +1,6 @@ +### Radio + +Set the status of the phone radio.\ +\ +Warning: turning off the phone radio will prevent outgoing/incoming +calls and mobile data transfer. diff --git a/en/help/ah_read_binary.md b/en/help/ah_read_binary.md new file mode 100644 index 0000000..9d89ccc --- /dev/null +++ b/en/help/ah_read_binary.md @@ -0,0 +1,12 @@ +### Read Binary + +Read binary data (e.g. image data) from the specified file into a +variable in base 64 format.\ +\ +Base 64 is a textual format meaning it is safe for use where pure binary +data may not be.\ +\ +Base 64 can have various formats: that used by Tasker has regular line +terminators and potentially ends with padding characters (=).\ +\ +See Also: actions Write Binary, Variable Convert diff --git a/en/help/ah_read_file.md b/en/help/ah_read_file.md new file mode 100644 index 0000000..4bfaf14 --- /dev/null +++ b/en/help/ah_read_file.md @@ -0,0 +1,6 @@ +### Read File + +Read a text file into a variable.\ +\ +Don\'t try to read a non-text file with this, the results will probably +be disastrous diff --git a/en/help/ah_read_file_part.md b/en/help/ah_read_file_part.md new file mode 100644 index 0000000..6b947fd --- /dev/null +++ b/en/help/ah_read_file_part.md @@ -0,0 +1,21 @@ +### Read Line / Read Paragraph + +Read a record (a line or paragraph) from a text file.\ +\ +Line/Paragraph is the name of a variable containing the record number to +read. If unspecified, the record after the previously read one \*in that +file\* is read. A variable is used in place of a number here to permit +e.g. reading a random record via the Variable Randomize action.\ +\ +If the end of the file was reached before the specified record number +was found, it will contain the value EOF. The next line number then +resets to 1.\ +\ +Blank lines and any newline character at the end of a file are always +ignored.\ +\ +Don\'t try to read a non-text file with this, the results will probably +be disastrous.\ +\ +The action is not very efficient for reading all the records in a file, +since it starts from the beginning each time. diff --git a/en/help/ah_reboot.md b/en/help/ah_reboot.md new file mode 100644 index 0000000..b8b68dd --- /dev/null +++ b/en/help/ah_reboot.md @@ -0,0 +1,10 @@ +### Reboot + +Reboot (or just shutdown) the device.\ +\ +Unfortunately, this is not a \'clean\' shutdown. Neither Android nor +running applications are informed that the device is rebooting, so be +prepared for possible data corruption.\ +\ +On the other hand, every other app that allows reboot does it the same +way. diff --git a/en/help/ah_remount.md b/en/help/ah_remount.md new file mode 100644 index 0000000..f4ab743 --- /dev/null +++ b/en/help/ah_remount.md @@ -0,0 +1,8 @@ +### Remount + +Remount a file system read-write or read-only.\ +\ +Warning: it\'s inadvisable to\ +\ +\* use this action unless you know what you are doing\ +\* leave /system writeable for long periods diff --git a/en/help/ah_resize_image.md b/en/help/ah_resize_image.md new file mode 100644 index 0000000..2a1b8b4 --- /dev/null +++ b/en/help/ah_resize_image.md @@ -0,0 +1,9 @@ +### Resize Image + +Resize and scale the image currently in the image store.\ +\ +Specifying a value of 0 for one of Width or Height will cause that +dimension to be scaled proportionally with the other dimension so as to +keep the original aspect ratio of the image.\ +\ +See also: Load Image. diff --git a/en/help/ah_return.md b/en/help/ah_return.md new file mode 100644 index 0000000..2822b2c --- /dev/null +++ b/en/help/ah_return.md @@ -0,0 +1,14 @@ +### Return + +Return a value to the parent of this task i.e. the one that started it +via Perform Task.\ +\ +The parent task must have started it\'s child at equal or higher +priority and have specified a Return Value Variable in it\'s Perform +Task action, which will then be set to the Value specified in this +Return action.\ +\ +If Stop is checked, this task (the child) will terminate after returning +the Value to the parent.\ +\ +See Flow Control in the Userguide for more info. diff --git a/en/help/ah_revert_phonecalls.md b/en/help/ah_revert_phonecalls.md new file mode 100644 index 0000000..1203b6e --- /dev/null +++ b/en/help/ah_revert_phonecalls.md @@ -0,0 +1,10 @@ +### Call Revert + +Stop blocking or diverting calls to to the specified number.\ +\ +If no number is specified, all blocks and diversions will be cancelled.\ +\ +If Info is checked, all diversions and blocks will be displayed after +the action.\ +\ +See also: Block Calls, Divert Calls diff --git a/en/help/ah_ringer_mode.md b/en/help/ah_ringer_mode.md new file mode 100644 index 0000000..bbec317 --- /dev/null +++ b/en/help/ah_ringer_mode.md @@ -0,0 +1,13 @@ +### Sound Mode + +Only works correctly on some devices (like Samsung for example) + +**Do not disturb** settings on the phone may override this in some +situations + +- **Sound**: Your phone uses the sounds, vibrations, and volume levels + you have chosen in Sound settings for notifications and alerts. +- **Vibrate**: Your phone vibrates for notifications and alerts. This + uses the Vibration intensity you choose in Sound settings. +- **Mute**: Your phone plays no sounds or vibrations. Onscreen + reminders will still occur. diff --git a/en/help/ah_ringer_vibrate.md b/en/help/ah_ringer_vibrate.md new file mode 100644 index 0000000..3d87a67 --- /dev/null +++ b/en/help/ah_ringer_vibrate.md @@ -0,0 +1,13 @@ +### Vibrate On Ringer + +Whether to vibrate on an incoming call.\ +\ +You\'re probably really looking for the action Audio / Silent Mode if +you want to put your phone in vibrate or silent mode.\ +\ +Note: if silent/vibrate mode is engaged, this setting is overridden.\ +\ +Note: if you are going to use Tasker for this, it\'s probably best not +to mix it with other methods of controlling the setting.\ +\ +See also: Ringer Volume. diff --git a/en/help/ah_ringer_volume.md b/en/help/ah_ringer_volume.md new file mode 100644 index 0000000..79444ca --- /dev/null +++ b/en/help/ah_ringer_volume.md @@ -0,0 +1,14 @@ +### Ringer Volume + +Volume level of phone ringer.\ +\ +When Display is enabled, a popup will show the new level.\ +\ +When Sound is enabled, a tone will sound at the new volume level.\ +\ +If you want to put your phone in vibrate or silent mode, use action +Audio / Silent Mode, not this.\ +\ +Note: on some devices Notification and Ringer volume are linked, +changing one will change the other. There may be an Android setting for +controlling that behaviour. diff --git a/en/help/ah_ringtone.md b/en/help/ah_ringtone.md new file mode 100644 index 0000000..d6a2dad --- /dev/null +++ b/en/help/ah_ringtone.md @@ -0,0 +1,13 @@ +### Default Ringtone + +Sets the default ringtone for alarms, notifications or the ringer.\ +\ +Music files you place in /sdcard/media/ringtones/ will be included in +the selection list for the Ringer ringtone, similarly for Notification +and Alarm ringtones. You may have to create the folders first.\ +\ +An easier way to use SD card audio files as ringtones is to install a +tone picker application e.g. Tone Picker.\ +\ +You can also just put the title of the track in the box if it matches +the title of an audio track you have on SD. diff --git a/en/help/ah_rotate_image.md b/en/help/ah_rotate_image.md new file mode 100644 index 0000000..ef2fb75 --- /dev/null +++ b/en/help/ah_rotate_image.md @@ -0,0 +1,5 @@ +### Rotate Image + +Rotate the image currently in the image store.\ +\ +See also: Load Image. diff --git a/en/help/ah_run_action.md b/en/help/ah_run_action.md new file mode 100644 index 0000000..5fd874b --- /dev/null +++ b/en/help/ah_run_action.md @@ -0,0 +1,12 @@ +### Query Action + +Get details of an action to run, then run it.\ +\ +If Action is specified, only the parameters will be queried. This is a +very useful action to assign to a home screen widget, since it allows +you to easily execute any of Tasker\'s actions without having to set up +a profile etc first.\ +\ +Wait and Wait Until actions cannot be queried. As a workaround, you +could query for a variable and then then Wait in the next action of the +task using the variable value. diff --git a/en/help/ah_run_script.md b/en/help/ah_run_script.md new file mode 100644 index 0000000..564252b --- /dev/null +++ b/en/help/ah_run_script.md @@ -0,0 +1,11 @@ +### Run SL4A Script + +Run the named Scripting Layer for Android (SL4A) script.\ +\ +Every file in /sdcard/sl4a/scripts is expected to be a script.\ +\ +More information: http://code.google.com/p/android-scripting/.\ +\ +Passed Variables is a comma-separated list of variables to pass in the +intent which starts the script. Their values \*at time of launch\* can +be accessed from the script by looking at the received intent. diff --git a/en/help/ah_run_shell.md b/en/help/ah_run_shell.md new file mode 100644 index 0000000..c8c494c --- /dev/null +++ b/en/help/ah_run_shell.md @@ -0,0 +1,19 @@ +### Run Shell + +Run a system shell command under linux.\ +\ +Most commands require root, so be aware of that.\ +\ +If Timeout is 0, the command will never time-out.\ +\ +Store Output In is a variable name for the output (stdout) of the +command.\ +\ +Similarly, Store Errors In is for error output (stderr).\ +\ +A result code of 256 indicates a technical failure executing the +command, 257 indicates that the specified Timeout value was exceeded, +258 indicates the process was interrupted.\ +\ +Any non-zero result code will cause the task to stop, unless Continue On +Error is checked, otherwise the result code will be stored in %err. diff --git a/en/help/ah_run_task.md b/en/help/ah_run_task.md new file mode 100644 index 0000000..14c9718 --- /dev/null +++ b/en/help/ah_run_task.md @@ -0,0 +1,28 @@ +### Perform Task + +Run the selected Tasker task.\ +\ +You can \'nest\' as many tasks as you wish.\ +\ +When this action is used as part of an Enter task, the settings it +contains are \*not\* restored when the profile exits.\ +\ +When a task is started from an existing task, the existing task +continues unless the Stop parameter is set.\ +\ +If you set the priority lower than the current task, the current task +will finish before the new one starts.\ +\ +If you set the priority the same or higher than the current task (a good +way to do this is to specify \'%priority+1\'), the new task will +completely execute before the current one resumes.\ +\ +Values assigned to %par1 and %par2 are available in the child task as +normal variables.\ +\ +If the child does a Return action, the Return Value Variable in the +parent task is set to the Value specified in that Return action, however +note that the value will not be returned if the Perform Task is the last +action of the parent.\ +\ +See Flow Control in the Userguide for more info. diff --git a/en/help/ah_save_image.md b/en/help/ah_save_image.md new file mode 100644 index 0000000..403c63b --- /dev/null +++ b/en/help/ah_save_image.md @@ -0,0 +1,13 @@ +### Save Image + +Write the image currently in the image store to a file.\ +\ +The file extension will only be respected for JPEG and WEBP (if +available on the device); all other extensions will result in PNG +output.\ +\ +Higher Image Quality values will also result in greater file size and +more chance of running out of memory. Image Quality is not relevant for +PNG.\ +\ +See also: Load Image. diff --git a/en/help/ah_say.md b/en/help/ah_say.md new file mode 100644 index 0000000..a98ed37 --- /dev/null +++ b/en/help/ah_say.md @@ -0,0 +1,24 @@ +### Say + +Synthesize the given Text into speech.\ +\ +Engine:Voice specifies the speech engine and voice/language to use. +*default:en* specifies the default engine and English voice.\ +Stream/File specifies where the sound should go. Stream specifies a +sound channel, File specifies a location on the SD card; the synthesized +speech is stored in WAV format.\ +\ +Network: use network synthesis, if supported by the current +engine/voice. This may result in better quality.\ +\ +Continue Task Immediately: if selected, Tasker will continue with the +next queued action while the speech is still ongoing. You must select +this in order to do a Shut Up action later.\ +\ +Android settings may override locale, speed and pitch. Please see the +\'Always use my settings option\' in Android\'s Text-To-Speech settings +section.\ +\ +If *Reduce Resource Usage* in Tasker Prefs / Misc is checked, the speech +engine will be shutdown after each utterance, meaning the speech will +always begin later for subsequent Say actions. diff --git a/en/help/ah_say_wavenet.md b/en/help/ah_say_wavenet.md new file mode 100644 index 0000000..b708642 --- /dev/null +++ b/en/help/ah_say_wavenet.md @@ -0,0 +1,63 @@ +#### Say WaveNet + +Allows you to make Tasker say something out loud using advanced [WaveNet +Voices](https://cloud.google.com/text-to-speech/). + +To use this action, you\'ll have to have a Google Cloud project on your +Google account and use an API Key from that project. + +
+ +To do that: + +
+ +- Select or create a Google Cloud project + [here](https://console.cloud.google.com/cloud-resource-manager). +- Enable billing for your project + [here](https://console.cloud.google.com/billing/linkedaccount). + (Note: even though billing is enabled, you\'ll only be charged if + you go over the [free + quota](https://cloud.google.com/text-to-speech/pricing).) +- Enable the Text-to-Speech API + [here](https://console.cloud.google.com/flows/enableapi?apiid=texttospeech.googleapis.com). +- Go to the + [Credentials](https://console.cloud.google.com/apis/credentials) + page, click on **Create credentials** \> **API key**. +- Copy and paste the API Key into Tasker \> Preferences \> Misc \> + Google API Key. +- Alternatively you can set the **Override API Key** field in every + **Say WaveNet** action. + +::: {.inputs} +::: {.input} +::: {.title} +Continue Task Immediately +::: + +::: {.text} +Enable if you don\'t want the task to wait for it to finish speaking. +You must select this in order to do a Shut Up action later. +::: +::: + +::: {.input} +::: {.title} +File +::: + +::: {.text} +If set, will write the speech to a file with the mp3 format +::: +::: + +::: {.input} +::: {.title} +Override API Key +::: + +::: {.text} +If set will override the key entered in the main Tasker Preferences. +::: +::: +::: diff --git a/en/help/ah_scan_card.md b/en/help/ah_scan_card.md new file mode 100644 index 0000000..20eb343 --- /dev/null +++ b/en/help/ah_scan_card.md @@ -0,0 +1,14 @@ +### Scan Media + +Force the system to scan the SD card for new/deleted media. This can +save a lot of time removing and reinserting the physical card.\ +\ +If a file is specified, only that file is scanned.\ +If a directory is specified, all of its contents will be scanned +recursively.\ +\ +Note: repeatedly scanning the same file will not update the thumbnail in +Gallery.\ +\ +On Android 4.4+, scanning the whole card or a directory only picks up +\*new\* files and the task waits till the scan is finished. diff --git a/en/help/ah_scene_element_add_geomarker.md b/en/help/ah_scene_element_add_geomarker.md new file mode 100644 index 0000000..164e87f --- /dev/null +++ b/en/help/ah_scene_element_add_geomarker.md @@ -0,0 +1,10 @@ +### Element Add GeoMarker + +Add a marker to a scene Map element.\ +\ +Spot Radius specifies the size of circle to place at the base of the +market.\ +\ +The scene must have been created first.\ +\ +See also: Element Delete GeoMarker. diff --git a/en/help/ah_scene_element_background_colour.md b/en/help/ah_scene_element_background_colour.md new file mode 100644 index 0000000..d96c86e --- /dev/null +++ b/en/help/ah_scene_element_background_colour.md @@ -0,0 +1,10 @@ +### Element Back Colour + +Set the background colour(s) of a scene element.\ +\ +Applies to Text, TextEdit, Image, Menu, Oval and Rectangle elements.\ +\ +End Colour is only relevant if the element\'s background has a Shader +specified.\ +\ +The scene must have been created first. diff --git a/en/help/ah_scene_element_border.md b/en/help/ah_scene_element_border.md new file mode 100644 index 0000000..367335b --- /dev/null +++ b/en/help/ah_scene_element_border.md @@ -0,0 +1,7 @@ +### Element Border + +Set the width and colour of an element\'s border.\ +\ +Applies to Text, TextEdit, Image, Menu, Oval and Rectangle elements.\ +\ +The scene must have been created first. diff --git a/en/help/ah_scene_element_create.md b/en/help/ah_scene_element_create.md new file mode 100644 index 0000000..3b81260 --- /dev/null +++ b/en/help/ah_scene_element_create.md @@ -0,0 +1,10 @@ +### Element Create + +Create a new scene element dynamically and add it to an existing +(created) scene.\ +\ +If you wish to animate the appearance of the element, deselect the +Visible parameter and use the Element Visibility action afterwards.\ +\ +Note: unfortunately it\'s not yet possible to link event tasks to +dynamically-created elements. diff --git a/en/help/ah_scene_element_delete_geomarker.md b/en/help/ah_scene_element_delete_geomarker.md new file mode 100644 index 0000000..5a4c0f8 --- /dev/null +++ b/en/help/ah_scene_element_delete_geomarker.md @@ -0,0 +1,7 @@ +### Element Delete GeoMarker + +Delete a marker from a scene Map element.\ +\ +The scene must have been created first.\ +\ +See also: Element Add GeoMarker. diff --git a/en/help/ah_scene_element_depth.md b/en/help/ah_scene_element_depth.md new file mode 100644 index 0000000..e304f35 --- /dev/null +++ b/en/help/ah_scene_element_depth.md @@ -0,0 +1,4 @@ +### Element Depth + +Set the depth of the specified element in the scene relative to all the +other elements. diff --git a/en/help/ah_scene_element_destroy.md b/en/help/ah_scene_element_destroy.md new file mode 100644 index 0000000..12b02fd --- /dev/null +++ b/en/help/ah_scene_element_destroy.md @@ -0,0 +1,6 @@ +### Element Destroy + +Dynamically destroy and remove an element from an existing (created) +scene.\ +\ +The element need not necessarily have been dynamically created. diff --git a/en/help/ah_scene_element_focus.md b/en/help/ah_scene_element_focus.md new file mode 100644 index 0000000..9bbf6cb --- /dev/null +++ b/en/help/ah_scene_element_focus.md @@ -0,0 +1,3 @@ +### Element Focus + +Give input focus to, or remove input focus from, the specified element. diff --git a/en/help/ah_scene_element_image.md b/en/help/ah_scene_element_image.md new file mode 100644 index 0000000..29f241b --- /dev/null +++ b/en/help/ah_scene_element_image.md @@ -0,0 +1,6 @@ +### Element Image + +Set the image of an Image scene element or the icon of a Button or +Slider element.\ +\ +The scene must have been created first. diff --git a/en/help/ah_scene_element_map_control.md b/en/help/ah_scene_element_map_control.md new file mode 100644 index 0000000..d3f3636 --- /dev/null +++ b/en/help/ah_scene_element_map_control.md @@ -0,0 +1,8 @@ +### Element Map Control + +Manipulate a Map scene element e.g. to zoom in or out\ +\ +The scene must have been created first.\ +\ +Note: Enable Compass: the compass is only shown when the map is tilted +or rotated. diff --git a/en/help/ah_scene_element_position.md b/en/help/ah_scene_element_position.md new file mode 100644 index 0000000..ebd47b9 --- /dev/null +++ b/en/help/ah_scene_element_position.md @@ -0,0 +1,5 @@ +### Element Position + +Move a scene element within it\'s scene.\ +\ +The scene must have been created first. diff --git a/en/help/ah_scene_element_size.md b/en/help/ah_scene_element_size.md new file mode 100644 index 0000000..cef9f33 --- /dev/null +++ b/en/help/ah_scene_element_size.md @@ -0,0 +1,5 @@ +### Element Size + +Change the size of an element.\ +\ +The scene must have been created first. diff --git a/en/help/ah_scene_element_test.md b/en/help/ah_scene_element_test.md new file mode 100644 index 0000000..eca402e --- /dev/null +++ b/en/help/ah_scene_element_test.md @@ -0,0 +1,9 @@ +### Test Element + +Test some property of the specified scene element e.g. it\'s position +within the scene.\ +\ +The scene must have been created first and in some cases already be +displayed.\ +\ +Not all tests apply to all elements. diff --git a/en/help/ah_scene_element_text.md b/en/help/ah_scene_element_text.md new file mode 100644 index 0000000..8d16e55 --- /dev/null +++ b/en/help/ah_scene_element_text.md @@ -0,0 +1,14 @@ +### Element Text + +Set the text of a scene element.\ +\ +Applies to Button, Text and TextEdit elements only.\ +\ +The scene must have been created first.\ +\ +For TextEdit elements, the parameter Selection specifies a part of the +text to select after it has been set.\ +The specification is either a range (e.g. 1:4 for characters 1 to 4 +inclusive, or 3: to select everything from character 3 onwards) or a +simple match e.g. v\*e to select everything between a v and an e. Use : +or \* to select the whole text. diff --git a/en/help/ah_scene_element_text_colour.md b/en/help/ah_scene_element_text_colour.md new file mode 100644 index 0000000..b3610e2 --- /dev/null +++ b/en/help/ah_scene_element_text_colour.md @@ -0,0 +1,7 @@ +### Element Text Colour + +Set the text colour of a scene element\ +\ +Applies only to Button, Text and TextEdit elements.\ +\ +The scene must have been created first. diff --git a/en/help/ah_scene_element_value.md b/en/help/ah_scene_element_value.md new file mode 100644 index 0000000..1e1eb0b --- /dev/null +++ b/en/help/ah_scene_element_value.md @@ -0,0 +1,18 @@ +### Element Value + +Set the value of a scene element.\ +\ +Applies only to CheckBox, Number Picker, Slider, Spinner and Toggle +elements.\ +\ +For a CheckBox, value should be 0 (off) or 1 (on).\ +\ +For a Spinner, the value is the index of the item to set.\ +\ +The scene must have been created first.\ +\ +The action can only trigger a possible event associated with the element +value if the scene is currently showing.\ +\ +To set the value of a Text, EditText or Button element, use the Element +Text action. diff --git a/en/help/ah_scene_element_video_control.md b/en/help/ah_scene_element_video_control.md new file mode 100644 index 0000000..8766e31 --- /dev/null +++ b/en/help/ah_scene_element_video_control.md @@ -0,0 +1,11 @@ +### Element Video Control + +Manipulate a Video element in a scene.\ +\ +Not all actions are possible at all times. For instance, Play is not +possible until the video has loaded.\ +\ +Tip: to simplify a manual load-and-start-video, specify in the element a +variable as the source of the video and check Start Automatically. Then +instead of using a Video Control action with Load Source, just set the +variable. diff --git a/en/help/ah_scene_element_visibility.md b/en/help/ah_scene_element_visibility.md new file mode 100644 index 0000000..6d43424 --- /dev/null +++ b/en/help/ah_scene_element_visibility.md @@ -0,0 +1,5 @@ +### Element Visibility + +Hide or show a scene element.\ +\ +The scene must have been created first. diff --git a/en/help/ah_scene_element_web_control.md b/en/help/ah_scene_element_web_control.md new file mode 100644 index 0000000..754f909 --- /dev/null +++ b/en/help/ah_scene_element_web_control.md @@ -0,0 +1,6 @@ +### Element Web Control + +Manipulate a WebView scene element e.g. to page up or down\ +\ +This action will not work until the scene has ben **displayed** at least +once. diff --git a/en/help/ah_screen_brightness.md b/en/help/ah_screen_brightness.md new file mode 100644 index 0000000..d802464 --- /dev/null +++ b/en/help/ah_screen_brightness.md @@ -0,0 +1,19 @@ +### Display Brightness + +Brightness setting of the screen (0-255).\ +\ +If the safeguard is enabled, levels less than 20 will be set to 20 to +prevent accidental black screens.\ +\ +Ignore Current Level: if it looks like it\'s already at the required +level, go ahead and set it again anyway.\ +\ +Immediate Effect: ensure the change takes effect immediately. If not +selected, it may not take effect till Android registers the new value, +which may require a display on-off.You may that find Immediate Effect +disrupts some applications.\ +Immediate Effect is only needed on Android versions up till 4.4.\ +\ +If you have auto-brightness controls on your device, it\'s advisable to +disable them before attempting to set the brightness manually. See +system settings or Tasker action Auto-Brightness. diff --git a/en/help/ah_screen_brightness_auto.md b/en/help/ah_screen_brightness_auto.md new file mode 100644 index 0000000..8d201b8 --- /dev/null +++ b/en/help/ah_screen_brightness_auto.md @@ -0,0 +1,10 @@ +### Auto Brightness + +Enable or disable automatic screen brightness adjustment by the system +(dependent on ambient light).\ +\ +Not available on all devices and OS versions.\ +\ +In some cases, though the setting is restored, the screen will not react +until the settings screen is visited. It may be therefore useful to put +Wait 500ms and Screen Brightness XXX actions in your exit task. diff --git a/en/help/ah_screen_timeout.md b/en/help/ah_screen_timeout.md new file mode 100644 index 0000000..f37c016 --- /dev/null +++ b/en/help/ah_screen_timeout.md @@ -0,0 +1,13 @@ +### Display Timeout + +The length of time with no user action before the screen powers off.\ +\ +Setting all sliders to the maximum value means \'Never\'.\ +\ +Note: this setting may be overruled by the Stay On action when the +device is plugged into a power source.\ +\ +Note: if you go to Android settings after running this action, Android +will change the value to one it \'knows about\' e.g. if you have set it +to 9 minutes, Android Settings may change it to 10 minutes.\ +Some have reported the same thing occuring after a reboot. diff --git a/en/help/ah_search.md b/en/help/ah_search.md new file mode 100644 index 0000000..aaa178c --- /dev/null +++ b/en/help/ah_search.md @@ -0,0 +1,3 @@ +### Search + +Perform a search for the specified text. diff --git a/en/help/ah_search_replace_variable.md b/en/help/ah_search_replace_variable.md new file mode 100644 index 0000000..91ec4b4 --- /dev/null +++ b/en/help/ah_search_replace_variable.md @@ -0,0 +1,13 @@ +### Variable Search Replace + +Find parts of a variable which match a regular expression (regex) and +optionally replace them with something else.\ +\ +Store Matches In specifies an array variable in which each successive +part of the Variable contents which matches the **whole** Search +parameter is stored.\ +\ +Replace With specifies what each matching part of the variable should be +replaced with.\ +\ +See Pattern Matching in the Userguide for more info. diff --git a/en/help/ah_section_variable.md b/en/help/ah_section_variable.md new file mode 100644 index 0000000..155c7df --- /dev/null +++ b/en/help/ah_section_variable.md @@ -0,0 +1,7 @@ +### Variable Section + +Select a particular section of a variable and throw away the rest.\ +\ +If Adapt To Fit is checked, the specified Length is changed, if it is +too long, so that the selected section ends at the end of the original +variable contents. diff --git a/en/help/ah_secure_setting.md b/en/help/ah_secure_setting.md new file mode 100644 index 0000000..f401b7b --- /dev/null +++ b/en/help/ah_secure_setting.md @@ -0,0 +1,27 @@ +### Custom Setting + +Allows you to change settings in the three Settings Tables on Android +(Global, Secure and System) + +Settings whose values are 0 and 1 are usually \"on\" and \"off\" +settings. You can toggle these by setting the **Value** to +**=:=toggle=:=** + +Some values can only be changed with root. + +You can leave the **Value** empty and only fill in the **Read Setting +To** field to get the current value for the setting + +[Video Example](https://www.youtube.com/watch?v=NiJrtmHIiiE) + +### How To Grant Permission + +Please follow the [instructions](ah_secure_setting_grant.html) to learn +how to grant the permission. + +### Example Usage + +Change any setting on your device from anywhere (PC, notification, +watch, etc) with an [AutoApps +Command](https://joaoapps.com/autoapps-command-system/) - [Full +Tutorial](http://forum.joaoapps.com/index.php?resources/change-any-android-setting-from-anywhere-with-autoapps.331/) diff --git a/en/help/ah_secure_setting_grant.md b/en/help/ah_secure_setting_grant.md new file mode 100644 index 0000000..1533bb9 --- /dev/null +++ b/en/help/ah_secure_setting_grant.md @@ -0,0 +1,38 @@ +#### [Write Secure Settings]{.name} Permission + +To use this, Tasker needs to be granted permission to [Write Secure +Settings]{.name} on your device + +1. **Enable Developer Mode**: Go to Android Settings -\> About Phone + and look for the **Build Number** option. Touch it multiple times + until developer mode is enabled. +2. **Enable USB Debugging**: Go to Android Settings -\> and look for + the **Developer Options** option. In there, enable the **USB + debugging** option. +3. **Install ADB on your PC**: Check + [here](https://www.xda-developers.com/google-releases-separate-adb-and-fastboot-binary-downloads/) + for a quick way to do it. +4. **Connect device to PC**: Connect your device to a PC and look on + your phone. A prompt should show up asking you to allow your phone + to be debugged by your PC. Accept this. +5. Open the command prompt from the file folder that contains the + extracted downloads. To do this, press the windows key and type + **cmd**. When the prompt opens, type **cd** followed by folder your + downloaded ADB to. +6. **Grant permission**: Open a command line a on your PC and write + + ``` {.small} + adb shell pm grant net.dinglisch.android.taskerm android.permission.WRITE_SECURE_SETTINGS + ``` + + If you\'re on a mac write + + ``` {.small} + ./adb shell pm grant net.dinglisch.android.taskerm android.permission.WRITE_SECURE_SETTINGS + ``` + +#### Notes: + +- On MIUI devices you may have to open developer options and enable + the **USB debugging (Security Settings)** setting to be able to run + the above command. diff --git a/en/help/ah_secure_setting_single.md b/en/help/ah_secure_setting_single.md new file mode 100644 index 0000000..2a2cba3 --- /dev/null +++ b/en/help/ah_secure_setting_single.md @@ -0,0 +1,7 @@ +#### Write Secure Settings Permission + +To use this setting, Tasker needs to be granted permission to change +secure settings on your device + +Please follow the [instructions](ah_secure_setting_grant.html) to learn +how to grant the permission. diff --git a/en/help/ah_send_intent.md b/en/help/ah_send_intent.md new file mode 100644 index 0000000..cf9abd0 --- /dev/null +++ b/en/help/ah_send_intent.md @@ -0,0 +1,7 @@ +### Send Intent + +Broadcast an ordered Intent.\ +\ +This action is intended for advanced users.\ +\ +See *Intents* in the Userguide for more info. diff --git a/en/help/ah_send_sms.md b/en/help/ah_send_sms.md new file mode 100644 index 0000000..a801002 --- /dev/null +++ b/en/help/ah_send_sms.md @@ -0,0 +1,16 @@ +### Send SMS + +Send an SMS without user interaction.\ +\ +Multiple numbers can be specified by comma-separating them.\ +\ +Email addresses are not supported.\ +\ +Store in Messaging App: whether a record will be kept of the sent SMS in +the standard messaging app (only available prior to Android 4.4).\ +\ +Success or failure can be caught by creating an Event context SMS +Success/Failure.\ +\ +Maximum length of an SMS is 140 characters. In some character encodings +that translates to 140 characters, in others to only 70 characters. diff --git a/en/help/ah_set_alarm.md b/en/help/ah_set_alarm.md new file mode 100644 index 0000000..240ebb2 --- /dev/null +++ b/en/help/ah_set_alarm.md @@ -0,0 +1,10 @@ +### Set Alarm + +Set a new alarm in the default alarm clock application.\ +\ +If Confirm is not checked no user interaction will be required.\ +\ +Note that on some devices, setting the alarm too close to the current +time may result in the alarm being set for the next day.\ +\ +Also, some devices require that a Message be stipulated. diff --git a/en/help/ah_set_app_shortcuts.md b/en/help/ah_set_app_shortcuts.md new file mode 100644 index 0000000..ba5c826 --- /dev/null +++ b/en/help/ah_set_app_shortcuts.md @@ -0,0 +1,11 @@ +### Setup App Shortcuts + +Dynamically configure the list of app shortcuts which will show when the +Tasker icon is long-clicked in the launcher.\ +\ +If no task is specified, that slot will receive the default appearance +and functionality.\ +\ +This action is mainly of use for child apps created with Tasker.\ +\ +See also: Prefs / Action / App Shortcut Tasks. diff --git a/en/help/ah_set_clipboard.md b/en/help/ah_set_clipboard.md new file mode 100644 index 0000000..f3d1940 --- /dev/null +++ b/en/help/ah_set_clipboard.md @@ -0,0 +1,10 @@ +### Set Clipboard + +Copy the specified text to the system clipboard.\ +\ +If Add is set, the text will be added on the end of the clipboard, +otherwise it will replace the existing clipboard text.\ +\ +This is probably most useful for storing some data from an event (e.g. +the text of an arriving SMS). Note that you can also place the clipboard +contents in an action. diff --git a/en/help/ah_set_light.md b/en/help/ah_set_light.md new file mode 100644 index 0000000..6978856 --- /dev/null +++ b/en/help/ah_set_light.md @@ -0,0 +1,16 @@ +### Set Light + +Change the brightness of a light.\ +\ +Available lights will vary per-device but typically include things like +keyboard backlights, LEDs, camera flashlights, display and button +backlights.\ +\ +Despite the maximum being given as 255, many lights will only be on or +off, in which case 0 specifies off and any other number specifies on.\ +\ +Note that turning a light off is not permanent, Android may turn it on +at a later time in response to various events on the device.\ +\ +If you accidentally reduce the display backlight to 0, a reboot should +solve the problem. diff --git a/en/help/ah_set_passphrase.md b/en/help/ah_set_passphrase.md new file mode 100644 index 0000000..7cfb2cd --- /dev/null +++ b/en/help/ah_set_passphrase.md @@ -0,0 +1,9 @@ +### Set Key + +Preset the passphrase for an encryption key.\ +\ +This allows subsequent en/decryptions to take place automatically +without user interaction.\ +\ +Important: it is less secure than the Enter Key action; read the +userguide section on Encryption before use. diff --git a/en/help/ah_set_quick_setting.md b/en/help/ah_set_quick_setting.md new file mode 100644 index 0000000..48b499e --- /dev/null +++ b/en/help/ah_set_quick_setting.md @@ -0,0 +1,15 @@ +### Setup Quick Setting + +Dynamically change one of Tasker\'s quick settings tiles.\ +\ +If no task name is specified, the tile will receive the default +appearance and functionality.\ +\ +The status affects the appearance of the tile in a way defined by the +system. In addition, if it is set to Disabled, the tile will not respond +to clicks.\ +\ +The effects of this action will only be visible when the tile is +manually added to the set of used tiles via the Android UI.\ +\ +See Also: Prefs / Action / Quick Settings Tasks. diff --git a/en/help/ah_set_sms_app.md b/en/help/ah_set_sms_app.md new file mode 100644 index 0000000..397ddaf --- /dev/null +++ b/en/help/ah_set_sms_app.md @@ -0,0 +1,9 @@ +### Set SMS App + +Set the app which is the system-default SMS app.\ +\ +If you grant Tasker permission to [write secure +settings](ah_secure_setting_grant.html) this will be set without a +prompt, otherwise a dialog will be shown to confirm the change.\ +\ +Will have no effect unless a valid app is chosen. diff --git a/en/help/ah_set_tasker_icon.md b/en/help/ah_set_tasker_icon.md new file mode 100644 index 0000000..c22f3ff --- /dev/null +++ b/en/help/ah_set_tasker_icon.md @@ -0,0 +1,9 @@ +### Set Tasker Icon + +Set the icon for Tasker\'s permanent notification in the status bar.\ +\ +Lasts until the monitor service is stopped e.g. due to disabling +Tasker.\ +\ +To permanently change the icon, see Menu / Prefs / Monitor / +Notification Icon diff --git a/en/help/ah_set_tasker_pref.md b/en/help/ah_set_tasker_pref.md new file mode 100644 index 0000000..d38114d --- /dev/null +++ b/en/help/ah_set_tasker_pref.md @@ -0,0 +1,10 @@ +### Set Tasker Pref + +Dynamically set a preference value normally configured via Menu / Prefs +in the Tasker UI.\ +\ +The changed values will have immediate effect unless the related +operation is already in progress.\ +\ +The Use Reliable Alarms preference will not cause existing alarms to be +recreated. diff --git a/en/help/ah_set_variable.md b/en/help/ah_set_variable.md new file mode 100644 index 0000000..41a3d7f --- /dev/null +++ b/en/help/ah_set_variable.md @@ -0,0 +1,34 @@ +### Variable Set + +Set the variable Name to the value To.\ +\ +Name can be any desired string, however it\'s advisable to make it a +sequence that does not commonly occur in text otherwise it will match at +unexpected times.\ +\ +Names all in lower-case are *local* variables which are only visible in +the current task.\ +\ +If Recurse Variables is checked, all variables mentioned in the To +parameter will be repeatedly replaced until there are no variable names +left, otherwise only one round of variable replacement will take place.\ +\ +If Append is checked, To is added to the existing value of the +variable.\ +\ +If Do Maths is checked then at the time of assignment the value of To +will be evaluated as a mathematical expression.\ +\ +e.g.\ +\ +Name: %FROG\ +\ +To: %VOLC + 1\ +\ +Assuming %VOLC is 8, if Do Maths is checked, %FROG will get the value +\'9\', otherwise it will get the value \'8 + 1\'.\ +\ +If To cannot be numerically evaluated (e.g. it is \'cat + 3\') then the +current task will terminate.\ +\ +See Also: Variables section in the Userguide. diff --git a/en/help/ah_set_variable_random.md b/en/help/ah_set_variable_random.md new file mode 100644 index 0000000..122573e --- /dev/null +++ b/en/help/ah_set_variable_random.md @@ -0,0 +1,4 @@ +### Variable Randomize + +Set the variable Name to a random integer value between Min and Max +(inclusive; the number could be Min or Max). diff --git a/en/help/ah_set_wallpaper.md b/en/help/ah_set_wallpaper.md new file mode 100644 index 0000000..4709757 --- /dev/null +++ b/en/help/ah_set_wallpaper.md @@ -0,0 +1,18 @@ +### Set Wallpaper + +Set the system (home screen) wallpaper from an SD card image file.\ +\ +JPG and PNG are supported.\ +\ +If no image is specified, the default system image is set.\ +\ +Scale: if the image is smaller in width or height than the +launcher-specified values, scale it up to those values while keeping the +aspect ratio.\ +\ +Crop: if the image dimensions (possibly after scaling) are greater than +the launcher-specified values crop it down to those dimensions. This can +be necessary to prevent Android-internal problems.\ +\ +Note that it can take more than 20 seconds for this action to take +effect. diff --git a/en/help/ah_share_file.md b/en/help/ah_share_file.md new file mode 100644 index 0000000..55652db --- /dev/null +++ b/en/help/ah_share_file.md @@ -0,0 +1,13 @@ +### Share File + +Share a file with another application or device.\ +\ +If Mime Type is not specified, Tasker will attempt to deduce it.\ +\ +If Show Chooser is specified, Android will display a selection of +possible ways of sharing the file, in a dialog.\ +\ +If not specified, the chooser may be shown anyway if there is no known +default way of handling that Mime Type.\ +\ +Some Android versions may ignore Chooser Title. diff --git a/en/help/ah_show_alarms.md b/en/help/ah_show_alarms.md new file mode 100644 index 0000000..762ae96 --- /dev/null +++ b/en/help/ah_show_alarms.md @@ -0,0 +1,3 @@ +### Show Alarms + +Bring up a screen showing the configured system alarms. diff --git a/en/help/ah_show_scene.md b/en/help/ah_show_scene.md new file mode 100644 index 0000000..09f90a4 --- /dev/null +++ b/en/help/ah_show_scene.md @@ -0,0 +1,24 @@ +### Show Scene + +Display a scene, creating it first if necessary.\ +\ +All Overlays are displayed over the current application and persist +until hidden or destroyed.\ +\ +Blocking overlays only block touches on the part of the screen they +cover.\ +\ +Non-blocking Overlays are also displayed over the Keyguard.\ +\ +Dialogs are little popup windows which take all user input while they +are displayed and can be dismissed with the Back key.\ +\ +Activities are standard Android app views.\ +\ +Offsets are percentages of the screen size with in the range 0-200, +(0=100% left, 100=centre, 200=100% right).\ +\ +Animation is only relevant for non-overlay scenes and when animations +are enabled in Android settings.\ +\ +See also: Scenes in the Userguide. diff --git a/en/help/ah_shut_up.md b/en/help/ah_shut_up.md new file mode 100644 index 0000000..8ec70fc --- /dev/null +++ b/en/help/ah_shut_up.md @@ -0,0 +1,8 @@ +### Shut Up + +Stop speech initiated from a previous Say, Say To File or Say WaveNet +action.\ +\ +Note: you must select Continue Task Immediately in the Say action to be +able to use Shut Up, otherwise Tasker will not get to the Shut Up action +until the speech has finished anyway. diff --git a/en/help/ah_silence_ringer.md b/en/help/ah_silence_ringer.md new file mode 100644 index 0000000..550dfa9 --- /dev/null +++ b/en/help/ah_silence_ringer.md @@ -0,0 +1,7 @@ +### Silence Ringer + +During an incoming call, immediately stop the ringsound and/or +vibration.\ +\ +This is temporary; the ringer will still sound on the next incoming +call. diff --git a/en/help/ah_silent_mode.md b/en/help/ah_silent_mode.md new file mode 100644 index 0000000..cac9429 --- /dev/null +++ b/en/help/ah_silent_mode.md @@ -0,0 +1,9 @@ +### Silent Mode + +Android 5.0: toggles vibrate mode on or off.\ +\ +Prior Android versions: in silent mode, all sounds except media and +alarm are surpressed by the system (without having their volume settings +changed). With Vibrate, the phone will vibrate on an incoming call.\ +\ +This setting overrides the Ringer Vibrate setting. diff --git a/en/help/ah_sleepbot.md b/en/help/ah_sleepbot.md new file mode 100644 index 0000000..c05677b --- /dev/null +++ b/en/help/ah_sleepbot.md @@ -0,0 +1,5 @@ +### SleepBot + +Info:\ +\ +http://wiki.mysleepbot.com diff --git a/en/help/ah_sms_compose.md b/en/help/ah_sms_compose.md new file mode 100644 index 0000000..847ba10 --- /dev/null +++ b/en/help/ah_sms_compose.md @@ -0,0 +1,8 @@ +### Compose SMS + +Launch an application to compose an SMS from optional predefined +elements.\ +\ +To send an SMS directly, see Send SMS.\ +\ +On Android 4.4+, only one of Recipient or Message can be specified. diff --git a/en/help/ah_smsbackup.md b/en/help/ah_smsbackup.md new file mode 100644 index 0000000..785b47d --- /dev/null +++ b/en/help/ah_smsbackup.md @@ -0,0 +1,5 @@ +### SMS Backup+ + +Info: https://github.com/jberkel/sms-backup-plus\ +\ +Minimal version 1.3.4. diff --git a/en/help/ah_sound_effects.md b/en/help/ah_sound_effects.md new file mode 100644 index 0000000..7be47ff --- /dev/null +++ b/en/help/ah_sound_effects.md @@ -0,0 +1,5 @@ +### Sound Effects + +Whether to enable or disable system sounds like clicks on icons.\ +\ +See also: Sound/System Volume setting. diff --git a/en/help/ah_sound_record.md b/en/help/ah_sound_record.md new file mode 100644 index 0000000..532cac0 --- /dev/null +++ b/en/help/ah_sound_record.md @@ -0,0 +1,21 @@ +### Record Audio + +Record from the microphone to an SD card file.\ +\ +File is the path to the file on the SD card. It will have extension .3gp +added.\ +\ +Source is where to record from. Not all sources are available on all +hardware, for instance the Call source is not available on the G1.\ +\ +The Max Filesize is the maximum size of the resulting audio file in K.\ +\ +A zero value for Filesize places no limit, in which case the recording +will not stop until the SD card is full or the Tasker action Record +Audio Stop is performed.\ +\ +Note: playback of the resulting files can be done with Tasker\'s Play +Music action, amongst others.\ +\ +Warning: in many countries, recording of individuals\' speech without +their consent is illegal. diff --git a/en/help/ah_sound_record_stop.md b/en/help/ah_sound_record_stop.md new file mode 100644 index 0000000..8a20866 --- /dev/null +++ b/en/help/ah_sound_record_stop.md @@ -0,0 +1,3 @@ +### Record Audio Stop + +Stop a sound recording previously started with Record Audio. diff --git a/en/help/ah_speakerphone.md b/en/help/ah_speakerphone.md new file mode 100644 index 0000000..d34985b --- /dev/null +++ b/en/help/ah_speakerphone.md @@ -0,0 +1,7 @@ +### Speakerphone + +Whether the speakerphone is on or off.\ +\ +Note: this will only have any effect when a call has already started, +but you could use it with e.g. a Phone Offhook event if you want every +incoming call on speakerphone. diff --git a/en/help/ah_split_variable.md b/en/help/ah_split_variable.md new file mode 100644 index 0000000..1b91c76 --- /dev/null +++ b/en/help/ah_split_variable.md @@ -0,0 +1,13 @@ +### Variable Split + +Split the value of the given variable into several sub-variables.\ +\ +Each time Splitter is encountered in the variable value, a new variable +is made with name %VARX.\ +\ +If Delete Base is selected, the original variable is removed after the +split.\ +\ +Example: %VAR contains \"I;like;humus\". After the action +Split/%VAR/;/Yes %VAR is replaced with 3 variables %VAR1, %VAR2 and +%VAR3 containtin \"I\", \"like\" and \"humus\". diff --git a/en/help/ah_sql_query.md b/en/help/ah_sql_query.md new file mode 100644 index 0000000..8108556 --- /dev/null +++ b/en/help/ah_sql_query.md @@ -0,0 +1,31 @@ +### SQL Query + +Query an SQL database in a file or URI.\ +\ +In Raw mode, the Query must be entered as a full SQL statement.\ +\ +In Table URI mode the URI refers to a specific table rather than a DB; +an example is content://com.android.contacts/groups.\ +\ +In both Formatted modes, SQL directives (SELECT, WHERE etc) should be +ommitted.\ +\ +Selection refers to the WHERE directive (\'column \> 5\', \'column = +?\')\ +\ +Selection Args specifies content that fills each ? in Selection in the +order they appear.\ +\ +The result rows of the query are stored in the specified array with a +row at each index. The columns within each row are separated by the +Output Column Divider.\ +\ +Null DB values are represented as , BLOBs as , problems with \\ +\ +When making several transactions on a DB on external storage or which +needs root to access, it will be much more efficient to first move the +DB file to internal storage (Move File action) and operate on it there.\ +\ +In Raw mode, only the following directives requiring writeable DB access +are supported: INSERT INTO, UPDATE, CREATE TABLE, DELETE FROM, ALTER +TABLE. diff --git a/en/help/ah_start_timer.md b/en/help/ah_start_timer.md new file mode 100644 index 0000000..5022670 --- /dev/null +++ b/en/help/ah_start_timer.md @@ -0,0 +1,10 @@ +### Start System Timer + +Start a system or 3rd party countdown timer.\ +\ +When Show UI is selected the UI of the timer app will be displayed, +otherwise probably only a notification will be shown.\ +\ +Only available from Android 4.3.\ +\ +This action has no relation to Tasker\'s countdown timer widgets. diff --git a/en/help/ah_status_bar.md b/en/help/ah_status_bar.md new file mode 100644 index 0000000..179969e --- /dev/null +++ b/en/help/ah_status_bar.md @@ -0,0 +1,6 @@ +### Status Bar + +Expand or collapse the system status bar.\ +\ +On some devices Tasker\'s Accessibility Service will need to be enabled +in Android settings. diff --git a/en/help/ah_status_bar_icons.md b/en/help/ah_status_bar_icons.md new file mode 100644 index 0000000..0973032 --- /dev/null +++ b/en/help/ah_status_bar_icons.md @@ -0,0 +1,12 @@ +### Status Bar Icons + +Hide or show status bar icons. + +All of the icons not set in the **Icons To Hide** field will be shown. + +**Example values for *Icons To Hide*** + +- **battery,wifi**: will hide the battery and wifi icons +- **wifi**: will show the battery icon again and keep the wifi icon + hidden +- *keep empty*: will show all icons diff --git a/en/help/ah_stay_on.md b/en/help/ah_stay_on.md new file mode 100644 index 0000000..e91e7a7 --- /dev/null +++ b/en/help/ah_stay_on.md @@ -0,0 +1,7 @@ +### Stay On + +Whether to prevent the screen going off while a power supply is +present.\ +\ +The screen will still dim a few seconds before Screen Timeout is +reached. diff --git a/en/help/ah_stop.md b/en/help/ah_stop.md new file mode 100644 index 0000000..68030ad --- /dev/null +++ b/en/help/ah_stop.md @@ -0,0 +1,21 @@ +### Stop + +Stop execution of one or more tasks after any currently running action +has finished.\ +\ +If a task is specified, then **all** tasks with the same name currently +executing are stopped.\ +\ +If no task is specified, the current task is stopped (but **not** other +tasks with the same name).\ +\ +If With Error is checked, the task(s) are marked as finished due to an +error.\ +\ +Note: to stop a different task will often require that it has a lower +priority than the task with the Stop action, since otherwise the Stop +action will perhaps never be executed.\ +\ +Currently running actions in a different task will not be interupted by +a Stop action, with the exception of Play Ringtone and a non-root Run +Shell. diff --git a/en/help/ah_stop_fix.md b/en/help/ah_stop_fix.md new file mode 100644 index 0000000..15159bc --- /dev/null +++ b/en/help/ah_stop_fix.md @@ -0,0 +1,7 @@ +### Stop Location + +Stop tracking a location source which was previously initiated by Get +Location.\ +\ +This is only necessary if the Keep Tracking parameter is checked in Get +Location. diff --git a/en/help/ah_system_lock.md b/en/help/ah_system_lock.md new file mode 100644 index 0000000..9fbb1da --- /dev/null +++ b/en/help/ah_system_lock.md @@ -0,0 +1,3 @@ +### System Lock + +Turn off the display and engage the keyguard. diff --git a/en/help/ah_system_notification_vibrate.md b/en/help/ah_system_notification_vibrate.md new file mode 100644 index 0000000..dbfaf14 --- /dev/null +++ b/en/help/ah_system_notification_vibrate.md @@ -0,0 +1,8 @@ +### Vibrate On Notify + +Whether to vibrate with a system notification.\ +\ +Note: if you are going to use Tasker for this, it\'s probably best not +to mix it with other methods of controlling the setting.\ +\ +See also: Notification Volume. diff --git a/en/help/ah_system_volume.md b/en/help/ah_system_volume.md new file mode 100644 index 0000000..4ca3fa6 --- /dev/null +++ b/en/help/ah_system_volume.md @@ -0,0 +1,11 @@ +### System Volume + +Volume level of system sounds.\ +\ +Setting to 0 will mute system sounds.\ +\ +When Display is enabled, a popup will show the new level.\ +\ +When Sound is enabled, a tone will sound at the new volume level.\ +\ +Note: System Sounds must also be enabled if required. diff --git a/en/help/ah_take_call.md b/en/help/ah_take_call.md new file mode 100644 index 0000000..ac92422 --- /dev/null +++ b/en/help/ah_take_call.md @@ -0,0 +1,3 @@ +### Take Call + +Silence the ringer and pick up the phone, if it\'s ringing. diff --git a/en/help/ah_take_photo.md b/en/help/ah_take_photo.md new file mode 100644 index 0000000..2a92d8d --- /dev/null +++ b/en/help/ah_take_photo.md @@ -0,0 +1,23 @@ +### Take Photo + +Take a photo. The current activity will be interrupted for a couple of +seconds.\ +\ +If Discreet is checked, there will be no visible or audible sign of the +picture being taken, and the device will not turn on if it is already +off (except on Eclair devices).\ +\ +Without Discreet, a small delay allows time for aiming.\ +\ +Insert in Gallery: immediately insert a thumbnail in the Gallery +application, otherwise it will not appear until the next time the SD +card is scanned.\ +\ +Naming Sequence: Series: photo names have an index number attached which +increases with each one taken. Chronological: the date and time is +attached to the filename.\ +\ +Photos are in JPG format and stored in /sdcard/dcim/Tasker/. You should +not attach the .jpg affix when specifying the filename prefix.\ +\ +See also: Menu / Prefs / Action / Camera Delay. diff --git a/en/help/ah_take_screenshot.md b/en/help/ah_take_screenshot.md new file mode 100644 index 0000000..5bd6f36 --- /dev/null +++ b/en/help/ah_take_screenshot.md @@ -0,0 +1,5 @@ +### Take Screenshot + +Take a screenshot of the phones current display.\ +\ +Writing to external storage is not supported. diff --git a/en/help/ah_teslaled.md b/en/help/ah_teslaled.md new file mode 100644 index 0000000..6fd2876 --- /dev/null +++ b/en/help/ah_teslaled.md @@ -0,0 +1,11 @@ +### TeslaLED + +Use the camera flash as a torch.\ +\ +More info:\ +\ +http://teslacoilsw.com/teslaled\ +\ +Please reward the developer by choosing the Donate version!\ +\ +See Also: Alert / Torch. diff --git a/en/help/ah_test.md b/en/help/ah_test.md new file mode 100644 index 0000000..6e4dcde --- /dev/null +++ b/en/help/ah_test.md @@ -0,0 +1,18 @@ +### Test + +Test the value of a particular thing and put it in a variable.\ +\ +Failed tests will result in the specified result variable being +cleared.\ +\ +File tests: directories always have 0 size and their modification time +is the time a file was last added or deleted from them. File type is +either **file** or **dir**.\ +\ +Contact lookups are based on the phone number of the contact.\ +\ +Calendar values require the time in seconds since the epoch as data +(e.g. use %TIMES, or use the Variable Convert action to convert a +date/time into seconds first) and are entered in an array (%var1, %var2 +etc), not a plain value, because there may be multiple events at the +time specified. diff --git a/en/help/ah_test_app.md b/en/help/ah_test_app.md new file mode 100644 index 0000000..2500e8c --- /dev/null +++ b/en/help/ah_test_app.md @@ -0,0 +1,12 @@ +### Test App + +Test some aspect of an application.\ +\ +A failed test will result in the specified result variable being +cleared.\ +\ +Calendar tests: require the time in seconds since the epoch as Data +(e.g. use %TIMES, or use the Variable Convert action to convert a +date/time into seconds first) and are entered in an array (%var1, %var2 +etc), not a plain value, because there may be multiple events at the +time specified. diff --git a/en/help/ah_test_display.md b/en/help/ah_test_display.md new file mode 100644 index 0000000..78a4bb2 --- /dev/null +++ b/en/help/ah_test_display.md @@ -0,0 +1,9 @@ +### Test Display + +Test an attribute of the display.\ +\ +AutoRotate: on or off\ +\ +Orientation: portrait or landscape.\ +\ +Resolution/DPI: depends on current orientation of display. diff --git a/en/help/ah_test_file.md b/en/help/ah_test_file.md new file mode 100644 index 0000000..137f47a --- /dev/null +++ b/en/help/ah_test_file.md @@ -0,0 +1,13 @@ +### Test File + +Test an attribute of a file and put the result in a variable.\ +\ +A failed test will result in the specified result variable being +cleared.\ +\ +Parent Dir: the parent directory of the given file, note that it may not +actually exist.\ +Size: file size in bytes, or for directories number of children.\ +Modification time: the modification time of a directory is the time a +file was last added or deleted from them.\ +Type: either **file** or **dir**. diff --git a/en/help/ah_test_media.md b/en/help/ah_test_media.md new file mode 100644 index 0000000..21612fd --- /dev/null +++ b/en/help/ah_test_media.md @@ -0,0 +1,9 @@ +### Test Media + +Test some aspect of a media carrier or player.\ +\ +Music Playing Position: applies only to tracks started by Tasker via the +Music Play action.\ +\ +Note: a failed test will result in the specified result variable being +cleared. diff --git a/en/help/ah_test_net.md b/en/help/ah_test_net.md new file mode 100644 index 0000000..a72e7b2 --- /dev/null +++ b/en/help/ah_test_net.md @@ -0,0 +1,15 @@ +### Test Net + +Test a network attribute.\ +\ +Possible Connection Types are **none, mobile, wifi, mms, supl, dun, +hipri, wimax, bluetooth, dummy, ethernet**, and **vpn**.\ +Mobile Data and Wifi Hidden are **yes** or **no**.\ +\ +BT Paired Addresses is a comma-separated list of the bluetooth devices +this device is paired with. The other BT tests need a name or address to +test.\ +\ +BT Device Connected may require Tasker to be enabled when the device +connects (for some device types).\ +Bluetooth must be enabled for all BT tests. diff --git a/en/help/ah_test_phone.md b/en/help/ah_test_phone.md new file mode 100644 index 0000000..5a8a2f9 --- /dev/null +++ b/en/help/ah_test_phone.md @@ -0,0 +1,10 @@ +### Test Phone + +Test something phone related.\ +\ +\ +\ +A failed test will result in the specified result variable being +cleared.\ +\ +All tests require the phone number of the contact as Data. diff --git a/en/help/ah_test_scene.md b/en/help/ah_test_scene.md new file mode 100644 index 0000000..4a23096 --- /dev/null +++ b/en/help/ah_test_scene.md @@ -0,0 +1,13 @@ +### Test Scene + +Test an attribute of the specified scene and store the result in the +specified variable.\ +\ +Possible status values are\ +\ +uncreated, hidden, visible, background (shown but currently not on +screen)\ +\ +Offsets are percentages from -100 to 100, with 0 being display centre.\ +\ +If the scene does not exist the specified variable will be cleared. diff --git a/en/help/ah_test_system.md b/en/help/ah_test_system.md new file mode 100644 index 0000000..51629ab --- /dev/null +++ b/en/help/ah_test_system.md @@ -0,0 +1,9 @@ +### Test System + +Test an attribute of the operating system.\ +\ +Android ID: 64 bit hex value which should be constant for the life of +the device.\ +\ +UserID: the user ID of the current active (foreground) user, only +available on Android 4.2+. diff --git a/en/help/ah_test_tasker.md b/en/help/ah_test_tasker.md new file mode 100644 index 0000000..ab94c3f --- /dev/null +++ b/en/help/ah_test_tasker.md @@ -0,0 +1,10 @@ +### Test Tasker + +Test some aspect of Tasker\'s configuration.\ +\ +The Global Var, Local Var, Profile, Scene and Task test types store +their results as an array (%var1, %var2 etc).\ +\ +The Global Var type doesn\'t include built-in variables.\ +\ +The Profile and Task test types only list **named** profiles or tasks. diff --git a/en/help/ah_test_variable.md b/en/help/ah_test_variable.md new file mode 100644 index 0000000..8af2443 --- /dev/null +++ b/en/help/ah_test_variable.md @@ -0,0 +1,3 @@ +### Test Variable + +Test a variable attribute. diff --git a/en/help/ah_tether_usb.md b/en/help/ah_tether_usb.md new file mode 100644 index 0000000..a9de6f0 --- /dev/null +++ b/en/help/ah_tether_usb.md @@ -0,0 +1,6 @@ +### USB Tether + +Turn on sharing of the device\'ss Internet connection via USB cable.\ +\ +On some devices, you may need to enable the USB tether once in Android +settings before Tasker will be able to do it. diff --git a/en/help/ah_tether_wifi.md b/en/help/ah_tether_wifi.md new file mode 100644 index 0000000..6532b4c --- /dev/null +++ b/en/help/ah_tether_wifi.md @@ -0,0 +1,17 @@ +### WiFi Tether + +Turn on sharing of the device\'s Internet connection via wifi.\ +\ +If Wifi was on, it will be turned off, you will need to enable it +manually after the tether. + +If the action fails for you, saying that you need to the +android.permission.TETHER\_PRIVILEGED permission you can still make it +work **if you have a rooted device**: + +- Make a a backup of your Tasker setup +- Copy \"/data/app/net.dinglisch.android.taskerm\" folder to + \"/system/priv-app\" +- Uninstall Tasker and reboot +- After the reboot Tasker should be installed as a System app. +- Restore Tasker data diff --git a/en/help/ah_timer_widget_control.md b/en/help/ah_timer_widget_control.md new file mode 100644 index 0000000..f1350b6 --- /dev/null +++ b/en/help/ah_timer_widget_control.md @@ -0,0 +1,13 @@ +### Timer Widget Control + +Control the operation of a previously-created Task Timer widget.\ +\ +End: cause the timer to finish. The associated task will execute if the +timer was previously running.\ +\ +Resume: resume (or start, if not paused)) the countdown.\ +\ +Reset: stop the countdown and set it to it\'s initial value.\ +\ +Update: refresh the display of the remaining time, not usually +necessary. diff --git a/en/help/ah_timer_widget_set.md b/en/help/ah_timer_widget_set.md new file mode 100644 index 0000000..7adbc71 --- /dev/null +++ b/en/help/ah_timer_widget_set.md @@ -0,0 +1,7 @@ +### Timer Widget Set + +Set the period of a previously-created Task Timer widget.\ +\ +The elapsed time is set to 0.\ +\ +If the timer was already running, it will continue to do so. diff --git a/en/help/ah_toggle_app_dock.md b/en/help/ah_toggle_app_dock.md new file mode 100644 index 0000000..fd10080 --- /dev/null +++ b/en/help/ah_toggle_app_dock.md @@ -0,0 +1,3 @@ +### Toggle Split Screen + +Toggle whether the current app is in split screen mode or not. diff --git a/en/help/ah_toggle_profile.md b/en/help/ah_toggle_profile.md new file mode 100644 index 0000000..7d8d493 --- /dev/null +++ b/en/help/ah_toggle_profile.md @@ -0,0 +1,5 @@ +### Profile Status + +Enable or disable the named profile.\ +\ +If the state is already the desired one, there will be no effect. diff --git a/en/help/ah_torch.md b/en/help/ah_torch.md new file mode 100644 index 0000000..abe96ff --- /dev/null +++ b/en/help/ah_torch.md @@ -0,0 +1,9 @@ +### Torch + +Hold the camera flashlight on.\ +\ +May not work on all devices.\ +\ +If it gets stuck on, just turn the device off.\ +\ +See Also: 3rd Party / TeslaLED. diff --git a/en/help/ah_turn_off_display.md b/en/help/ah_turn_off_display.md new file mode 100644 index 0000000..2bbdc9d --- /dev/null +++ b/en/help/ah_turn_off_display.md @@ -0,0 +1,39 @@ +### Turn Off + +If the display is on, it will be turned off. + +On some devices it takes about 3 seconds for it to really turn off, on +others it might take around 10 seconds. Either way, a fully black screen +will be shown while the screen doesn\'t really turn off. + +::: {.inputs} +::: {.input} +::: {.title} +Dim +::: + +::: {.text} +Set the brightness to 0 prior to showing the black screen. Useful for +non OLED displays. +::: +::: + +::: {.input} +::: {.title} +Lock +::: + +::: {.text} +If set, will use the Accessibility Service to lock the screen, but +you\'ll still be able to unlock it with Smart Unlock or by using your +fingerprint, unlike with the **System Lock** action where you\'ll have +to unlock your screen with a password. +::: + +::: {.text} +If Tasker has the [Write Secure Settings](ah_secure_setting_grant.html) +permissions, you don\'t need to turn your accessibility service for this +to work. +::: +::: +::: diff --git a/en/help/ah_type.md b/en/help/ah_type.md new file mode 100644 index 0000000..08e4bae --- /dev/null +++ b/en/help/ah_type.md @@ -0,0 +1,10 @@ +### Type + +Simulate typing of text.\ +\ +Only available on a rooted device.\ +\ +Accented characters currently do not work.\ +\ +USB Debugging probably needs to be enabled in Android\'s Developer +Settings. diff --git a/en/help/ah_unzip_file.md b/en/help/ah_unzip_file.md new file mode 100644 index 0000000..ea5562b --- /dev/null +++ b/en/help/ah_unzip_file.md @@ -0,0 +1,7 @@ +### UnZip + +Decompress the specified zip archive file on the SD card.\ +\ +You do not need to add .zip on the end of the filename.\ +\ +Specify Delete Zip to delete the zip file if the compression succeeds. diff --git a/en/help/ah_vibrate.md b/en/help/ah_vibrate.md new file mode 100644 index 0000000..0452a3d --- /dev/null +++ b/en/help/ah_vibrate.md @@ -0,0 +1,6 @@ +### Vibrate + +Activate the device\'s vibrator.\ +\ +The specified time is in milliseconds i.e. to vibrate for one second +enter 1000, to vibrate for half a second enter 500. diff --git a/en/help/ah_vibrate_pattern.md b/en/help/ah_vibrate_pattern.md new file mode 100644 index 0000000..68df3c4 --- /dev/null +++ b/en/help/ah_vibrate_pattern.md @@ -0,0 +1,12 @@ +### Vibrate Pattern + +Activate the device\'s vibrator in a pattern.\ +\ +Enter a comma-separated list of numbers. The 1st one is how long to be +silent for, the 2nd one is how long to vibrate for and then +alternating.\ +\ +Times are in milliseconds i.e. to vibrate for one second enter 1000, to +vibrate for half a second enter 500.\ +\ +0 values are disallowed, excepting for the first value. diff --git a/en/help/ah_view_file.md b/en/help/ah_view_file.md new file mode 100644 index 0000000..f29c0b2 --- /dev/null +++ b/en/help/ah_view_file.md @@ -0,0 +1,9 @@ +### Open File + +Open the specified file on the SD card.\ +\ +The file type is determined by the extension, unless a specific Mime +Type is specified.\ +\ +The viewer/listener used depends on that registered by the system for +the file type. diff --git a/en/help/ah_view_url.md b/en/help/ah_view_url.md new file mode 100644 index 0000000..b25b13a --- /dev/null +++ b/en/help/ah_view_url.md @@ -0,0 +1,3 @@ +### Browse URL + +Open the specified URL in the default browser. diff --git a/en/help/ah_voice_command.md b/en/help/ah_voice_command.md new file mode 100644 index 0000000..34a0029 --- /dev/null +++ b/en/help/ah_voice_command.md @@ -0,0 +1,6 @@ +### Voice Command + +Run the system-default application for processing voice commands.\ +\ +Note: unlike the Get Voice action, the calling task will not wait for +the voice command to be processed. diff --git a/en/help/ah_volume_long_press_grant.md b/en/help/ah_volume_long_press_grant.md new file mode 100644 index 0000000..e4e16ee --- /dev/null +++ b/en/help/ah_volume_long_press_grant.md @@ -0,0 +1,38 @@ +#### [Volume Key Long Press Handling]{.name} Permission + +To use this, Tasker needs to be granted permission to [handle volume key +long press interception]{.name} on your device + +1. **Enable Developer Mode**: Go to Android Settings -\> About Phone + and look for the **Build Number** option. Touch it multiple times + until developer mode is enabled. +2. **Enable USB Debugging**: Go to Android Settings -\> and look for + the **Developer Options** option. In there, enable the **USB + debugging** option. +3. **Install ADB on your PC**: Check + [here](https://www.xda-developers.com/google-releases-separate-adb-and-fastboot-binary-downloads/) + for a quick way to do it. +4. **Connect device to PC**: Connect your device to a PC and look on + your phone. A prompt should show up asking you to allow your phone + to be debugged by your PC. Accept this. +5. Open the command prompt from the file folder that contains the + extracted downloads. To do this, press the windows key and type + **cmd**. When the prompt opens, type **cd** followed by folder your + downloaded ADB to. +6. **Grant permission**: Open a command line a on your PC and write + + ``` {.small} + adb shell pm grant net.dinglisch.android.taskerm android.permission.SET_VOLUME_KEY_LONG_PRESS_LISTENER + ``` + + If you\'re on a mac write + + ``` {.small} + ./adb shell pm grant net.dinglisch.android.taskerm android.permission.SET_VOLUME_KEY_LONG_PRESS_LISTENER + ``` + +#### Notes: + +- On MIUI devices you may have to open developer options and enable + the **USB debugging (Security Settings)** setting to be able to run + the above command. diff --git a/en/help/ah_wait.md b/en/help/ah_wait.md new file mode 100644 index 0000000..6047373 --- /dev/null +++ b/en/help/ah_wait.md @@ -0,0 +1,7 @@ +### Wait + +Stop executing the current Task for the specified amount of time.\ +\ +If another task becomes queued during the wait, the wait could end up +being much longer than expected, depending on the other task\'s priority +and actions. diff --git a/en/help/ah_wait_until.md b/en/help/ah_wait_until.md new file mode 100644 index 0000000..c2767b3 --- /dev/null +++ b/en/help/ah_wait_until.md @@ -0,0 +1,9 @@ +### Wait Until + +Stop executing the current Task until the condition is met. Wait +\*maximally\* the specified time between checks. The actual time between +checks will vary because Tasker will opportunistically retest the +condition at times when battery life will be unaffected.\ +\ +Note: a very small wait period might have battery life implications, in +general it should be as large as is acceptable. diff --git a/en/help/ah_widgetlocker.md b/en/help/ah_widgetlocker.md new file mode 100644 index 0000000..4756675 --- /dev/null +++ b/en/help/ah_widgetlocker.md @@ -0,0 +1,8 @@ +### WidgetLocker + +Info:\ +\ +http://teslacoilsw.com/widgetlocker\ +\ +Suspend: Keep WidgetLocker enabled/running, but prevent it from +activating on screen off. diff --git a/en/help/ah_wifi_control.md b/en/help/ah_wifi_control.md new file mode 100644 index 0000000..abf2586 --- /dev/null +++ b/en/help/ah_wifi_control.md @@ -0,0 +1,13 @@ +### WiFi Net + +Change the wifi network connection status.\ +\ +Reassociate: reconnect even if already connected.\ +\ +Force: try to carry out the action even if the network status that +Android reports is incompatible e.g. disconnect even if Android reports +already disconnected.\ +\ +Report Failure: flash a short error message if the action fails. Note +that Android might not e.g. report a disconnect failure if there is +currently no connection. diff --git a/en/help/ah_wifi_sleep_policy.md b/en/help/ah_wifi_sleep_policy.md new file mode 100644 index 0000000..7615ac2 --- /dev/null +++ b/en/help/ah_wifi_sleep_policy.md @@ -0,0 +1,9 @@ +### WiFi Sleep + +The policy for deciding when Wifi should go to sleep. When Wifi goes to +sleep, the device will switch to using the mobile data connection.\ +\ +\\*Default*: depends on the Android version. Will be something like +\'When the screen goes off\' or \'After 15 Minutes\'.\ +\ +*Never While Plugged*: When Screen Off if on battery power. diff --git a/en/help/ah_wifi_status.md b/en/help/ah_wifi_status.md new file mode 100644 index 0000000..a640af6 --- /dev/null +++ b/en/help/ah_wifi_status.md @@ -0,0 +1,11 @@ +### WiFi + +Whether the WiFi radio is enabled or disabled.\ +\ +This action is ignored when Airplane Mode is on prior to Android 2.0. It +also has no effect when a Wifi Tether (Hotspot) is enabled.\ +\ +Note: it\'s not usually advisable to use the Toggle setting when also +using a Wifi Near state with Enable Wifi checked, since the action will +then have different effects dependent on whether wifi has already been +auto-enabled for a wifi scan or not. diff --git a/en/help/ah_wimax_status.md b/en/help/ah_wimax_status.md new file mode 100644 index 0000000..10c5749 --- /dev/null +++ b/en/help/ah_wimax_status.md @@ -0,0 +1,3 @@ +### WiMax + +Whether the Wimax radio is enabled or disabled. diff --git a/en/help/ah_write_binary.md b/en/help/ah_write_binary.md new file mode 100644 index 0000000..ce21f57 --- /dev/null +++ b/en/help/ah_write_binary.md @@ -0,0 +1,5 @@ +### Write Binary + +Write base 64 data from a variable to binary format in a file.\ +\ +See Also: actions Read Binary, Variable Convert diff --git a/en/help/ah_write_file.md b/en/help/ah_write_file.md new file mode 100644 index 0000000..df4637f --- /dev/null +++ b/en/help/ah_write_file.md @@ -0,0 +1,8 @@ +### Write File + +Write the specified text to the specified SD card file.\ +\ +If Append is checked, the text is added to the end of the file without +changing the existing contents.\ +\ +A newline character is appended to the text if that option is selected. diff --git a/en/help/ah_zip_file.md b/en/help/ah_zip_file.md new file mode 100644 index 0000000..ed6daeb --- /dev/null +++ b/en/help/ah_zip_file.md @@ -0,0 +1,15 @@ +### Zip + +Compress the specified file(s) (or directory(ies), recursively) on the +SD card to a zip archive,\ +\ +Multiple Files can be specified by separating them with a newline.\ +\ +If only a single file is specified and no Output Path is give, the +Output Path will be the same file with a .zip extension.\ +\ +Level is the compression level to use. Higher values will take longer to +compress but use less space.\ +\ +Specify Delete Orig to delete the original file if the compression +succeeds. diff --git a/en/help/ah_zoom_element_alpha.md b/en/help/ah_zoom_element_alpha.md new file mode 100644 index 0000000..ba34a56 --- /dev/null +++ b/en/help/ah_zoom_element_alpha.md @@ -0,0 +1,5 @@ +### Zoom Alpha + +Set the alpha level of the specified Zoom image element.\ +\ +0 is invisible, 255 is fully visible. diff --git a/en/help/ah_zoom_element_colour.md b/en/help/ah_zoom_element_colour.md new file mode 100644 index 0000000..d8e003b --- /dev/null +++ b/en/help/ah_zoom_element_colour.md @@ -0,0 +1,7 @@ +### Zoom Colour + +Set the Colour and End Colour of the specified Zoom oval or rectangle +element.\ +\ +End Colour is only used if a shading has been specified for the element +in Zoom. diff --git a/en/help/ah_zoom_element_image.md b/en/help/ah_zoom_element_image.md new file mode 100644 index 0000000..ce25d5b --- /dev/null +++ b/en/help/ah_zoom_element_image.md @@ -0,0 +1,3 @@ +### Zoom Image + +Set the image source of the specified Zoom image element. diff --git a/en/help/ah_zoom_element_position.md b/en/help/ah_zoom_element_position.md new file mode 100644 index 0000000..59065f5 --- /dev/null +++ b/en/help/ah_zoom_element_position.md @@ -0,0 +1,4 @@ +### Zoom Position + +Set the X and Y coordinates of the specified Zoom element, relative to +the top-left corner of its widget. diff --git a/en/help/ah_zoom_element_size.md b/en/help/ah_zoom_element_size.md new file mode 100644 index 0000000..746ac2c --- /dev/null +++ b/en/help/ah_zoom_element_size.md @@ -0,0 +1,3 @@ +### Zoom Size + +Set the width and height of the specified Zoom element. diff --git a/en/help/ah_zoom_element_state.md b/en/help/ah_zoom_element_state.md new file mode 100644 index 0000000..30bd476 --- /dev/null +++ b/en/help/ah_zoom_element_state.md @@ -0,0 +1,4 @@ +### Zoom State + +Set the state of the specified Zoom element, which must be a Switcher or +(more unusually) an AutoSwitcher. diff --git a/en/help/ah_zoom_element_text.md b/en/help/ah_zoom_element_text.md new file mode 100644 index 0000000..6fbe1e2 --- /dev/null +++ b/en/help/ah_zoom_element_text.md @@ -0,0 +1,3 @@ +### Zoom Text + +Set the text or label of the specified Zoom text or button element. diff --git a/en/help/ah_zoom_element_text_colour.md b/en/help/ah_zoom_element_text_colour.md new file mode 100644 index 0000000..bd6c237 --- /dev/null +++ b/en/help/ah_zoom_element_text_colour.md @@ -0,0 +1,4 @@ +### Zoom Text Colour + +Set the text or label colour of the specified Zoom text or button +element. diff --git a/en/help/ah_zoom_element_text_size.md b/en/help/ah_zoom_element_text_size.md new file mode 100644 index 0000000..09fd544 --- /dev/null +++ b/en/help/ah_zoom_element_text_size.md @@ -0,0 +1,3 @@ +### Zoom Text Size + +Set the text or label size of the specified Zoom text or button element. diff --git a/en/help/ah_zoom_element_visibility.md b/en/help/ah_zoom_element_visibility.md new file mode 100644 index 0000000..0f89cde --- /dev/null +++ b/en/help/ah_zoom_element_visibility.md @@ -0,0 +1,3 @@ +### Zoom Visibility + +Show or hide the specified Zoom element. diff --git a/en/help/eh_accelerometer_gesture.md b/en/help/eh_accelerometer_gesture.md new file mode 100644 index 0000000..45176fb --- /dev/null +++ b/en/help/eh_accelerometer_gesture.md @@ -0,0 +1,10 @@ +### Gesture + +The phone has just been waved around in a particular way.\ +\ +Name is a label to be used for the gesture. To record a pattern, press +the Camera, Call, Menu, Search or Volume buttons.\ +To record the final point, press-and-hold one of those buttons.\ +\ +Be sure to read the Userguide section on Accelerometer Gestures before +trying to use this feature. diff --git a/en/help/eh_alarm.md b/en/help/eh_alarm.md new file mode 100644 index 0000000..603620f --- /dev/null +++ b/en/help/eh_alarm.md @@ -0,0 +1,10 @@ +### Alarm Clock + +The Android alarm clock with the specified label is about to go off.\ +\ +Stop will prevent the system responding to the alarm in any way. It\'s +unknown if this causes future problems.\ +\ +If you have a 3rd Party alarm, it may have its own event in the 3rd +Party event category. Not all alarm packages pass along the label of the +alarm. diff --git a/en/help/eh_alarm_done.md b/en/help/eh_alarm_done.md new file mode 100644 index 0000000..a828d28 --- /dev/null +++ b/en/help/eh_alarm_done.md @@ -0,0 +1,6 @@ +### Alarm Done + +An Android alarm clock alarm has just been dismissed or snoozed.\ +\ +If you have a 3rd Party alarm, it may have its own event in the 3rd +Party event category. diff --git a/en/help/eh_assist.md b/en/help/eh_assist.md new file mode 100644 index 0000000..1586602 --- /dev/null +++ b/en/help/eh_assist.md @@ -0,0 +1,8 @@ +### Assistance Request + +The user has just requested assistance within the specified app.\ +\ +On standard Android devices, this occurs when the user strokes up +through the bottom middle of the display.\ +\ +Some ROMs do not support specification of an App. diff --git a/en/help/eh_battery_changed.md b/en/help/eh_battery_changed.md new file mode 100644 index 0000000..94b18ae --- /dev/null +++ b/en/help/eh_battery_changed.md @@ -0,0 +1,5 @@ +### Battery Changed + +The battery level has changed.\ +\ +Note that this will occur quite often. diff --git a/en/help/eh_boot_completed.md b/en/help/eh_boot_completed.md new file mode 100644 index 0000000..00a38b2 --- /dev/null +++ b/en/help/eh_boot_completed.md @@ -0,0 +1,10 @@ +### Device Boot + +The phone has just finished turning on (after being shut down, not just +the screen blanking).\ +\ +It\'s advisable that any tasks linked to this event start with a Wait +action of e.g. 5 seconds, because Android is extremely busy immediately +after a boot. Note also that the SD card may not be yet mounted when +this event is received, which is another reason for delaying the task if +it relies on the SD card being present. diff --git a/en/help/eh_button_search_long.md b/en/help/eh_button_search_long.md new file mode 100644 index 0000000..07e4e8c --- /dev/null +++ b/en/help/eh_button_search_long.md @@ -0,0 +1,7 @@ +### Button: Long Search + +The search button has been long-pressed.\ +\ +In order for this event to work, Tasker\'s Search Helper should be +selected as the activity to handle the press when Android shows the +relevant dialog. diff --git a/en/help/eh_button_view_clicked.md b/en/help/eh_button_view_clicked.md new file mode 100644 index 0000000..6ff9676 --- /dev/null +++ b/en/help/eh_button_view_clicked.md @@ -0,0 +1,11 @@ +### Button Widget Clicked + +A Button (Normal, Checkbox, Toggle etc) has been clicked.\ +\ +If Label is specified, the button must have a label which matches it. +Note that e.g. Image buttons don\'t have labels.\ +\ +Click Length: long clicks will only be registered if the application +containing the button allows long clicks of it.\ +\ +New Button State is only applicable for Toggle and Checkbox buttons. diff --git a/en/help/eh_camera_button.md b/en/help/eh_camera_button.md new file mode 100644 index 0000000..1c97602 --- /dev/null +++ b/en/help/eh_camera_button.md @@ -0,0 +1,7 @@ +### Button: Camera + +The camera hardware button has been pressed and held.\ +\ +Often, if you respond to this event, you will want to set the Priority +high and also set the Abort flag so that the camera application is not +launched. diff --git a/en/help/eh_custom_setting.md b/en/help/eh_custom_setting.md new file mode 100644 index 0000000..9e86e18 --- /dev/null +++ b/en/help/eh_custom_setting.md @@ -0,0 +1,15 @@ +### Custom Setting + +Listen for changes in settings in the three Settings Tables on Android +(Global, Secure and System) + +If you don\'t set the **Value** the event will trigger on any value. + +In the task, the new value for the configured Custom Setting will be +available in the **%evtprm3** variable + +You can get all the info about the change in the task by accessing the +**%evtprm()** array + +Example: [How to enable Android P's Dark Theme when Night Light is +on](https://www.xda-developers.com/enable-android-p-dark-theme-night-light/) diff --git a/en/help/eh_date_set.md b/en/help/eh_date_set.md new file mode 100644 index 0000000..af8ca32 --- /dev/null +++ b/en/help/eh_date_set.md @@ -0,0 +1,6 @@ +### Date Set + +The date or time has been changed.\ +\ +(it\'s a mystery to the author why Android reports the time has been set +when the date is changed) diff --git a/en/help/eh_file.md b/en/help/eh_file.md new file mode 100644 index 0000000..fbc352a --- /dev/null +++ b/en/help/eh_file.md @@ -0,0 +1,18 @@ +### File Events + +The named operation was just carried out on the specified SD card file.\ +\ +There will always be an OPEN event before MODIFY (if the file is +written) then CLOSE events.\ +\ +The file must exist when Tasker\'s UI is exited or the SD card is +inserted for this event to be active.\ +\ +Be very careful if you act on a file event by doing an action with the +file. For instance, if you respond to an open event by copying the file +make sure you have Abort New Task set in task properties, since the act +of copying the file will trigger another open event and an endless loop +will occur otherwise.\ +\ +Limitation: if a file is deleted and recreated, subsequent file events +will not be reported. diff --git a/en/help/eh_gentle_alarm.md b/en/help/eh_gentle_alarm.md new file mode 100644 index 0000000..0d23a2e --- /dev/null +++ b/en/help/eh_gentle_alarm.md @@ -0,0 +1,7 @@ +### Gentle Alarm + +Info:\ +\ +\\thttp://m.mobitobi.com/en/android/gentlealarm.php\ +\ +Requires version 3.1.0+ diff --git a/en/help/eh_index.md b/en/help/eh_index.md new file mode 100644 index 0000000..bd42457 --- /dev/null +++ b/en/help/eh_index.md @@ -0,0 +1,461 @@ +--- +title: 'Tasker: Event A-Z' +--- + +### Tasker: Event A-Z + +#### Alarm Clock + +The Android alarm clock with the specified label is about to go off.\ +\ +Stop will prevent the system responding to the alarm in any way. It\'s +unknown if this causes future problems.\ +\ +If you have a 3rd Party alarm, it may have its own event in the 3rd +Party event category. Not all alarm packages pass along the label of the +alarm. + +#### Alarm Done + +An Android alarm clock alarm has just been dismissed or snoozed.\ +\ +If you have a 3rd Party alarm, it may have its own event in the 3rd +Party event category. + +#### Assistance Request + +The user has just requested assistance within the specified app.\ +\ +On standard Android devices, this occurs when the user strokes up +through the bottom middle of the display.\ +\ +Some ROMs do not support specification of an App. + +#### Battery Changed + +The battery level has changed.\ +\ +Note that this will occur quite often. + +#### Button Widget Clicked + +A Button (Normal, Checkbox, Toggle etc) has been clicked.\ +\ +If Label is specified, the button must have a label which matches it. +Note that e.g. Image buttons don\'t have labels.\ +\ +Click Length: long clicks will only be registered if the application +containing the button allows long clicks of it.\ +\ +New Button State is only applicable for Toggle and Checkbox buttons. + +#### Button: Camera + +The camera hardware button has been pressed and held.\ +\ +Often, if you respond to this event, you will want to set the Priority +high and also set the Abort flag so that the camera application is not +launched. + +#### Button: Long Search + +The search button has been long-pressed.\ +\ +In order for this event to work, Tasker\'s Search Helper should be +selected as the activity to handle the press when Android shows the +relevant dialog. + +#### Card Mounted + +An inserted card has been registered by the system and is ready for +use.\ +\ +If you specify a title, only the card with a title containing the +specified characters will match this event context, thus allowing you to +do different things depending on which card is inserted.\ +\ +You can set the title of a card by creating a file in its base (root) +directory called xxxxx.ttl (replace xxxxx with the desired title).\ +\ +If you specify a Frequency and it\'s greater than 1, the event will only +match if the card has been mounted a multiple of Frequency times since +the last reboot. For example, a Frequency of 3 will match when the card +has been mounted 3, 6, 9\... times. + +#### Card Removed + +A card has been physically removed from the device. + +#### Card Unmounted + +A card has been unregistered by the system in preparation for removal, +or has been physically removed from the device. + +#### Date Set + +The date or time has been changed.\ +\ +(it\'s a mystery to the author why Android reports the time has been set +when the date is changed) + +#### Device Boot + +The phone has just finished turning on (after being shut down, not just +the screen blanking).\ +\ +It\'s advisable that any tasks linked to this event start with a Wait +action of e.g. 5 seconds, because Android is extremely busy immediately +after a boot. Note also that the SD card may not be yet mounted when +this event is received, which is another reason for delaying the task if +it relies on the SD card being present. + +#### Device Shutdown + +The phone is about to shutdown (completely turned off, not standby).\ +\ +Note: this is right before shutdown. You might backup a file or similar, +but UI interactions such as dialogs and anything that takes a +significant amount of time will not work. + +#### Display On + +The display has just come on.\ +\ +Note that this can occur automatically on many occasions such as when an +alarm goes off. Most likely you will be better off using the Display +Unlocked event. + +#### Display Unlocked + +The display has just been unlocked (with or without an unlock pattern). + +#### File Events + +The named operation was just carried out on the specified SD card file.\ +\ +There will always be an OPEN event before MODIFY (if the file is +written) then CLOSE events.\ +\ +The file must exist when Tasker\'s UI is exited or the SD card is +inserted for this event to be active.\ +\ +Be very careful if you act on a file event by doing an action with the +file. For instance, if you respond to an open event by copying the file +make sure you have Abort New Task set in task properties, since the act +of copying the file will trigger another open event and an endless loop +will occur otherwise.\ +\ +Limitation: if a file is deleted and recreated, subsequent file events +will not be reported. + +#### Gentle Alarm + +Info:\ +\ +\\thttp://m.mobitobi.com/en/android/gentlealarm.php\ +\ +Requires version 3.1.0+ + +#### Gesture + +The phone has just been waved around in a particular way.\ +\ +Name is a label to be used for the gesture. To record a pattern, press +the Camera, Call, Menu, Search or Volume buttons.\ +To record the final point, press-and-hold one of those buttons.\ +\ +Be sure to read the Userguide section on Accelerometer Gestures before +trying to use this feature. + +#### Intent Received + +A broadcast intent with the specified parameters has been received.\ +\ +This event is intended for advanced users.\ +\ +See *Intents* in the Userguide for more info. + +#### K9 Email Received + +An email has been received by the K9 mail agent.\ +\ +Note: the minimum version of K9 supported is 2.3. + +#### Kaloer Clock + +Info:\ +\ +http://www.kaloer.com/kaloer-clock + +#### Missed Call + +A call has been missed.\ +\ +This event activates every time there is a new missed call. If you want +something to happen until a call has been notified, it\'s better to use +the state Missed Call. + +#### Monitor Start + +Tasker\'s Monitor Service has just started.\ +\ +Tasks triggered from this action are guaranteed to be submitted for +execution before any other and are therefore a good place to perform +preparatory actions like setting the initial values for variables.\ +\ +If it\'s necessary to ensure that resulting tasks finish before any +other task starts, set the Task Priority in the profile properties to +the highest level. + +#### New Package + +A new package has just been added to the system.\ +\ +Name is the name of the new package e.g. \'Analog Compass\'\ +\ +Package is the package name e.g. com.example.packagename.\ +\ +This event does not occur when a new version of a package is replacing +an older one. + +#### New Window + +A new window has appeared e.g. activity, popup.\ +\ +If Label is specified the label of the new window must match it.\ +\ +For some windows, the label might be that of the first item in the +window e.g. a menu entry or even a button.\ +\ +To show all window titles, leave all parameters empty and in the +resulting task add a Flash action of %WIN. + +#### Notification + +A notification has been sent to the status bar.\ +\ +If an Owner Application is specified, the notification must have been +sent by the corresponding package.\ +\ +If the notification is a duplicate of one already in the status bar, it +will still trigger the event (unless New Only is checked, on Android +6+)\ +\ +Other Text (Android 6+) is a collection of any other texts found in the +notification.\ +\ +This event is not triggered by Tasker-generated notifications. + +#### Notification Click + +A notification in the status bar pulldown has been clicked.\ +\ +If an Owner Application is specified, it must match that of the +notification. Note that some apps are not reliable in this regard.\ +\ +If a Title is specified, the title of the notification must match it.\ +\ +If Tasker\'s Accessibility Service is not enabled, only notifications +created by Tasker\'s Notify actions can be detected. + +#### Notification Removed + +A notification has been removed from the status bar.\ +\ +If an Owner Application is specified, the notification must have been +sent by the corresponding package.\ +\ +Other Text (Android 6+) is a collection of any other texts found in the +notification.\ +\ +This event is not triggered by Tasker-generated notifications. + +#### Notify My Android + +Info:\ +\ +http://notifymyandroid.com + +#### OpenWatch + +Info:\ +\ +http://www.smartmadsoft.com/ + +#### Package Removed + +A package has just been removed from the system.\ +\ +Package is the package name e.g. com.example.packagename + +#### Package Updated + +An existing package has just been updated.\ +\ +Name is the name of the updated package e.g. \'Analog Compass\'\ +\ +Package is the package name e.g. com.example.packagename + +#### Phone Idle + +The phone is not doing anything (likely a call is just finished). + +#### Phone Offhook + +The phone has just gone off the hook (at least one call exists that is +dialling, active or on hold). + +#### Phone Ringing + +There is an incoming phone call.\ +\ +If specified, Caller must match the incoming call (see *Pattern +Matching* in the Userguide).\ +\ +The caller number will be 0 and the caller name ? if the number is +hidden or unknown. + +#### Pomodroido + +Info:\ +\ +\\twww.pomodroido.com + +#### Quick Setting Clicked + +A custom tile previously added to the system Quick Settings panel has +been clicked.\ +\ +Only usable on Cyanogen 5.1.1+ ROMs with Custom Tile support. + +#### Radardroid + +Info:\ +\ +\\twww.radardroid.com + +#### Received Data SMS + +A data SMS has been received.\ +\ +Data SMSs are sent to particular ports. This event will trigger on an +SMS to any port, unless a particular one is specified.\ +\ +Data is the Base64-encoded binary data which was received, accessible +via %evtprm3 in the resulting task.\ +It can be e.g. written to a file with Write Binary or converted decoded +to a string (assuming the binary data represents a string) with the +Variable Convert action. + +#### Received Text + +A text message has been received.\ +\ +If the Sender parameter is filled in, only texts from senders that match +the Sender parameter will match.\ +\ +You can long-click multiple times to match multiple senders.\ +\ +Content is the Body of an SMS, or the Subject or an MMS. + +#### Reddit Notify + +The Number parameter refers to the number of unread emails or the new +Karma total.\ +\ +The Message parameter matches against all of the new messages joined +together. + +#### SMS Failure + +The SMS sent to the (optional) specified phone number failed.\ +\ +Only works for an SMS sent by Tasker\'s Send SMS action. + +#### SMS Success + +The SMS sent to the (optional) specified phone number succeeded.\ +\ +Only works for an SMS sent by Tasker\'s Send SMS action. + +#### Screebl + +Info:\ +\ +http://keyeslabs.com/joomla/screebl\ +\ +Warning: this event may fire very rapidly on the edge of the orientation +range. It\'s therefore a very good idea to configure a cooldown time in +the Profile Properties of this profile. + +#### Shake + +The device is being physically shaken.\ +\ +Note: on some devices the Axis may be incorrect e.g. Left-Right may be +triggered by Up-Down shaking.\ +\ +See Also: Menu / Prefs / Monitor / Display Off Monitoring / +Accelerometer + +#### Steps Taken + +The specified number of steps have been taken.\ +\ +The total number of steps taken since the last reset is available in the +triggered task in %evtprm1.\ +\ +A restart of the device, disabling the profile, disabling or +reinstalling Tasker causes the count to **reset**.\ +\ +When other contexts in the same profile are not active, the count is +**paused**.\ +\ +Requires Android version 4.4+ and that a hardware pedometer be present +on the device.\ +\ +When the device is sleeping, the step count will continue (without +significant power usage) and the event will be triggered on wakeup an +amount of times appropriate to how many steps were taken while +sleeping.\ +\ +Note: in order to improve accuracy, the response time can be on the +order of a few seconds.\ +\ +See Also: Prefs / Monitor / Display Off / Step Sensor. + +#### Timer Change + +The status of the Task Timer widget with the specified task name has +changed. + +#### Variable Cleared + +The user variable (not built-in) with the specified name (or any name if +blank) has just been cleared (via action Variable Clear).\ +\ +Note: if multiple variables are cleared at once, (by giving Variable +Clear an empty argument) this event will only match once, and only if no +Variable name is specified for the event. + +#### Variable Set + +The user variable with the specified name (or any name if blank) has +just had its value set (via one of Variable Set/Inc/Dec/Randomize).\ +\ +This event can also trigger on some \'dynamic\' built-in variables: see +the *Variables* section of the Userguide for details. + +#### Widget Locker + +Info:\ +\ +http://teslacoilsw.com/widgetlocker + +#### Zoom Click + +A Zoom element from the specified Widget and/or with the specified name +has been clicked.\ +\ +Zoom is a unique widget designer allowing you to create widgets that +look and behave however you like. diff --git a/en/help/eh_intent_received.md b/en/help/eh_intent_received.md new file mode 100644 index 0000000..c6403c9 --- /dev/null +++ b/en/help/eh_intent_received.md @@ -0,0 +1,7 @@ +### Intent Received + +A broadcast intent with the specified parameters has been received.\ +\ +This event is intended for advanced users.\ +\ +See *Intents* in the Userguide for more info. diff --git a/en/help/eh_kaloer_clock.md b/en/help/eh_kaloer_clock.md new file mode 100644 index 0000000..9767ce1 --- /dev/null +++ b/en/help/eh_kaloer_clock.md @@ -0,0 +1,5 @@ +### Kaloer Clock + +Info:\ +\ +http://www.kaloer.com/kaloer-clock diff --git a/en/help/eh_media_mounted.md b/en/help/eh_media_mounted.md new file mode 100644 index 0000000..a93bd4d --- /dev/null +++ b/en/help/eh_media_mounted.md @@ -0,0 +1,16 @@ +### Card Mounted + +An inserted card has been registered by the system and is ready for +use.\ +\ +If you specify a title, only the card with a title containing the +specified characters will match this event context, thus allowing you to +do different things depending on which card is inserted.\ +\ +You can set the title of a card by creating a file in its base (root) +directory called xxxxx.ttl (replace xxxxx with the desired title).\ +\ +If you specify a Frequency and it\'s greater than 1, the event will only +match if the card has been mounted a multiple of Frequency times since +the last reboot. For example, a Frequency of 3 will match when the card +has been mounted 3, 6, 9\... times. diff --git a/en/help/eh_media_removed.md b/en/help/eh_media_removed.md new file mode 100644 index 0000000..e818cb8 --- /dev/null +++ b/en/help/eh_media_removed.md @@ -0,0 +1,3 @@ +### Card Removed + +A card has been physically removed from the device. diff --git a/en/help/eh_media_unmounted.md b/en/help/eh_media_unmounted.md new file mode 100644 index 0000000..936ee9c --- /dev/null +++ b/en/help/eh_media_unmounted.md @@ -0,0 +1,4 @@ +### Card Unmounted + +A card has been unregistered by the system in preparation for removal, +or has been physically removed from the device. diff --git a/en/help/eh_missed_call.md b/en/help/eh_missed_call.md new file mode 100644 index 0000000..3b1112b --- /dev/null +++ b/en/help/eh_missed_call.md @@ -0,0 +1,7 @@ +### Missed Call + +A call has been missed.\ +\ +This event activates every time there is a new missed call. If you want +something to happen until a call has been notified, it\'s better to use +the state Missed Call. diff --git a/en/help/eh_monitor_start.md b/en/help/eh_monitor_start.md new file mode 100644 index 0000000..9349bcc --- /dev/null +++ b/en/help/eh_monitor_start.md @@ -0,0 +1,11 @@ +### Monitor Start + +Tasker\'s Monitor Service has just started.\ +\ +Tasks triggered from this action are guaranteed to be submitted for +execution before any other and are therefore a good place to perform +preparatory actions like setting the initial values for variables.\ +\ +If it\'s necessary to ensure that resulting tasks finish before any +other task starts, set the Task Priority in the profile properties to +the highest level. diff --git a/en/help/eh_new_notification.md b/en/help/eh_new_notification.md new file mode 100644 index 0000000..c99ec79 --- /dev/null +++ b/en/help/eh_new_notification.md @@ -0,0 +1,15 @@ +### Notification + +A notification has been sent to the status bar.\ +\ +If an Owner Application is specified, the notification must have been +sent by the corresponding package.\ +\ +If the notification is a duplicate of one already in the status bar, it +will still trigger the event (unless New Only is checked, on Android +6+)\ +\ +Other Text (Android 6+) is a collection of any other texts found in the +notification.\ +\ +This event is not triggered by Tasker-generated notifications. diff --git a/en/help/eh_new_package.md b/en/help/eh_new_package.md new file mode 100644 index 0000000..29a356b --- /dev/null +++ b/en/help/eh_new_package.md @@ -0,0 +1,10 @@ +### New Package + +A new package has just been added to the system.\ +\ +Name is the name of the new package e.g. \'Analog Compass\'\ +\ +Package is the package name e.g. com.example.packagename.\ +\ +This event does not occur when a new version of a package is replacing +an older one. diff --git a/en/help/eh_new_window.md b/en/help/eh_new_window.md new file mode 100644 index 0000000..0587e1f --- /dev/null +++ b/en/help/eh_new_window.md @@ -0,0 +1,11 @@ +### New Window + +A new window has appeared e.g. activity, popup.\ +\ +If Label is specified the label of the new window must match it.\ +\ +For some windows, the label might be that of the first item in the +window e.g. a menu entry or even a button.\ +\ +To show all window titles, leave all parameters empty and in the +resulting task add a Flash action of %WIN. diff --git a/en/help/eh_nfc_tag.md b/en/help/eh_nfc_tag.md new file mode 100644 index 0000000..5c89795 --- /dev/null +++ b/en/help/eh_nfc_tag.md @@ -0,0 +1,12 @@ +#### NFC Tag + +Allows you to react to a scanned NFC tag. + +You can react by ID, Content or both. This allows you to react to NFC +Tags that you don\'t write yourself. For example, if you have an old key +card lying around that has an NFC chip in it, you can react to it by ID +and do your automations that way. + +Check out [this video +example](https://www.youtube.com/watch?v=t3cbS3aez6M) to see this in +action. diff --git a/en/help/eh_notification_clicked.md b/en/help/eh_notification_clicked.md new file mode 100644 index 0000000..a8d12b5 --- /dev/null +++ b/en/help/eh_notification_clicked.md @@ -0,0 +1,11 @@ +### Notification Click + +A notification in the status bar pulldown has been clicked.\ +\ +If an Owner Application is specified, it must match that of the +notification. Note that some apps are not reliable in this regard.\ +\ +If a Title is specified, the title of the notification must match it.\ +\ +If Tasker\'s Accessibility Service is not enabled, only notifications +created by Tasker\'s Notify actions can be detected. diff --git a/en/help/eh_notification_removed.md b/en/help/eh_notification_removed.md new file mode 100644 index 0000000..6572310 --- /dev/null +++ b/en/help/eh_notification_removed.md @@ -0,0 +1,11 @@ +### Notification Removed + +A notification has been removed from the status bar.\ +\ +If an Owner Application is specified, the notification must have been +sent by the corresponding package.\ +\ +Other Text (Android 6+) is a collection of any other texts found in the +notification.\ +\ +This event is not triggered by Tasker-generated notifications. diff --git a/en/help/eh_notifymyandroid.md b/en/help/eh_notifymyandroid.md new file mode 100644 index 0000000..d7ddb2d --- /dev/null +++ b/en/help/eh_notifymyandroid.md @@ -0,0 +1,5 @@ +### Notify My Android + +Info:\ +\ +http://notifymyandroid.com diff --git a/en/help/eh_openwatch.md b/en/help/eh_openwatch.md new file mode 100644 index 0000000..a362fa2 --- /dev/null +++ b/en/help/eh_openwatch.md @@ -0,0 +1,5 @@ +### OpenWatch + +Info:\ +\ +http://www.smartmadsoft.com/ diff --git a/en/help/eh_package_removed.md b/en/help/eh_package_removed.md new file mode 100644 index 0000000..a24a942 --- /dev/null +++ b/en/help/eh_package_removed.md @@ -0,0 +1,5 @@ +### Package Removed + +A package has just been removed from the system.\ +\ +Package is the package name e.g. com.example.packagename diff --git a/en/help/eh_package_updated.md b/en/help/eh_package_updated.md new file mode 100644 index 0000000..95d7a55 --- /dev/null +++ b/en/help/eh_package_updated.md @@ -0,0 +1,7 @@ +### Package Updated + +An existing package has just been updated.\ +\ +Name is the name of the updated package e.g. \'Analog Compass\'\ +\ +Package is the package name e.g. com.example.packagename diff --git a/en/help/eh_phone_idle.md b/en/help/eh_phone_idle.md new file mode 100644 index 0000000..69dd62a --- /dev/null +++ b/en/help/eh_phone_idle.md @@ -0,0 +1,3 @@ +### Phone Idle + +The phone is not doing anything (likely a call is just finished). diff --git a/en/help/eh_phone_offhook.md b/en/help/eh_phone_offhook.md new file mode 100644 index 0000000..90d07a1 --- /dev/null +++ b/en/help/eh_phone_offhook.md @@ -0,0 +1,4 @@ +### Phone Offhook + +The phone has just gone off the hook (at least one call exists that is +dialling, active or on hold). diff --git a/en/help/eh_phone_ringing.md b/en/help/eh_phone_ringing.md new file mode 100644 index 0000000..cef71c1 --- /dev/null +++ b/en/help/eh_phone_ringing.md @@ -0,0 +1,9 @@ +### Phone Ringing + +There is an incoming phone call.\ +\ +If specified, Caller must match the incoming call (see *Pattern +Matching* in the Userguide).\ +\ +The caller number will be 0 and the caller name ? if the number is +hidden or unknown. diff --git a/en/help/eh_plugin.md b/en/help/eh_plugin.md new file mode 100644 index 0000000..e491af7 --- /dev/null +++ b/en/help/eh_plugin.md @@ -0,0 +1,7 @@ +### Plugin + +Listens for events of the specified plugin being triggered.\ +\ +WARNING: data you enter in the plugin configuration screen is collected +by the \*plugin\*, not by Tasker. If the plugin has Internet permissions +it could e.g. transmit your data to third-parties. diff --git a/en/help/eh_pomodroido.md b/en/help/eh_pomodroido.md new file mode 100644 index 0000000..1c31096 --- /dev/null +++ b/en/help/eh_pomodroido.md @@ -0,0 +1,5 @@ +### Pomodroido + +Info:\ +\ +\\twww.pomodroido.com diff --git a/en/help/eh_quick_setting_clicked.md b/en/help/eh_quick_setting_clicked.md new file mode 100644 index 0000000..0c0194d --- /dev/null +++ b/en/help/eh_quick_setting_clicked.md @@ -0,0 +1,6 @@ +### Quick Setting Clicked + +A custom tile previously added to the system Quick Settings panel has +been clicked.\ +\ +Only usable on Cyanogen 5.1.1+ ROMs with Custom Tile support. diff --git a/en/help/eh_radardroid.md b/en/help/eh_radardroid.md new file mode 100644 index 0000000..4f6adbd --- /dev/null +++ b/en/help/eh_radardroid.md @@ -0,0 +1,5 @@ +### Radardroid + +Info:\ +\ +\\twww.radardroid.com diff --git a/en/help/eh_received_data_sms.md b/en/help/eh_received_data_sms.md new file mode 100644 index 0000000..2113edf --- /dev/null +++ b/en/help/eh_received_data_sms.md @@ -0,0 +1,12 @@ +### Received Data SMS + +A data SMS has been received.\ +\ +Data SMSs are sent to particular ports. This event will trigger on an +SMS to any port, unless a particular one is specified.\ +\ +Data is the Base64-encoded binary data which was received, accessible +via %evtprm3 in the resulting task.\ +It can be e.g. written to a file with Write Binary or converted decoded +to a string (assuming the binary data represents a string) with the +Variable Convert action. diff --git a/en/help/eh_received_email.md b/en/help/eh_received_email.md new file mode 100644 index 0000000..f1e0844 --- /dev/null +++ b/en/help/eh_received_email.md @@ -0,0 +1,5 @@ +### K9 Email Received + +An email has been received by the K9 mail agent.\ +\ +Note: the minimum version of K9 supported is 2.3. diff --git a/en/help/eh_received_sms.md b/en/help/eh_received_sms.md new file mode 100644 index 0000000..268ce1b --- /dev/null +++ b/en/help/eh_received_sms.md @@ -0,0 +1,10 @@ +### Received Text + +A text message has been received.\ +\ +If the Sender parameter is filled in, only texts from senders that match +the Sender parameter will match.\ +\ +You can long-click multiple times to match multiple senders.\ +\ +Content is the Body of an SMS, or the Subject or an MMS. diff --git a/en/help/eh_redditnotify.md b/en/help/eh_redditnotify.md new file mode 100644 index 0000000..559fec8 --- /dev/null +++ b/en/help/eh_redditnotify.md @@ -0,0 +1,7 @@ +### Reddit Notify + +The Number parameter refers to the number of unread emails or the new +Karma total.\ +\ +The Message parameter matches against all of the new messages joined +together. diff --git a/en/help/eh_screebl.md b/en/help/eh_screebl.md new file mode 100644 index 0000000..be9a83f --- /dev/null +++ b/en/help/eh_screebl.md @@ -0,0 +1,9 @@ +### Screebl + +Info:\ +\ +http://keyeslabs.com/joomla/screebl\ +\ +Warning: this event may fire very rapidly on the edge of the orientation +range. It\'s therefore a very good idea to configure a cooldown time in +the Profile Properties of this profile. diff --git a/en/help/eh_screen_on.md b/en/help/eh_screen_on.md new file mode 100644 index 0000000..c49233c --- /dev/null +++ b/en/help/eh_screen_on.md @@ -0,0 +1,7 @@ +### Display On + +The display has just come on.\ +\ +Note that this can occur automatically on many occasions such as when an +alarm goes off. Most likely you will be better off using the Display +Unlocked event. diff --git a/en/help/eh_secondary_app_opened.md b/en/help/eh_secondary_app_opened.md new file mode 100644 index 0000000..bf42852 --- /dev/null +++ b/en/help/eh_secondary_app_opened.md @@ -0,0 +1,10 @@ +#### Secondary App Opened + +Allows you to react to the opening of the **Tasker Secondary** app. + +This can be used, for example, to launch a task with the double-tap of +the power button, instead of opening the camera, or to map the Bixby +button to a task on a Samsung device. + +To check out an example of how this can be used check out [this +video](https://www.youtube.com/watch?v=WLsw2D2NJVU). diff --git a/en/help/eh_shake.md b/en/help/eh_shake.md new file mode 100644 index 0000000..18e17bf --- /dev/null +++ b/en/help/eh_shake.md @@ -0,0 +1,9 @@ +### Shake + +The device is being physically shaken.\ +\ +Note: on some devices the Axis may be incorrect e.g. Left-Right may be +triggered by Up-Down shaking.\ +\ +See Also: Menu / Prefs / Monitor / Display Off Monitoring / +Accelerometer diff --git a/en/help/eh_shutdown.md b/en/help/eh_shutdown.md new file mode 100644 index 0000000..872a1d1 --- /dev/null +++ b/en/help/eh_shutdown.md @@ -0,0 +1,7 @@ +### Device Shutdown + +The phone is about to shutdown (completely turned off, not standby).\ +\ +Note: this is right before shutdown. You might backup a file or similar, +but UI interactions such as dialogs and anything that takes a +significant amount of time will not work. diff --git a/en/help/eh_sms_failure.md b/en/help/eh_sms_failure.md new file mode 100644 index 0000000..40f8ccd --- /dev/null +++ b/en/help/eh_sms_failure.md @@ -0,0 +1,5 @@ +### SMS Failure + +The SMS sent to the (optional) specified phone number failed.\ +\ +Only works for an SMS sent by Tasker\'s Send SMS action. diff --git a/en/help/eh_sms_success.md b/en/help/eh_sms_success.md new file mode 100644 index 0000000..dc9ee8d --- /dev/null +++ b/en/help/eh_sms_success.md @@ -0,0 +1,5 @@ +### SMS Success + +The SMS sent to the (optional) specified phone number succeeded.\ +\ +Only works for an SMS sent by Tasker\'s Send SMS action. diff --git a/en/help/eh_steps.md b/en/help/eh_steps.md new file mode 100644 index 0000000..2aebdb2 --- /dev/null +++ b/en/help/eh_steps.md @@ -0,0 +1,25 @@ +### Steps Taken + +The specified number of steps have been taken.\ +\ +The total number of steps taken since the last reset is available in the +triggered task in %evtprm1.\ +\ +A restart of the device, disabling the profile, disabling or +reinstalling Tasker causes the count to **reset**.\ +\ +When other contexts in the same profile are not active, the count is +**paused**.\ +\ +Requires Android version 4.4+ and that a hardware pedometer be present +on the device.\ +\ +When the device is sleeping, the step count will continue (without +significant power usage) and the event will be triggered on wakeup an +amount of times appropriate to how many steps were taken while +sleeping.\ +\ +Note: in order to improve accuracy, the response time can be on the +order of a few seconds.\ +\ +See Also: Prefs / Monitor / Display Off / Step Sensor. diff --git a/en/help/eh_timer_change.md b/en/help/eh_timer_change.md new file mode 100644 index 0000000..a09bacc --- /dev/null +++ b/en/help/eh_timer_change.md @@ -0,0 +1,4 @@ +### Timer Change + +The status of the Task Timer widget with the specified task name has +changed. diff --git a/en/help/eh_user_present.md b/en/help/eh_user_present.md new file mode 100644 index 0000000..2aba0a1 --- /dev/null +++ b/en/help/eh_user_present.md @@ -0,0 +1,3 @@ +### Display Unlocked + +The display has just been unlocked (with or without an unlock pattern). diff --git a/en/help/eh_variable_cleared.md b/en/help/eh_variable_cleared.md new file mode 100644 index 0000000..34772cc --- /dev/null +++ b/en/help/eh_variable_cleared.md @@ -0,0 +1,8 @@ +### Variable Cleared + +The user variable (not built-in) with the specified name (or any name if +blank) has just been cleared (via action Variable Clear).\ +\ +Note: if multiple variables are cleared at once, (by giving Variable +Clear an empty argument) this event will only match once, and only if no +Variable name is specified for the event. diff --git a/en/help/eh_variable_set.md b/en/help/eh_variable_set.md new file mode 100644 index 0000000..75786d3 --- /dev/null +++ b/en/help/eh_variable_set.md @@ -0,0 +1,7 @@ +### Variable Set + +The user variable with the specified name (or any name if blank) has +just had its value set (via one of Variable Set/Inc/Dec/Randomize).\ +\ +This event can also trigger on some \'dynamic\' built-in variables: see +the *Variables* section of the Userguide for details. diff --git a/en/help/eh_volume_long_press.md b/en/help/eh_volume_long_press.md new file mode 100644 index 0000000..f850793 --- /dev/null +++ b/en/help/eh_volume_long_press.md @@ -0,0 +1,82 @@ +#### Volume Long Press + +Allows you to react to long pressing the physical volume buttons on your +device. + +To use this event you need to grant the special +**SET\_VOLUME\_KEY\_LONG\_PRESS\_LISTENER** permission. Check out how to +do so [here](ah_volume_long_press_grant.html). + +**Important Note:** This doesn\'t seem to work reliably with the screen +off in all situations. It seems to work very reliably if music is +playing and less reliably otherwise. This is due to system limitations +on those devices and it\'s not something Tasker can control. + +**Important Note 2:** If you\'re using Lineage OS or similar make sure +to disable its own handling of long pressing the volume keys when the +screen is off or it won\'t work at all with Tasker. + +To check out an example of how this can be used check out [this +video](https://www.youtube.com/watch?v=x-z-RvREF5E). + +::: {.inputs} +::: {.input} +::: {.title} +Type +::: + +::: {.text} +The button you want to react to. Unfortunately it\'s not possible to +react to both being pressed at the same time. Android doesn\'t send that +event to Tasker. +::: +::: + +::: {.input} +::: {.title} +Additional Time +::: + +::: {.text} +**Important Note:** Only works with the screen on. +::: + +::: {.text} +Use the magnifying glass to help you setup this field. +::: + +::: {.text} +Check how much additional time you held the button down in the task by +checking **%evtprm(2)**. +::: + +::: {.text} +If not set, Tasker will simply trigger the event once, when it detects +the long press on the selected volume button. +::: + +::: {.text} +If set, will make Tasker only react only in certain conditions: +::: + +::: {.text} +- **Number**: Only trigger after the button has been pressed for those + many seconds after the long press is detected. For example, setting + it to **3** will make the event only trigger if you press the volume + button for a bit more than 3 seconds +- **Continuous Mode**: Only trigger after the button has been pressed + for x many seconds after the long press is detected and then trigger + again for each additional second that the button is held. For + example, setting it to **continuous(0)** will make the event trigger + right after the long press is detected and then trigger again each + second until you release the button. Another example: setting it to + **continuous(3)** will wait 3 seconds before it starts triggering + continuously. +::: + +::: {.text} +Check out a video example of using the **Additional Time** feature +[here](https://www.youtube.com/watch?v=E9yvAykDg0U). +::: +::: +::: diff --git a/en/help/eh_widgetlocker.md b/en/help/eh_widgetlocker.md new file mode 100644 index 0000000..c512032 --- /dev/null +++ b/en/help/eh_widgetlocker.md @@ -0,0 +1,5 @@ +### Widget Locker + +Info:\ +\ +http://teslacoilsw.com/widgetlocker diff --git a/en/help/eh_zoom_click.md b/en/help/eh_zoom_click.md new file mode 100644 index 0000000..634962e --- /dev/null +++ b/en/help/eh_zoom_click.md @@ -0,0 +1,7 @@ +### Zoom Click + +A Zoom element from the specified Widget and/or with the specified name +has been clicked.\ +\ +Zoom is a unique widget designer allowing you to create widgets that +look and behave however you like. diff --git a/en/help/sh_active_user.md b/en/help/sh_active_user.md new file mode 100644 index 0000000..076970d --- /dev/null +++ b/en/help/sh_active_user.md @@ -0,0 +1,20 @@ +### Active User + +Whether the user with the specified ID is active or not.\ +\ +When a different user is selected, this state will become inactive.\ +\ +When returning to the specified user, the state will become active +again.\ +\ +Note that each user account has it\'s own set of apps, so to detecting +each user becoming active would require Tasker to be installed under +each account.\ +\ +In other words, it only makes sense to specify the user ID of the user +under which the current Tasker install is running.\ +\ +The administrator (first user) ID is usually 0, the action Test System +can be used to determine other user IDs.\ +\ +This state requires Android 4.2+. diff --git a/en/help/sh_airplane_mode.md b/en/help/sh_airplane_mode.md new file mode 100644 index 0000000..6c3e321 --- /dev/null +++ b/en/help/sh_airplane_mode.md @@ -0,0 +1,3 @@ +### Airplane Mode + +Airplane Mode is enabled. diff --git a/en/help/sh_battery_level.md b/en/help/sh_battery_level.md new file mode 100644 index 0000000..dc3144d --- /dev/null +++ b/en/help/sh_battery_level.md @@ -0,0 +1,5 @@ +### Battery Level + +The device\'s battery level is within the specified range.\ +\ +The values are inclusive i.e. 37-38 specifies a range with 2 values. diff --git a/en/help/sh_battery_temperature.md b/en/help/sh_battery_temperature.md new file mode 100644 index 0000000..53db970 --- /dev/null +++ b/en/help/sh_battery_temperature.md @@ -0,0 +1,6 @@ +### Battery Temperature + +The device\'s battery temperature is within the specified range of +degrees celsius.\ +\ +The values are inclusive i.e. 37-38 specifies a range with 2 values. diff --git a/en/help/sh_bt_connect.md b/en/help/sh_bt_connect.md new file mode 100644 index 0000000..0d4d021 --- /dev/null +++ b/en/help/sh_bt_connect.md @@ -0,0 +1,12 @@ +### BT Connected + +The device is connected to another device via Bluetooth. If either of +Name or Address are specified, they must match a connected device.\ +\ +Connections to non-paired devices (e.g. while pairing is taking place) +are ignored.\ +\ +Warning: Tasker can\'t directly detect when a BT device is connected, +only when a connection or disconnection is made.\ +\ +Only usable with Android 2.0+. diff --git a/en/help/sh_bt_near.md b/en/help/sh_bt_near.md new file mode 100644 index 0000000..e3edbfa --- /dev/null +++ b/en/help/sh_bt_near.md @@ -0,0 +1,22 @@ +### BT Near + +A matching bluetooth device is nearby.\ +\ +If any of the parameters are specified the device must match that +parameter, otherwise any device will match.\ +\ +Standard/Low-Energy Devices: if you\'re only interested in a particular +type of device, select only one of these to reduce power usage.\ +\ +Non-Paired Devices: selecting this will use much more power and take +longer to scan.\ +\ +Toggle BT: if BT on the device is disabled, enable it for the period of +the scan, probably around 5-15 seconds.\ +\ +A seen device which is no longer visible for approximately two times the +scan period is forgetten. This is to help prevent the profile bouncing +on and off at the edge of the signal reception area.\ +\ +The period for BT scanning is specified in Menu / Preferences / Monitor +/ BT Scan Time. diff --git a/en/help/sh_bt_status.md b/en/help/sh_bt_status.md new file mode 100644 index 0000000..f64772a --- /dev/null +++ b/en/help/sh_bt_status.md @@ -0,0 +1,3 @@ +### BT Status + +Whether the Bluetooth adapter is enabled or not. diff --git a/en/help/sh_calendar_entry.md b/en/help/sh_calendar_entry.md new file mode 100644 index 0000000..18a9687 --- /dev/null +++ b/en/help/sh_calendar_entry.md @@ -0,0 +1,13 @@ +### Calendar Entry + +An Android Calendar entry with the specified parameters is currently +active.\ +\ +Any unspecified parameters are ignored i.e. any calendar entry will be +matched.\ +\ +The *Calendar* field is a pattern match, but the name of the calendar +provider befoe the : (probably Google) is **not** e.g. +Google:\*\@test.com is valid, G\*gle:one\@test.com is not.\ +\ +See Also: action Misc / Test, variables %CALTITLE, %CALDESCR, %CALLOC diff --git a/en/help/sh_call.md b/en/help/sh_call.md new file mode 100644 index 0000000..3a51567 --- /dev/null +++ b/en/help/sh_call.md @@ -0,0 +1,4 @@ +### Call + +There is a call in progress, optionally from or to the specified Number +(see *Pattern Matching* in the Userguide). diff --git a/en/help/sh_cells_near.md b/en/help/sh_cells_near.md new file mode 100644 index 0000000..9fa7858 --- /dev/null +++ b/en/help/sh_cells_near.md @@ -0,0 +1,29 @@ +### Cell Near + +One of the specified cell towers is visible to the phone.\ +\ +Press **Scan** to start collecting cell (tower) information. Leave Scan +on for at least 10 minutes and move around the location because many +places are covered by several cells and the phone will often swap +between them even if you\'re standing still.\ +\ +Tasker will keep the device on while scanning because cell detection is +more reliable then. If you turn the device off manually or change to a +different activity, scanning will stop.\ +\ +The first part of each line in the text box indicates the cell tower ID. +The number afterwards is the \*last seen\* signal strength to that cell. +The currently connected cell is marked with a less-than sign.\ +\ +This state is a very inaccurate way of determining if you are in a +particular location, but uses very little power.\ +\ +If active when there is no signal (e.g. during Airplane Mode) this +context will \*stay active\*.\ +\ +Cells specified in *Ignore Cells* can never cause the context state to +change, which can be useful if e.g. a particular cell is present in more +than one desired area.\ +\ +See Also: Prefs / Monitor / Use New Cell API, Prefs / Monitor / Net/Cell +Wake Screen diff --git a/en/help/sh_custom_setting.md b/en/help/sh_custom_setting.md new file mode 100644 index 0000000..c1ff679 --- /dev/null +++ b/en/help/sh_custom_setting.md @@ -0,0 +1,10 @@ +### Custom Setting + +Monitor settings in the three Settings Tables on Android (Global, Secure +and System) + +Use this to make a profile active or inactive based on any system +setting\'s value + +Example: [How to enable Android P's Dark Theme when Night Light is +on](https://www.xda-developers.com/enable-android-p-dark-theme-night-light/) diff --git a/en/help/sh_device_idle.md b/en/help/sh_device_idle.md new file mode 100644 index 0000000..b35cf27 --- /dev/null +++ b/en/help/sh_device_idle.md @@ -0,0 +1,10 @@ +### Device Idle + +The device has been sitting unused and unmoving for a sufficiently long +period of time that it has decided to go into a lower power-use state.\ +\ +May not function for manufacturer-specific power-saving systems. The +device\'s battery temperature is within the specified range of degrees +celsius.\ +\ +The values are inclusive i.e. 37-38 specifies a range with 2 values. diff --git a/en/help/sh_display_orientation.md b/en/help/sh_display_orientation.md new file mode 100644 index 0000000..1cfa39f --- /dev/null +++ b/en/help/sh_display_orientation.md @@ -0,0 +1,3 @@ +### Display Orientation + +Whether the screen is in portrait or landscape mode. diff --git a/en/help/sh_display_state.md b/en/help/sh_display_state.md new file mode 100644 index 0000000..a827203 --- /dev/null +++ b/en/help/sh_display_state.md @@ -0,0 +1,3 @@ +### Display State + +Whether the device display is currently off or on. diff --git a/en/help/sh_docked.md b/en/help/sh_docked.md new file mode 100644 index 0000000..b1ace50 --- /dev/null +++ b/en/help/sh_docked.md @@ -0,0 +1,10 @@ +### Docked + +A car or desk docking station is connected.\ +\ +If you wish to launch an alternative docking application, clear your +default app for docking and select Tasker when you are presented with +the choice which app to launch next time you dock.\ +\ +You can then launch an app via a Load App action in Tasker (or not, if +no docking app is desired). diff --git a/en/help/sh_dreaming.md b/en/help/sh_dreaming.md new file mode 100644 index 0000000..8a41c17 --- /dev/null +++ b/en/help/sh_dreaming.md @@ -0,0 +1,3 @@ +### Dreaming + +This state is active when the display is in Android Daydream mode. diff --git a/en/help/sh_ethernet_connect.md b/en/help/sh_ethernet_connect.md new file mode 100644 index 0000000..2ba9404 --- /dev/null +++ b/en/help/sh_ethernet_connect.md @@ -0,0 +1,7 @@ +### Ethernet Connect + +The device is connected to a network via an ethernet interface (probably +through a USB adapter).\ +\ +The Active parameter specifies whether or not the ethernet network must +be the network currently in use in order to match. diff --git a/en/help/sh_headset.md b/en/help/sh_headset.md new file mode 100644 index 0000000..326024d --- /dev/null +++ b/en/help/sh_headset.md @@ -0,0 +1,3 @@ +### Headset Plugged + +A headset is plugged in. diff --git a/en/help/sh_heart_rate.md b/en/help/sh_heart_rate.md new file mode 100644 index 0000000..2cbadf3 --- /dev/null +++ b/en/help/sh_heart_rate.md @@ -0,0 +1,6 @@ +### Heart Rate + +Whether the current measured heart rate is in the specified range of +beats per minute (BPM).\ +\ +See also: variable %HEART. diff --git a/en/help/sh_humidity.md b/en/help/sh_humidity.md new file mode 100644 index 0000000..1f0e195 --- /dev/null +++ b/en/help/sh_humidity.md @@ -0,0 +1,5 @@ +### Humidity + +The relative ambient air humidity in percent.\ +\ +See also: variable %TEMP. diff --git a/en/help/sh_index.md b/en/help/sh_index.md new file mode 100644 index 0000000..d4f8b21 --- /dev/null +++ b/en/help/sh_index.md @@ -0,0 +1,473 @@ +--- +title: 'Tasker: State A-Z' +--- + +### Tasker: State A-Z + +#### Active User + +Whether the user with the specified ID is active or not.\ +\ +When a different user is selected, this state will become inactive.\ +\ +When returning to the specified user, the state will become active +again.\ +\ +Note that each user account has it\'s own set of apps, so to detecting +each user becoming active would require Tasker to be installed under +each account.\ +\ +In other words, it only makes sense to specify the user ID of the user +under which the current Tasker install is running.\ +\ +The administrator (first user) ID is usually 0, the action Test System +can be used to determine other user IDs.\ +\ +This state requires Android 4.2+. + +#### Airplane Mode + +Airplane Mode is enabled. + +#### BT Connected + +The device is connected to another device via Bluetooth. If either of +Name or Address are specified, they must match a connected device.\ +\ +Connections to non-paired devices (e.g. while pairing is taking place) +are ignored.\ +\ +Warning: Tasker can\'t directly detect when a BT device is connected, +only when a connection or disconnection is made.\ +\ +Only usable with Android 2.0+. + +#### BT Near + +A matching bluetooth device is nearby.\ +\ +If any of the parameters are specified the device must match that +parameter, otherwise any device will match.\ +\ +Standard/Low-Energy Devices: if you\'re only interested in a particular +type of device, select only one of these to reduce power usage.\ +\ +Non-Paired Devices: selecting this will use much more power and take +longer to scan.\ +\ +Toggle BT: if BT on the device is disabled, enable it for the period of +the scan, probably around 5-15 seconds.\ +\ +A seen device which is no longer visible for approximately two times the +scan period is forgetten. This is to help prevent the profile bouncing +on and off at the edge of the signal reception area.\ +\ +The period for BT scanning is specified in Menu / Preferences / Monitor +/ BT Scan Time. + +#### BT Status + +Whether the Bluetooth adapter is enabled or not. + +#### Battery Level + +The device\'s battery level is within the specified range.\ +\ +The values are inclusive i.e. 37-38 specifies a range with 2 values. + +#### Calendar Entry + +An Android Calendar entry with the specified parameters is currently +active.\ +\ +Any unspecified parameters are ignored i.e. any calendar entry will be +matched.\ +\ +The *Calendar* field is a pattern match, but the name of the calendar +provider befoe the : (probably Google) is **not** e.g. +Google:\*\@test.com is valid, G\*gle:one\@test.com is not.\ +\ +See Also: action Misc / Test, variables %CALTITLE, %CALDESCR, %CALLOC + +#### Call + +There is a call in progress, optionally from or to the specified Number +(see *Pattern Matching* in the Userguide). + +#### Cell Near + +One of the specified cell towers is visible to the phone.\ +\ +Press **Scan** to start collecting cell (tower) information. Leave Scan +on for at least 10 minutes and move around the location because many +places are covered by several cells and the phone will often swap +between them even if you\'re standing still.\ +\ +Tasker will keep the device on while scanning because cell detection is +more reliable then. If you turn the device off manually or change to a +different activity, scanning will stop.\ +\ +The first part of each line in the text box indicates the cell tower ID. +The number afterwards is the \*last seen\* signal strength to that cell. +The currently connected cell is marked with a less-than sign.\ +\ +This state is a very inaccurate way of determining if you are in a +particular location, but uses very little power.\ +\ +If active when there is no signal (e.g. during Airplane Mode) this +context will \*stay active\*.\ +\ +Cells specified in *Ignore Cells* can never cause the context state to +change, which can be useful if e.g. a particular cell is present in more +than one desired area.\ +\ +See Also: Prefs / Monitor / Use New Cell API, Prefs / Monitor / Net/Cell +Wake Screen + +#### Device Idle + +The device has been sitting unused and unmoving for a sufficiently long +period of time that it has decided to go into a lower power-use state.\ +\ +May not function for manufacturer-specific power-saving systems. The +device\'s battery temperature is within the specified range of degrees +celsius.\ +\ +The values are inclusive i.e. 37-38 specifies a range with 2 values. + +#### Display Orientation + +Whether the screen is in portrait or landscape mode. + +#### Display State + +Whether the device display is currently off or on. + +#### Docked + +A car or desk docking station is connected.\ +\ +If you wish to launch an alternative docking application, clear your +default app for docking and select Tasker when you are presented with +the choice which app to launch next time you dock.\ +\ +You can then launch an app via a Load App action in Tasker (or not, if +no docking app is desired). + +#### Dreaming + +This state is active when the display is in Android Daydream mode. + +#### Ethernet Connect + +The device is connected to a network via an ethernet interface (probably +through a USB adapter).\ +\ +The Active parameter specifies whether or not the ethernet network must +be the network currently in use in order to match. + +#### Headset Plugged + +A headset is plugged in. + +#### Heart Rate + +Whether the current measured heart rate is in the specified range of +beats per minute (BPM).\ +\ +See also: variable %HEART. + +#### Humidity + +The relative ambient air humidity in percent.\ +\ +See also: variable %TEMP. + +#### Keyboard Out + +The physical keyboard is showing. + +#### Light Level + +The current light level as a (massaged) percentage of the minumum and +maximum light levels ever seen.\ +\ +After setting this state up, you should calibrate it by covering up the +device for a few seconds and exposing it to bright light.\ +\ +Warning: on at least some devices, 0% is the level of a dimly lit room, +rather than that of total darkness.\ +\ +See Also: Menu / Prefs / Monitor / Display Off Monitoring / Light Sensor + +#### Magnetic Field + +The absolute magnetic field strength at the current location in +micro-Tesla.\ +\ +Magnetic fields will be detected better on some axis than on others e.g. +the base of the device may be more sensitive than the edge.\ +\ +See Also: variable %MFIELD. + +#### Media Button + +One of the media buttons is pressed.\ +\ +Not all devices have all represented buttons.\ +\ +If *Held* is checked, the key must have been held down for minimally the +normal key repeat time for this context to become active. Held will not +function on most devices with Google Voice Search.\ +\ +If *Stop Event* is checked, Tasker will try to prevent the event being +passed on to other apps when it\'s received. This does not have effect +use on Android 2.2+ devices because usually one or more apps will try to +Grab (see below) the event and no others will see it. The changes in +Android 2.2 have made media button handling very complicated\...\ +\ +*Grab*\ +\ +*Grab* is only relevant for Android 2.2+ devices, which changed the way +in which the media button is handled. It indicates that Tasker should +become the sole receiver of media button events. If you don\'t do this, +Tasker may not receive the events e.g. because a media player has +requested the events.\ +\ +Note 1: if you **do** enable *Grab*, you probably want to add another +context to this profile e.g. an application context, so that Tasker +doesn\'t interfere with media control the whole time.\ +\ +Note 2: Tasker grabs the event control as soon as it\'s necessary and +releases it as soon as possible. Another app may grab control at a later +time and so block events to Tasker.\ +\ +Note 3: if you enable *Grab* for any media button, it blocks **all** +media button events to other apps.\ +\ +Note 4: you can regrab the focus with action Media / Media Button Events + +#### Missed Call + +The Android call log has one or missed calls.\ +\ +If a Caller is specified, only missed calls from that number are +relevant (see Pattern Matching in the Userguide).\ +\ +If you want something to happen every time there is a \*new\* missed +call, use the event Missed Call instead. + +#### Mobile Network + +The device has mobile data connectivity of one of the checked types.\ +\ +The Active parameter specifies whether or not the mobile network must be +the network currently in use in order to match. + +#### NFC Status + +Whether the default NFC adapter on the device is enabled or not.\ +\ +Requires Android 4.3.3+. + +#### Orientation + +The device is in the specified orientation.\ +\ +Note that on some devices the actual orientation may be the reverse of +those shown.\ +\ +See Also: Menu / Prefs / Monitor / Display Off Monitoring / +Accelerometer + +#### Pen Menu + +The menu associated with the hardware pen is showing.\ +\ +Currently only Samsung SPen is supported. + +#### Pen Out + +The hardware pen is not in its port.\ +\ +Currently only Samsung SPen is supported. + +#### Plugin + +Listens for the conditions of the specified Locale-compatible +\'condition\' plugin being satisfied.\ +\ +Locale does not need to be installed on the device.\ +\ +WARNING: data you enter in the plugin configuration screen is collected +by the \*plugin\*, not by Tasker. If the plugin has Internet permissions +it could e.g. transmit your data to third-parties. + +#### Power + +The device is connected to a power source. + +#### Power Save Mode + +Whether Power Save Mode (also known as Battery Saver) is enabled or +not.\ +\ +Requires Android 5.0+. + +#### Pressure + +The (probably atmospheric) pressure at the current location in +millibars.\ +\ +At 30,000km altitude it will be virtually 0mb. At sea-level it will be +approximately 1013mb.\ +\ +See Also: Menu / Prefs / Monitor / Display Off Monitoring / Pressure +Sensor + +#### Profile Active + +A Tasker profile with the specified name is running.\ +\ +Name is a simple match, see Pattern Matching in the Userguide. + +#### Proximity Sensor + +Active when the proximity sensor of the device reports than an object is +nearby.\ +\ +After setting this state up, you should calibrate it by covering and +then uncovering proximity sensor a couple of times.\ +\ +This state may be unreliable in a profile mixed with other contexts. If +the purpose is to save power, some people have had more luck toggling +the Monitor preference instead.\ +\ +See Also: Menu / Prefs / Monitor / Display Off Monitoring / Proximity + +#### Signal Strength + +The phone radio\'s reported signal level is within the specified range.\ +\ +If the phone has no service or the signal strength is unknown this state +will never be active.\ +\ +See also: variable %CELLSIG. + +#### Task Running + +A Tasker task with the specified name is running.\ +\ +Name is a simple match, see Pattern Matching in the Userguide.\ +\ +*Running* means that the task is in the queue for it\'s actions to be +executed but it\'s not necessarily the case that one of its actions is +currently being carried out. + +#### Temperature + +Whether the current ambient temperature is in the specified range of +degrees (Celsius).\ +\ +See also: variable %TEMP. + +#### USB Connected + +Whether a device of the specified class is currently connected.\ +\ +Due to limitations of the Android USB interface, successful detection of +USB connections is extremely dependent on the hardware of both the host +and USB device.\ +\ +Note: The *Any* class does **not** include USB Hubs. + +#### Unread Text + +There is an SMS or MMS which has not been read and matches the specified +parameters.\ +\ +Content is the Body of an SMS, or the Subject or an MMS.\ +\ +Occasionally this state will be active when there are no apparent unread +texts because sometimes texts get stuck in an unexpected state in the +messaging app. The app \'Reset Unread SMS\' can fix this problem. + +#### VPN Connected + +A VPN network is connected.\ +\ +The Active parameter specifies whether or not the VPN must be the +network currently being used in order to match. + +#### Variable Value + +The named user-defined variable matches the specified operator and +value.\ +\ +See the userguide document on Flow Control for details of how the +operator/value comparison functions.\ +\ +This state can also trigger on some \'dynamic\' built-in variables: see +the *Variables* section of the Userguide for details.\ +\ +Warning: if you want to trigger on a variable and then take some action +which sets the thing the variable represents you should use the Variable +Set event instead. A Variable Value state will cause complications when +the state exits and tries to restore the value again. + +#### Wifi Connected + +The device is connected to a Wifi Access Point (AP).\ +\ +If any of the parameters are specified, the AP must match that +parameter, otherwise any AP will match.\ +\ +SSID: the SSID of the AP e.g. SKY34312\ +\ +MAC: the MAC address of the AP e.g. 00:1f:35:34:43:4a\ +\ +IP: the IP address of the AP e.g. 192.156.98.4\ +\ +You can use the variable Wifi Info to see information about the current +AP (when connected).\ +\ +The Active parameter specifies whether or not the wifi network must be +the network currently in use in order to match. + +#### Wifi Near + +The device is near a Wifi Access Point (AP).\ +\ +If any of the parameters are specified, the AP must match that +parameter, otherwise any AP will match.\ +\ +SSID: the SSID of the AP e.g. SKY34312\ +\ +MAC: the MAC address of the AP e.g. 00:1f:35:34:43:4a\ +\ +Capabilities: e.g. \[WPA-PSK-TKIP\]\ +\ +Min Activate Signal Level: the minimum signal strength to activate the +context. It\'s ignored once the context is active.\ +\ +Channel: the frequency channel.\ +\ +Toggle Wifi: if Wifi on the device is disabled, enable it for the period +of the scan, probably around 15 seconds. Toggling cannot take place when +the Wifi Tether (Hotspot) is enabled on the device. On Android 4.3+ +devices, consider enabling *Scanning Always Available* in Android +advanced wifi settings, instead of toggling.\ +\ +A seen AP which is no longer visible for approximately two times the +scan period is forgetten. This is to help prevent the profile bouncing +on and off at the edge of the signal reception area.\ +\ +The period for Wifi scanning is specified in +Menu-\>Preferences-\>Monitor-\>Wifi Scan Time.\ +\ +You can use the variable Wifi Info to see information about nearby APs +(when not connected).\ +\ +When any profile has a Wifi Near state context, it will do regular scans +for nearby APs (see Menu-\>Preferences-\>Monitor-\>Wifi Scan Period. +This requires the device\'s Wifi radio to be enabled. diff --git a/en/help/sh_keyboard_out.md b/en/help/sh_keyboard_out.md new file mode 100644 index 0000000..866b127 --- /dev/null +++ b/en/help/sh_keyboard_out.md @@ -0,0 +1,3 @@ +### Keyboard Out + +The physical keyboard is showing. diff --git a/en/help/sh_light_level.md b/en/help/sh_light_level.md new file mode 100644 index 0000000..95bb1da --- /dev/null +++ b/en/help/sh_light_level.md @@ -0,0 +1,12 @@ +### Light Level + +The current light level as a (massaged) percentage of the minumum and +maximum light levels ever seen.\ +\ +After setting this state up, you should calibrate it by covering up the +device for a few seconds and exposing it to bright light.\ +\ +Warning: on at least some devices, 0% is the level of a dimly lit room, +rather than that of total darkness.\ +\ +See Also: Menu / Prefs / Monitor / Display Off Monitoring / Light Sensor diff --git a/en/help/sh_magnetic_field.md b/en/help/sh_magnetic_field.md new file mode 100644 index 0000000..295bd4e --- /dev/null +++ b/en/help/sh_magnetic_field.md @@ -0,0 +1,9 @@ +### Magnetic Field + +The absolute magnetic field strength at the current location in +micro-Tesla.\ +\ +Magnetic fields will be detected better on some axis than on others e.g. +the base of the device may be more sensitive than the edge.\ +\ +See Also: variable %MFIELD. diff --git a/en/help/sh_media_button.md b/en/help/sh_media_button.md new file mode 100644 index 0000000..cbb6154 --- /dev/null +++ b/en/help/sh_media_button.md @@ -0,0 +1,36 @@ +### Media Button + +One of the media buttons is pressed.\ +\ +Not all devices have all represented buttons.\ +\ +If *Held* is checked, the key must have been held down for minimally the +normal key repeat time for this context to become active. Held will not +function on most devices with Google Voice Search.\ +\ +If *Stop Event* is checked, Tasker will try to prevent the event being +passed on to other apps when it\'s received. This does not have effect +use on Android 2.2+ devices because usually one or more apps will try to +Grab (see below) the event and no others will see it. The changes in +Android 2.2 have made media button handling very complicated\...\ +\ +*Grab*\ +\ +*Grab* is only relevant for Android 2.2+ devices, which changed the way +in which the media button is handled. It indicates that Tasker should +become the sole receiver of media button events. If you don\'t do this, +Tasker may not receive the events e.g. because a media player has +requested the events.\ +\ +Note 1: if you **do** enable *Grab*, you probably want to add another +context to this profile e.g. an application context, so that Tasker +doesn\'t interfere with media control the whole time.\ +\ +Note 2: Tasker grabs the event control as soon as it\'s necessary and +releases it as soon as possible. Another app may grab control at a later +time and so block events to Tasker.\ +\ +Note 3: if you enable *Grab* for any media button, it blocks **all** +media button events to other apps.\ +\ +Note 4: you can regrab the focus with action Media / Media Button Events diff --git a/en/help/sh_missed_call.md b/en/help/sh_missed_call.md new file mode 100644 index 0000000..ca1842a --- /dev/null +++ b/en/help/sh_missed_call.md @@ -0,0 +1,9 @@ +### Missed Call + +The Android call log has one or missed calls.\ +\ +If a Caller is specified, only missed calls from that number are +relevant (see Pattern Matching in the Userguide).\ +\ +If you want something to happen every time there is a \*new\* missed +call, use the event Missed Call instead. diff --git a/en/help/sh_mobile_connect.md b/en/help/sh_mobile_connect.md new file mode 100644 index 0000000..8463e2a --- /dev/null +++ b/en/help/sh_mobile_connect.md @@ -0,0 +1,6 @@ +### Mobile Network + +The device has mobile data connectivity of one of the checked types.\ +\ +The Active parameter specifies whether or not the mobile network must be +the network currently in use in order to match. diff --git a/en/help/sh_nfc_status.md b/en/help/sh_nfc_status.md new file mode 100644 index 0000000..a9cfef5 --- /dev/null +++ b/en/help/sh_nfc_status.md @@ -0,0 +1,5 @@ +### NFC Status + +Whether the default NFC adapter on the device is enabled or not.\ +\ +Requires Android 4.3.3+. diff --git a/en/help/sh_orientation.md b/en/help/sh_orientation.md new file mode 100644 index 0000000..06657fd --- /dev/null +++ b/en/help/sh_orientation.md @@ -0,0 +1,9 @@ +### Orientation + +The device is in the specified orientation.\ +\ +Note that on some devices the actual orientation may be the reverse of +those shown.\ +\ +See Also: Menu / Prefs / Monitor / Display Off Monitoring / +Accelerometer diff --git a/en/help/sh_pen_menu.md b/en/help/sh_pen_menu.md new file mode 100644 index 0000000..0f95dd2 --- /dev/null +++ b/en/help/sh_pen_menu.md @@ -0,0 +1,5 @@ +### Pen Menu + +The menu associated with the hardware pen is showing.\ +\ +Currently only Samsung SPen is supported. diff --git a/en/help/sh_pen_out.md b/en/help/sh_pen_out.md new file mode 100644 index 0000000..dc7b3d3 --- /dev/null +++ b/en/help/sh_pen_out.md @@ -0,0 +1,5 @@ +### Pen Out + +The hardware pen is not in its port.\ +\ +Currently only Samsung SPen is supported. diff --git a/en/help/sh_plugin.md b/en/help/sh_plugin.md new file mode 100644 index 0000000..f24d175 --- /dev/null +++ b/en/help/sh_plugin.md @@ -0,0 +1,10 @@ +### Plugin + +Listens for the conditions of the specified Locale-compatible +\'condition\' plugin being satisfied.\ +\ +Locale does not need to be installed on the device.\ +\ +WARNING: data you enter in the plugin configuration screen is collected +by the \*plugin\*, not by Tasker. If the plugin has Internet permissions +it could e.g. transmit your data to third-parties. diff --git a/en/help/sh_power.md b/en/help/sh_power.md new file mode 100644 index 0000000..ec922ba --- /dev/null +++ b/en/help/sh_power.md @@ -0,0 +1,3 @@ +### Power + +The device is connected to a power source. diff --git a/en/help/sh_power_save_mode.md b/en/help/sh_power_save_mode.md new file mode 100644 index 0000000..a8abc32 --- /dev/null +++ b/en/help/sh_power_save_mode.md @@ -0,0 +1,6 @@ +### Power Save Mode + +Whether Power Save Mode (also known as Battery Saver) is enabled or +not.\ +\ +Requires Android 5.0+. diff --git a/en/help/sh_pressure.md b/en/help/sh_pressure.md new file mode 100644 index 0000000..dd12009 --- /dev/null +++ b/en/help/sh_pressure.md @@ -0,0 +1,10 @@ +### Pressure + +The (probably atmospheric) pressure at the current location in +millibars.\ +\ +At 30,000km altitude it will be virtually 0mb. At sea-level it will be +approximately 1013mb.\ +\ +See Also: Menu / Prefs / Monitor / Display Off Monitoring / Pressure +Sensor diff --git a/en/help/sh_profile_active.md b/en/help/sh_profile_active.md new file mode 100644 index 0000000..b9f8bc4 --- /dev/null +++ b/en/help/sh_profile_active.md @@ -0,0 +1,8 @@ +### Profile Active + +A Tasker profile with the specified name is active. Unnamed profiles\' +descriptions aren\'t checked.\ +\ +Name is a simple match, see [Pattern +Matching](https://tasker.joaoapps.com/userguide/en/matching.html) in the +Userguide. diff --git a/en/help/sh_proximity.md b/en/help/sh_proximity.md new file mode 100644 index 0000000..928e5f3 --- /dev/null +++ b/en/help/sh_proximity.md @@ -0,0 +1,13 @@ +### Proximity Sensor + +Active when the proximity sensor of the device reports than an object is +nearby.\ +\ +After setting this state up, you should calibrate it by covering and +then uncovering proximity sensor a couple of times.\ +\ +This state may be unreliable in a profile mixed with other contexts. If +the purpose is to save power, some people have had more luck toggling +the Monitor preference instead.\ +\ +See Also: Menu / Prefs / Monitor / Display Off Monitoring / Proximity diff --git a/en/help/sh_signal_strength.md b/en/help/sh_signal_strength.md new file mode 100644 index 0000000..d04c8b4 --- /dev/null +++ b/en/help/sh_signal_strength.md @@ -0,0 +1,8 @@ +### Signal Strength + +The phone radio\'s reported signal level is within the specified range.\ +\ +If the phone has no service or the signal strength is unknown this state +will never be active.\ +\ +See also: variable %CELLSIG. diff --git a/en/help/sh_task_running.md b/en/help/sh_task_running.md new file mode 100644 index 0000000..5d6db30 --- /dev/null +++ b/en/help/sh_task_running.md @@ -0,0 +1,9 @@ +### Task Running + +A Tasker task with the specified name is running.\ +\ +Name is a simple match, see Pattern Matching in the Userguide.\ +\ +*Running* means that the task is in the queue for it\'s actions to be +executed but it\'s not necessarily the case that one of its actions is +currently being carried out. diff --git a/en/help/sh_temperature.md b/en/help/sh_temperature.md new file mode 100644 index 0000000..c588a32 --- /dev/null +++ b/en/help/sh_temperature.md @@ -0,0 +1,6 @@ +### Temperature + +Whether the current ambient temperature is in the specified range of +degrees (Celsius).\ +\ +See also: variable %TEMP. diff --git a/en/help/sh_unread_ms.md b/en/help/sh_unread_ms.md new file mode 100644 index 0000000..5fcc642 --- /dev/null +++ b/en/help/sh_unread_ms.md @@ -0,0 +1,10 @@ +### Unread Text + +There is an SMS or MMS which has not been read and matches the specified +parameters.\ +\ +Content is the Body of an SMS, or the Subject or an MMS.\ +\ +Occasionally this state will be active when there are no apparent unread +texts because sometimes texts get stuck in an unexpected state in the +messaging app. The app \'Reset Unread SMS\' can fix this problem. diff --git a/en/help/sh_usb_connect.md b/en/help/sh_usb_connect.md new file mode 100644 index 0000000..8eae585 --- /dev/null +++ b/en/help/sh_usb_connect.md @@ -0,0 +1,9 @@ +### USB Connected + +Whether a device of the specified class is currently connected.\ +\ +Due to limitations of the Android USB interface, successful detection of +USB connections is extremely dependent on the hardware of both the host +and USB device.\ +\ +Note: The *Any* class does **not** include USB Hubs. diff --git a/en/help/sh_user_active.md b/en/help/sh_user_active.md new file mode 100644 index 0000000..405633d --- /dev/null +++ b/en/help/sh_user_active.md @@ -0,0 +1,20 @@ +### User Active + +Whether the user with the specified ID is active or not.\ +\ +When a different user is selected, this state will become inactive.\ +\ +When returning to the specified user, the state will become active +again.\ +\ +Note that each user account has it\'s own set of apps, so to detecting +each user becoming active would require Tasker to be installed under +each account.\ +\ +In other words, it only makes sense to specify the user ID of the user +under which the current Tasker install is running.\ +\ +The administrator (first user) ID is usually 0, the action Test System +can be used to determine other user IDs.\ +\ +This state requires Android 4.2+. diff --git a/en/help/sh_variable_value.md b/en/help/sh_variable_value.md new file mode 100644 index 0000000..fa2228d --- /dev/null +++ b/en/help/sh_variable_value.md @@ -0,0 +1,15 @@ +### Variable Value + +The named user-defined variable matches the specified operator and +value.\ +\ +See the userguide document on Flow Control for details of how the +operator/value comparison functions.\ +\ +This state can also trigger on some \'dynamic\' built-in variables: see +the *Variables* section of the Userguide for details.\ +\ +Warning: if you want to trigger on a variable and then take some action +which sets the thing the variable represents you should use the Variable +Set event instead. A Variable Value state will cause complications when +the state exits and tries to restore the value again. diff --git a/en/help/sh_vpn_connect.md b/en/help/sh_vpn_connect.md new file mode 100644 index 0000000..b0af466 --- /dev/null +++ b/en/help/sh_vpn_connect.md @@ -0,0 +1,6 @@ +### VPN Connected + +A VPN network is connected.\ +\ +The Active parameter specifies whether or not the VPN must be the +network currently being used in order to match. diff --git a/en/help/sh_wifi_connect.md b/en/help/sh_wifi_connect.md new file mode 100644 index 0000000..3948754 --- /dev/null +++ b/en/help/sh_wifi_connect.md @@ -0,0 +1,23 @@ +### Wifi Connected + +The device is connected to a Wifi Access Point (AP).\ +\ +If any of the parameters are specified, the AP must match that +parameter, otherwise any AP will match.\ +\ +SSID: the SSID of the AP e.g. SKY34312\ +\ +MAC: the MAC address of the AP e.g. 00:1f:35:34:43:4a\ +\ +IP: the IP address of the AP e.g. 192.156.98.4\ +\ +You can use the variable Wifi Info to see information about the current +AP (when connected).\ +\ +The Active parameter specifies whether or not the wifi network must be +the network currently in use in order to match. Setting it to **Yes** +means the WiFi must be the default route to the internet. If **Yes** and +you enable VPN, the WiFi state rightfully becomes inactive, as that WiFi +connection is only used to route traffic to the VPN. The VPN has default +route to internet. Any means it doesn\'t matter if WiFi is route to +internet or not, as long as you are connected to a WiFi. diff --git a/en/help/sh_wifi_near.md b/en/help/sh_wifi_near.md new file mode 100644 index 0000000..cbde259 --- /dev/null +++ b/en/help/sh_wifi_near.md @@ -0,0 +1,42 @@ +### Wifi Near + +The device is near a Wifi Access Point (AP).\ +\ +On recent Android versions wifi scanning is only available for apps with +the location permission, so that\'s why Tasker asks for it.\ +\ +If any of the parameters are specified, the AP must match that +parameter, otherwise any AP will match.\ +\ +SSID: the SSID of the AP e.g. SKY34312\ +\ +MAC: the MAC address of the AP e.g. 00:1f:35:34:43:4a\ +\ +Capabilities: e.g. \[WPA-PSK-TKIP\]\ +\ +Min Activate Signal Level: the minimum signal strength to activate the +context. It\'s ignored once the context is active.\ +\ +Channel: the frequency channel.\ +\ +Toggle Wifi: if Wifi on the device is disabled, enable it for the period +of the scan, probably around 15 seconds. On Android 6+ this is rarely +needed, unless you disabled the *Scanning Always Available* option in +Android settings. Toggling cannot take place when the Wifi Tether +(Hotspot) is enabled on the device. On Android 4.3+ devices, consider +enabling *Scanning Always Available* in Android advanced wifi settings, +instead of toggling.\ +\ +A seen AP which is no longer visible for approximately two times the +scan period is forgetten. This is to help prevent the profile bouncing +on and off at the edge of the signal reception area.\ +\ +The period for Wifi scanning is specified in +Menu-\>Preferences-\>Monitor-\>Wifi Scan Time.\ +\ +You can use the variable Wifi Info to see information about nearby APs +(when not connected).\ +\ +When any profile has a Wifi Near state context, it will do regular scans +for nearby APs (see Menu-\>Preferences-\>Monitor-\>Wifi Scan Period. +This requires the device\'s Wifi radio to be enabled. diff --git a/en/icons.md b/en/icons.md new file mode 100644 index 0000000..06d9430 --- /dev/null +++ b/en/icons.md @@ -0,0 +1,56 @@ +--- +title: 'Tasker: Icons' +--- + +Icons ![](icon_tasker.png) +-------------------------- + +Tasker can use four categories of icons: [Application](#app), +[Built-In](#builtin), [Ipack](#ipack), [User-Installed](#user). + +In some places it\'s also possible to use any image stored on local +media as an icon. + +[]{#app} + +#### Application Icons + +These are taken from applications installed on the device. + +Minor note: if the icon of the application changes, an update of +previously created widgets/shortcuts can be forced by creating a single +widget with the new icon and then rebooting. + +[]{#builtin} + +#### Built-In Icons + +These come with Tasker and are kept in the device\'s memory. []{#ipack} + +#### Ipack Icon Sets + +[Ipack](http://ipack.dinglisch.net) is a free, open format for sharing +of icon sets between Android applications. Ipack icon sets can be either +installed from [Play Store](http://market.android.com/search?q=ipack) or +from the [Ipack website](http://ipack.dinglisch.net/download.html). + +When setting an icon, you will notice an item labelled *Download More +Icons*. Clicking on it will use the appropriate source depending on +which version of Tasker you have. + +[]{#user} + +#### User-Installed Icons + +You can also install your own icons directly into Tasker\'s icon +directory `/sdcard/Tasker/.icn/`. Make sure the icons are in a +subdirectory. The subdirectory should also only be one level deep (no +subsubdirectories). + +Icons must be in PNG format. + +Example: a two-icon set called *Christmas* would have the two files in +these locations: + +> `/sdcard/Tasker/.icn/Christmas/santa.png`\ +> `/sdcard/Tasker/.icn/Christmas/snowman.png` diff --git a/en/index.md b/en/index.md new file mode 100644 index 0000000..418403a --- /dev/null +++ b/en/index.md @@ -0,0 +1,95 @@ +--- +title: 'Tasker: Userguide' +--- + +Tasker Userguide ![](icon_tasker.png) +------------------------------------- + +Profiles + +- [Main Screen](activity_main.html) + + + +- Contexts + - [Application](appcontext.html) + - [Time](timecontext.html) + - [Day](daycontext.html) + - [Location](loccontext.html) + - [Location Edit](activity_locselect.html) + - [State](activity_stateedit.html) + - [A-Z](help/sh_index.html) + - [Event](eventcontext.html) + - [Event Edit](activity_eventedit.html) + - [A-Z](help/eh_index.html) + +Tasks + +- [General](tasks.html) +- [Task Edit](activity_taskedit.html) +- [Flow Control](flowcontrol.html) +- [Task Widgets / Shortcuts](app_widgets.html) + - [Configuration](activity_widget_configure.html) +- Actions\ + - [Action Edit](activity_actionedit.html) + - [Settings](settings.html) + - [A-Z](help/ah_index.html) + +Scenes + +[General](scenes.html) + +[Scene Edit](activity_sceneedit.html) + +[Scene Properties](activity_scenepropertiesedit.html) + +Scene Elements\ + +- [Button](element_button.html) [CheckBox](element_checkbox.html) + [Doodle](element_doodle.html) [EditText](element_textedit.html) + [Image](element_image.html) [Map](element_map.html) + [Menu](element_menu.html) [Number Picker](element_picker.html) + [Oval](element_shape.html) [Rectangle](element_shape.html) + [Slider](element_slider.html) [Spinner](element_spinner.html) + [Text](element_text.html) [Toggle](element_toggle.html) + [Video](element_video.html) [Web](element_web.html) +- [Element Edit](activity_elementedit.html) + +Variables + +- [General](variables.html) + +Miscellaneous + +- [Android System Power Management](androidpowermanagement.html) +- [App Creation](appcreation.html) +- [CPU Control](cpu.html) +- [Encryption](encryption.html) +- [Gestures](gestures.html) +- [Icons](icons.html) +- [Intents](intents.html) +- [Java](java.html) +- [JavaScript](javascript.html) +- [Location Without Tears](loctears.html) +- [Maths](maths.html) +- [MIDI](midi.html) +- [Pattern Matching](matching.html) +- [Power Usage](power.html) +- [Run Log](activity_runlog.html) + +FAQs + +- [How Do I\... / Can I\... ?](faqs/faq-how.html) +- [Usage Problems](faqs/faq-problem.html) +- [Why\... ?](faqs/faq-why.html) +- [App Creation](faqs/faq-appcreation.html) +- [Other](faqs/faq-other.html) + +Web Links + +- [Wiki (Step-throughs, Recipes)](http://tasker.wikidot.com) +- [Tour](http://tasker.dinglisch.net/tour.html) +- [Bugs / Limitations](http://tasker.dinglisch.net/bugs.html) +- [Plans](http://tasker.dinglisch.net/todo.html) +- [Developers](http://tasker.dinglisch.net/developers.html) +- [Release Notes](http://tasker.dinglisch.net/changes.html) diff --git a/en/intents.md b/en/intents.md new file mode 100644 index 0000000..64b449c --- /dev/null +++ b/en/intents.md @@ -0,0 +1,202 @@ +--- +title: 'Tasker: Intents' +--- + +Intents ![](icon_tasker.png) +---------------------------- + +Intents are Android\'s main method for allowing apps to communicate with +each other and share data. Intents are for advanced users. This document +is not intended to explain how intents work, but how to use Tasker\'s +intent facilities. + +### Sending Intents + +You can find information about intents and details of several built-in +Android intents on the Android SDK [Reference +Site](%20https://developer.android.com/reference/android/content/Intent.html). + +Tasker allows you to send arbitraty intents using the *Send Intent* +action in the *Misc* category. This allows you to provoke behaviour in +other apps, when you know the particular form of intent they are +designed to respond to. + +[]{#sendparameters} + +#### Send Intent Parameters + +Note that any parameter specified except Extras will reduce the set of +possible receivers of the intent. + +##### Action + +What the sender would like the receiver to do with the data. + +Example: `android.intent.action.VIEW` + +##### Cat + +Gives additional information about the action. + +##### Mime-Type + +From the developer reference: \"This is used to create intents that only +specify a type and not data, for example to indicate the type of data to +return.\" + +Can\'t be used together with a Data specification. + +##### Data + +The main data specification in the form of a URI. + +Can\'t be used together with a Mime-Type specification. + +##### Extras + +Any additional data to send with the intent. + +The extras must be in the form of a single **colon-separated** key and +value. + +If the value can be parsed as an integer, long (integer ending in L), +floating point number, double (float ending in D) or boolean +(true/false) it will be treated as one. + +The value can also be forced to a simple type (long etc) or `Uri` via +casting. + +The name of a Java object created via the Java Function action which is +of type `Parcelable` can also be used (e.g. a `Bundle`) + +If none of the above apply, the value will be treated as a `String`. + +Examples: + +- have\_flowers:true\ + (`boolean`) +- this.is.an.integer.example:34\ + (`int`) +- this.is.a.double.example:34D\ + (`int`) +- address: (Uri) http://a.b\ + (`Uri`) +- bunchofvalues:mybundle (where mybundle is the name of a Java object + of type Bundle)\ + (`Parcelable`) +- simple.string.example:hello there!\ + (`String`) + +##### Package, Class + +Allow specification of a particular package and/or class within the +package to restrict the broadcast to. + +##### Target + +The type of Android component which should receive the intent. + +#### Finding App Intents + +Many intents that an app listens for are declared in its package +manifest (called AndroidManifest.xml). You can view details of those +intents using the *aapt* tool that comes with the Android SDK like this: + +> ` aapt dump xmltree example.apk AndroidManifest.xml` + +Look for Intent Filter elements. + +It\'s not (easily) possible to determine which intents an app listens +for dynamically (i.e. while the app is running). + +### Receiving Intents + +Tasker allows you to receive a large range of intents, sent by apps or +the system, using the *Intent Received* event in the *System* category. + +For each event you create, Tasker sets up a corresponding [Intent +Filter](https://developer.android.com/reference/android/content/IntentFilter.html) +object. + +#### Limitations + +- Tasker can only receive intents which are sent to **broadcast + receiver** components, not to activities or services. +- some intent senders require that a corresponding intent filter is + specified statically (i.e. in an Android Manifest). Those intents + cannot be received. +- intents which are broadcast with a specification of a particular + package component to receive it cannot be received. + +[]{#receivedparameters} + +#### Intent Received Parameters + +##### Action + +If specified, the received intent must have also that action specified. + +##### Cat + +Any categories specified in the received intent must also be specified +in the Tasker event. Note that this is logically different to the +situation for the Action parameter. + +##### Scheme + +If any schemes are included in the filter, then an Intent\'s data must +be either one of these schemes or a matching data type. If no schemes +are included, then an Intent will match only if it includes no data. + +##### Mime Type + +If a type is specified, then an Intent\'s data must be the same, or +match the Scheme parameter. If no Mime Type is specified, then an Intent +will only match if it specifies no Data. + +##### Priority + +If the intent is part of an *ordered broadcast*, then the priority +specified here will affect whether this event will receive the intent +before or after other listeners. + +##### Stop Event + +If the intent is part of an *ordered broadcast*, then specifying Stop +Event will prevent it being passed to other listeners after this one. + +#### Accessing Intent Data + +When an intent triggers an Intent Received event, the resulting task(s) +which are executed have access to many details of the intent via local +variables (where relevant and present): + +- *%intent\_data*: the data +- *%evtprm1*: the action +- *%evtprm2*: the first category +- *%evtprm3*: the second category +- *%evtprm4*: the URI scheme +- *%evtprm5*: the MIME type + +In addition, any *extras* attached to the intent can be accessed under +their name, with the following modifications to make them valid variable +names: + +- all letters will be converted to lower-case, then +- names of length less than 3 will have **var\_** prefixed +- non-letter-or-digit characters will be converted to \_, then +- names not starting with a letter will have **a** prefixed, then +- names not ending with a letter or digit will have **a** affixed +- if the result is the name of another extra, **\_dup** will be + affixed until that is no longer the case + +For example, an extra with key **%SOUND\_ON** will be available as +**%sound\_on**, and an extra with key **package.SOUND\_ON!**, will be +available via the local variable **%package\_sound\_on\_a** + +The following extra types are presented in Tasker as local arrays: +`String [], Integer [], ArrayList, ArrayList`. + +Example: a string array extra \`named \'fruits\' with values \'pear\' +and \'apple\' will result in the local variables %fruits1 (=pear) and +%fruits2 (=apple). diff --git a/en/java.md b/en/java.md new file mode 100644 index 0000000..4c50e5e --- /dev/null +++ b/en/java.md @@ -0,0 +1,345 @@ +--- +title: 'Tasker: Java Support' +--- + +Java Support ![](icon_tasker.png) +--------------------------------- + +- [Introduction](#intro) +- [The `Java Function` Action](#javafunction) + - Using The Action + - Parameters + - Return Values +- [Objects](#objects) + - Creating An Object + - Object Naming, Local And Global + - Built-in Objects + - Assigning Values + - Other Actions Supporting Objects +- [Other Topics](#other) + - Casting + - Constants + - Generic Classes + - Permissions + - Service Thread + - Static Fields + +[]{#intro} + +### Introduction + +Android has hundreds of thousands of functions which apps can use. It\'s +not possible for Tasker to present all of those to the user, so Tasker +allows the advanced user to directly call those Java functions and work +with Java objects themselves. + +It does **not** allow you to \'write Java code\'\... but the combination +of Tasker\'s logic and flow control with direct access to the Android +API is sufficient for most automation purposes. + +This page assumes you have a basic familiarity with the Java concepts of +*objects* and *classes*. + +Developer information on the Android API is available from +[Google](http://developer.google.com/develop). + +#### Example + +1. `Variable Set`, %service, wifi +2. `Java Function`, wiman = CONTEXT.getSystemService( %service ) +3. `Java Function`, %enabled = wiman.isWifiEnabled() +4. `Java Function`, wiman.setEnabled( true ), If %enabled eq false + +This example task turns wifi on if it is not already enabled. + +Action 2 demonstrates that Tasker variables can be used in Java function +calls. *wiman* is a Java object resulting from the function call which +is stored by Tasker for use in subsequent actions. *CONTEXT* is also +such a variable but is built-in and always accessible to +`Java Function`. + +Action 3 demonstrates that results of `Java Function` can also be +assigned to Tasker variables. Since all Tasker variables are strings, +some conversion needs to take place depending on what type of object the +Java function returns. In this case it\'s a boolean, and so %enabled +will be **true** or **false**. + +Action 4 demonstrates taking a decision based on the result of previous +Java function call. + +[]{#javafunction} + +### The `Java Function` Action + +#### Using The Action + +1. enter an object or class (to access static functions) into the first + parameter. + + The magnifying glass icon will show a class selector for classes + known in the latest Android API. Some may be coloured red, as not + all classes are available on all devices. + + The coffee-cup icon allows quick selection of known Java objects + + The question mark icon will attempt to link to the relevant Android + reference page for the object or class. + +2. click the magnifying class next to the `Function` parameter to + select a function to execute appropriate to the object or class from + step 1. + + In most cases, Tasker will be able to guess which class an object + is, and hence which functions are available, if not, see + [casting](#casting) below. + + Functions listed in red are private, meaning they can be used, but + the author didn\'t intend them to be. + +3. if the function returns a value, you can enter a Java [object + name](names) to assign it to, or a Tasker variable, see + [below](#return). +4. enter any parameters required for the function, see + [below](#params). The type of object the function expects for the + parameter is displayed above the text entry field. The magnifying + glass will list any fields associated with the current entry in the + text box, where possible. + +[]{#params} + +#### Parameters + +If you don\'t enter a value for a parameter, `null` will be used for +that parameter when the function is called. + +If you enter the name of a variable array, Tasker will attempt to +convert the array values into the type of object (an array or +collection) which the function expects. + +Other Tasker variables will be replaced in the usual way. + +Here can also be entered Java objects, or their fields, either built-in +or created by previous calls to `Java Function` (e.g. `wiman` or +`arr[0].length`) + +[]{#return} + +#### Return Values + +When a Java function returns a value, it can be placed in either a +Tasker variable or a Java object (or ignored). + +If it\'s placed into a Tasker variable, it\'s converted to a piece of +text and the object itself is lost and can no longer be accessed. Note +that if the Java object is an array or list, it will be assigned to +multiple Tasker variables in the usual way e.g. %val1, %val2\... + +When the returned value is placed into a Java object, you can access the +object at a later time in another `Java Function` and some other (see +later) actions. + +Note that return value classes are inferred from the function, so object +names can refer to different classes at different times. It\'s not +recommended to reuse names in this way however! + +[]{#objects} + +### Objects + +#### Creating An Object + +New objects of most types can be created by filling in the class name, +hitting the function selector and selecting a function called `new`. + +It\'s worth noting that many classes in the Android API have special +static functions for getting a new object of that class called e.g. +`getInstance` or similar. + +Arrays (also multidimensional) can be created by adding `[]` to the +class name (or e.g. `[][]`). + +Here\'s an example of creating a 3x5 string array: + +1. `Java Function`, arr = new String\[\]\[\]( 3 ) +2. `For`, %rowno, 0:2 +3.    `Java Function`, arr\[%rowno\] = new String\[\]( 5 ) + +Creating an array is also possible natively via the `newInstance` +function in the the class `Array`. + +Array components can be accessed as in normal Java (`arr[0][1]`) +wherever Java objects are [supported](#support). + +[]{#names} + +#### Object Naming, Local and Global + +Object names can consist of any any combination of upper or lower case +letters and underscore and, unlike Tasker variable names, may start with +underscore. The first letter may not be upper-case, as this is a +convention used to distinguish objects from classes. + +Analogous to Tasker variables, Java objects are either local to the +current task if their name is all lower case, or global (available to +any other task) if there are any upper-case characters in the name. +All-upper-case names represent final (fixed) global objects which cannot +be modified. + +There are three important things to remember about global Java objects: + +- it\'s important to delete them once they are no longer needed, + because they can take up a lot of memory. +- unlike global Tasker variables, they are lost when Tasker is killed + e.g. because the device was restarted +- their names can only contain upper- or lower-case letters or + underscore. + +#### Built-in Objects + +- **Android Context** (class `Context`)\ + *CONTEXT*\ + Many funtions in Android require a context object. In tasks running + **directly** as a result of a scene element event, this is the + Activity object which is displaying the scene, otherwise it\'s + Tasker\'s Application context. +- **Image Buffer** (class `Bitmap`)\ + *IBUFFER* The object manipulated by functions in Tasker\'s *Image* + action category.\ + +#### Assigning Values + +When writing Java code, to make a name refer to the same object as +another name, you would use something like: + + String a = "hello"; + String b = a; + +Now both a and b refer to the same object. + +To achieve that in Tasker, you use the special `assignTo` function after +selecting the object to assign. + + Java Function, a, "hello", assign (or a = "hello".assign()) + Java Function, b, a, assign (or b = a.assign()) + +[]{#support} + +#### Other Actions Supporting Objects + +##### If + +A Java object can be directly referenced in a condition. Null-value +objects are replaced with text representation `null`. + +Examples: + + If, arr[0][0] eq 45 + If, arr[0].length > 3 + If, lightlevel Equals null + +You cannot make function calls e.g. str.charAt( 5 ) + +##### For + +The *Value* parameter in the For action can include Java object +references as for *If*. + + For, %value, arr + +Will repeat once for each value in the array *arr*. This will also work +for string lists and simple objects (boolean etc) + +[]{#other} + +### Other Topics + +[]{#casting} + +#### Casting + +*Casting* in Tasker is used only to tell Tasker the type of a particular +object. That can be useful so that e.g. Tasker can show functions which +are appropriate to it. + +In the example at the top of the page, the `getSystemService` function +returns an Object: + + Java Function, wiman = CONTEXT.getSystemService( %service ) + +Since the object could be one of many kinds of managers, Tasker is not +able to list the WifiManager functions for easy selection when creating +the next `Java Function` action in the task. + +You can tell Tasker the actual type by adding a cast in brackets before +the name: + + Java Function, (WifiManager) wiman = CONTEXT.getSystemService( %service ) + +#### Constants + +Tasker support the usual naming conventions for Java constants. + +- **L** a long integer e.g. `300L` +- **F** a floating-point number e.g. `45.6D` +- **D** a double-length float e.g. `45.6D` +- **double quotes** indicate a string e.g. `"hello"`, though in many + cases Tasker will infer that a string was intended anyway +- **single quotes** indicate a character e.g. `'x'` + +Tasker will attempt to convert numbers without affixes to a Java type in +the following order: `int, long, float, double`. + +#### Generic Classes + +Tasker only supports fully the following generic classes: `` + +- ArrayList\ +- ArrayList\ +- ArrayList\ +- ArrayList\ +- ArrayList\ +- ArrayList\ +- ArrayList\ + +Create them by selecting their class in the class selector, clicking the +function selector and clicking *new*. + +Generic classes mixed with arrays cannot be handled by Tasker, though +you can pass such objects around from function to function. + +#### Permissions + +For some function calls, Android requires that the calling app have +declared a permission otherwise the call will fail. This means that a +Java Function call will fail if the permission is not one of the ones +pre-declared by Tasker. + +Unfortunately, Android does not allow permissions to be added +dynamically, so if you wish to use a function requiring a permission +that Tasker does not already have, the only option is to generate a +child app to run the function (see [App Creation](appcreation.html)). In +the child configuration screen you can add any permissions which your +Java Function call needs to the child app. + +#### Service Thread + +Java code is executed with a non-UI thread by a service. + +Some implications are: + +- things which require an activity will not work e.g. showing a dialog +- sending intents will in some cases require the flag + `Intent.FLAG_FROM_BACKGROUND` and possibly also + `Intent.FLAG_ACTIVITY_NEW_TASK` + +#### Static Fields + +Static fields (e.g. `ContentResolver.EXTRA_SIZE`) are not currently +supported by Tasker. + +A workaround is to use reflection to get (or set) the value: + + res = CONTEXT.getContentResolver(); + cls = res.getClass(); + fld = cls.getField( EXTRA_SIZE ); + %val = fld.get( null ); diff --git a/en/javascript.md b/en/javascript.md new file mode 100644 index 0000000..1dc2f2c --- /dev/null +++ b/en/javascript.md @@ -0,0 +1,1597 @@ +--- +title: 'Tasker: JavaScript Support' +--- + +JavaScript Support ![](icon_tasker.png) +--------------------------------------- + +- [Introduction](#intro) +- [Local Variables](#localvars) +- [Global Variables](#globalvars) +- [Arrays](#array) +- [Settings](#settings) +- [Execution](#exe) +- [Working Off-Device](#offdevice) +- [Builtin Functions](#builtin)\ + [alarmVol](#alarmVol) [audioRecord](#audioRecord) + [audioRecordStop](#audioRecordStop)\ + [btVoiceVol](#btVoiceVol) [browseURL](#browseURL) [button](#button)\ + [call](#call) [callBlock](#callBlock) [callDivert](#callDivert) + [callRevert](#callRevert) [callVol](#callVol) [carMode](#carMode) + [clearKey](#clearKey) [composeEmail](#composeEmail) + [composeMMS](#composeMMS) [composeSMS](#composeSMS) + [convert](#convert) [createDir](#createDir) + [createScene](#createScene) [cropImage](#cropImage)\ + [decryptDir](#decryptDir) [decryptFile](#decryptFile) + [deleteDir](#deleteDir) [deleteFile](#deleteFile) + [destroyScene](#destroyScene) + [displayAutoBright](#displayAutoBright) + [displayAutoRotate](#displayAutoRotate) + [displayTimeout](#displayTimeout) [dpad](#dpad) [dtmfVol](#dtmfVol)\ + [elemBackColour](#elemBackColour) [elemBorder](#elemBorder) + [elemPosition](#elemPosition) [elemText](#elemText) + [elemTextColour](#elemTextColour) [elemTextSize](#elemTextSize) + [elemVisibility](#elemVisibility) [enableProfile](#enableProfile) + [encryptDir](#encryptDir) [encryptFile](#encryptFile) + [endCall](#endCall) [enterKey](#enterKey) [exit](#exit)\ + [filterImage](#filterImage) [flash](#flash) [flashLong](#flashLong) + [flipImage](#flipImage)\ + [getLocation](#getLocation) [getVoice](#getVoice) [global](#global) + [goHome](#goHome)\ + [haptics](#haptics) [hideScene](#hideScene)\ + [listFiles](#listFiles) [loadApp](#loadApp) [loadImage](#loadImage) + [local](#local) [lock](#lock)\ + [mediaControl](#mediaControl) [mediaVol](#mediaVol) + [micMute](#micMute) [mobileData](#mobileData) + [musicBack](#musicBack) [musicPlay](#musicPlay) + [musicSkip](#musicSkip) [musicStop](#musicStop)\ + [nightMode](#nightMode) [notificationVol](#notificationVol)\ + [performTask](#performTask) [popup](#popup) + [profileActive](#profileActive) [pulse](#pulse)\ + [readFile](#readFile) [reboot](#reboot) [resizeImage](#resizeImage) + [ringerVol](#ringerVol) [rotateImage](#rotateImage)\ + [saveImage](#saveImage) [say](#say) [scanCard](#scanCard) + [sendIntent](#sendIntent) [sendSMS](#sendSMS) + [setAirplaneMode](#setAirplaneMode) + [setAirplaneRadios](#setAirplaneRadios) [setAlarm](#setAlarm) + [setAutoSync](#setAutoSync) [setBT](#setBT) [setBTID](#setBTID) + [setClip](#setClip) [setGlobal](#setGlobal) [setKey](#setKey) + [setLocal](#setLocal) [settings](#settings) + [setWallpaper](#setWallpaper) [setWifi](#setWifi) [shell](#shell) + [showScene](#showScene) [shutdown](#shutdown) + [silentMode](#silentMode) [sl4a](#sl4a) + [soundEffects](#soundEffects) [speakerphone](#speakerphone) + [statusBar](#statusBar) [stayOn](#stayOn) + [stopLocation](#stopLocation) [systemLock](#systemLock) + [systemVol](#systemVol)\ + [takeCall](#takeCall) [takePhoto](#takePhoto) + [taskRunning](#taskRunning) [type](#type)\ + [usbTether](#usbTether) [unzip](#unzip)\ + [vibrate](#vibrate) [vibratePattern](#vibratePattern)\ + [wait](#wait) [wifiTether](#wifiTether) [writeFile](#writeFile)\ + [zip](#zip) +- [Function Notes](#notes) + +[]{#intro} + +### Introduction + +Tasker supports running JavaScript code in tasks or +[WebView](element_web.html) scene elements. Most Tasker actions can be +accessed direct from the JavaScript. JSON and XMLHTTPRequest are also +directly available from the JavaScript code. + +#### JavaScript in Tasks + +JavaScript can be embedded inline in tasks via the *JavaScriptlet* +(direct specification of JavaScript to run) or *JavaScript* (load script +from file) actions. + +In both cases, the JavaScript executes in sequence with the other +actions in the task and variables are transparently converted so pieces +of JavaScript can be interwoven throughout the task. + +#### Embedded in HTML + +WebView elements allow specification of mixed HTML and JS for the +element content. + +> `

ClickMeToTurnOffWifi

` + +This allows a single WebView to present a complete user-interface. + +[]{#localvars} + +### Local Variables + +In `JavaScript(let)` actions, local variables (all lower case, e.g. +**%myvar**) are directly accessible in the JavaScript without the % sign +(e.g. **myvar**). If the script changes the value, the new value is +transparently used by subsequent actions in the task. + +The values of new (all lower case) variables declared in JavaScript +(with the `var` keyword) are also available to subsequent actions, with +the exception of those which are chain-declared e.g. +`var one = 'aval', two = 'bval';` + +In JavaScript embedded in HTML, the functions [local](#local) and +[setLocal](#setLocal) must be used to access variables local to the +scene hosting the WebView. + +[]{#globalvars} + +### Global Variables + +Tasker global variables need to be accessed via [global()](#global) and +set via [setGlobal()](#setGlobal). Global arrays are not supported due +to an Android limitation. []{#array} + +### Arrays + +Local Tasker arrays are transparently available in *Javascript(let)*s +and vice-versa. They are not available in WebViews. + +Arrays which are not existing Tasker arrays must be declared in the JS +as such i.e. in this case *arr* will not be visible to the remainder of +the task: + + var arr = getSomeArray(); + +Whereas in this case it will: + + var arr = []; + arr = getSomeArray(); + +Note that: + +- JavaScript array indices start at 0, whereas Tasker array indices + start at 1 +- JavaScript uses `[]` while Tasker uses `()` + +So, for example, `%arr(1)` (Tasker) is equivalent to `arr[0]` +(JavaScript). + +[]{#settings} + +### Settings + +Unlike normal Tasker actions, settings which are changed in JavaScript +as part of a profile\'s enter task are **not** restored when the profile +exits. []{#exe} + +### Execution + +#### Execution Instances + +Only one script can execute at one time. Once a piece of JavaScript is +executing, it cannot be interrupted by another piece. []{#offdevice} + +#### Working Off-Device + +You might wish to develop long and/or complicated tasks off-device e.g. +on a PC. There are two strategies for that: + +#### 1. `JavaScript` action + +For off-device testing, use +`Menu / More / Developer / Save JS Library Template` to get dummy +definitions for the built in functions. Include that file when +developing on your PC. + +To test in your JavaScript code whether you\'re on-device or not, use + +> ` var onAndroid = ( global( 'sdk' ) > 0 );` + +By using the `JavaScript` action rather than `JavaScriptlet` you can +easily access a file synced from PC to a file on the Android device. + +#### 2. Using WebView + +If you specify a website URL as the content for your WebView, then +testing the code on the target device is a simple matter of pushing the +new version to your webserver and reloading the WebView on the device +(see action [Element Web +Control](help/ah_scene_element_web_control.html)) + +#### Builtin Function Execution + +Calls to most Tasker builtin functions (see below) are executed as +normal single-action tasks and thus may be blocked by other executing +tasks. + +They execute at the priority of the task that executed the JavaScript +**plus two**. + +#### JavaScript(let): Alert,Confirm,Prompt + +Scripts using these functions require a \'user-interface\' and may cause +interference with the currently running app (though in most cases they +will not). + +#### JavaScript(let): Auto Exit + +By default, the `JavaScript(let)` action will end when the main +execution sequence is finished. + +If you are using asynchronous code e.g. via *setTimeout()* or other +callbacks, you should deselect *Auto Exit*. You are then responsible +yourself for telling Tasker to continue the task by calling *exit()*. + +In any case, execution will stop when the timeout configured for the +action is reached. + +#### JavaScript(let): Libraries + +You can specify as many libraries as you want in the *Libraries* +parameter, separated by newlines. + +Several popular libraries are pre-selectable. + +You may wish to download them manually to your local storage and change +the *http* URL to a *file* URL so that Internet is not required to run +your script. + +Warning: library code will have access to local files, data providers +etc. on the device + +Important: if you are using your own libraries developed on Windows, you +may need to convert CRLF style line endings to Unix style LF. + +[]{#builtin} + +### Builtin Functions + +Tasker makes most of it\'s actions available via functions which can be +called directly via name in `JavaScript(let)` actions and WebView +elements. + +Exceptions: + +- in WebView content where mode is set to **URL**, the functions must + be prefixed by **tk** e.g. `tk.flash('Woo!')` +- when executing code via *eval* the functions must be prefixed by + **tk.** + +[]{#alarmVol} []{#btVoiceVol} []{#callVol} []{#dtmfVol} []{#mediaVol} +[]{#notificationVol} []{#systemVol} []{#ringerVol} + +##### alarmVol / btVoiceVol / callVol / dtmfVol / mediaVol / notificationVol / systemVol / ringerVol + +`var ok = alarmVol( int level, bool display, bool sound )` + +Set the relevant system volume to *level*. + +If *display* is true, the new level will be flashed up on-screen. + +If *sound* is true, a tone will sound at the new level. + +[]{#audioRecord} + +##### audioRecord + +`var ok = audioRecord( str destPath, str source, str codec, str format )` + +- *destPath*: where to put the recording. Note that a file extension + is not necessary, it will correspond to the selected *format*. +- *source*: **def, mic, call, callout** or **callin** +- *codec*: **amrn, amrw** or **aac** +- *format*: **mp4, 3gpp, amrn** or **amrw** + +The JavaScript does **not** wait for the audio recording to complete. + +See also: [audioRecordStop()](#audioRecordStop). + +[]{#audioRecordStop} + +##### audioRecordStop + +`var ok = audioRecordStop()` + +Stop recording previously initiated by [audioRecord()](#audioRecord). + +[]{#browseURL} + +##### browseURL + +`var ok = browseURL( str URL )` + +Open the default browser at the specifed URL. + +[]{#button} + +##### button + +`var ok = button( str name )` + +Simulate a press of the named button. + +*name* must be one of **back, call, camera, endcall, menu, volup, +voldown** or **search**. + +This function requires a rooted device. + +[]{#call} + +##### call + +`var ok = call( str num, bool autoDial )` + +Make a phone call. + +If *autoDial* is **false**, the phone app will be brought up with the +number pre-inserted, if **true** the number will also be dialed. + +[]{#callBlock} + +##### callBlock + +`var ok = callBlock( str numMatch, bool showInfo )` + +Block **outgoing** calls [matching](matching.html) *numMatch*. + +If *showInfo* is set, Tasker will flash a message when a call is +blocked. + +[]{#callDivert} + +##### callDivert + +`var ok = callDivert( str fromMatch, str to, bool showInfo )` + +Divert **outgoing** calls [matching](matching.html) *fromMatch* to the +number *to*. + +If *showInfo* is set, Tasker will flash a message when a call is +diverted. + +[]{#callRevert} + +##### callRevert + +`var ok = callRevert( str numMatch )` + +Stop blocking or diverting outgoing calls previously specified with +[callBlock](#callBlock) or [callDivert](#callDivert). + +[]{#carMode} + +##### carMode + +`var ok = carMode( bool onFlag )` + +Turn on or off Android Car Mode. + +[]{#clearKey} + +##### clearKey + +`var ok = clearKey( str keyName )` + +Clear the passphrase for the specified *keyName*. + +See Also: [Encryption](encryption.html) in the Userguide. + +[]{#composeEmail} + +##### composeEmail + +`var ok = composeEmail( str to, str subject, str message )` + +Show an email composition dialog with any specified fields pre-filled. + +The JavaScript does **not** wait for the email to be sent before +continuing. + +[]{#composeMMS} + +##### composeMMS + +`var ok = composeMMS( str to, str subject, str message, str attachmentPath )` + +Show an MMS composition dialog with any specified fields pre-filled. + +The JavaScript does **not** wait for the MMS to be sent before +continuing. + +[]{#composeSMS} + +##### composeSMS + +`var ok = composeSMS( str to, str message )` + +Show an SMS composition dialog with any specified fields pre-filled. + +The JavaScript does **not** wait for the SMS to be sent before +continuing. + +[]{#convert} + +##### convert + +`var result = convert( str val, str conversionType )` + +Convert from one type of value to another. + +*conversionType* must be one of the string constants: **byteToKbyte, +byteToMbyte, byteToGbyte, datetimeToSec, secToDatetime, secToDatetimeM, +secToDatetimeL, htmlToText, celsToFahr, fahrToCels, inchToCent, +metreToFeet, feetToMetre, kgToPound, poundToKg, kmToMile, mileToKm, +urlDecode, urlEncode, binToDec, decToBin, hexToDec, decToHex, +base64encode base64decode, toMd5, toSha1, toLowerCase, toUpperCase, +toUpperCaseFirst**. + +See also: action [Variable Convert](help/ah_convert_variable.html). + +[]{#createDir} + +##### createDir + +`var ok = createDir( str dirPath, bool createParent, bool useRoot )` + +Create the named *dirPath*. If *createParent* is specified and any +parent directory does not exist, it will also be created. + +If *useRoot* is specified, the operation will be performed as the root +user (where available). + +[]{#createScene} + +##### createScene + +`var ok = createScene( str sceneName )` + +Create the named [scene](scenes.html) without displaying it. + +[]{#cropImage} + +##### cropImage + +`var ok = cropImage( int fromLeftPercent, int fromRightPercent, int fromTopPercent, int fromBottomPercent )` + +Crop an image in Tasker\'s image buffer previously loaded via +[loadImage](#loadImage). + +[]{#decryptDir} + +##### decryptDir + +`var ok = decryptDir( str path, str key, bool removeKey )` + +As [decryptFile()](#decryptFile), but decrypts each file in the +specified directory in turn. + +[]{#decryptFile} + +##### decryptFile + +`var ok = decryptFile( str path, str key, bool removeKey )` + +Decrypt the specified file using the encryption parameters specified in +`Menu / Prefs / Action`. + +If *removeKey* is not set, the entered passphrase will be reapplied +automatically to the next encryption/decryption operation with the +specified *keyName*. + +See Also: [Encryption](encryption.html) in the Userguide, [Decrypt +File](help/ah_decrypt_file.html) action. + +[]{#deleteDir} + +##### deleteDir + +`var ok = deleteDir( str dirPath, bool recurse, bool useRoot )` + +Delete the named *dirPath*. *recurse* must be specified if the directory +is not empty. + +If *useRoot* is specified, the operation will be performed as the root +user (where available). + +[]{#deleteFile} + +##### deleteFile + +`var ok = deleteFile( str filePath, int shredTimes, bool useRoot )` + +Delete the named *filePath*. + +*shredTimes* has range 0-10. + +If *useRoot* is specified, the operation will be performed as the root +user (where available). + +See also: action [Delete File](help/ah_delete_file.html) + +[]{#destroyScene} + +##### destroyScene + +`var ok = destroyScene( str sceneName )` + +Hide the named [scene](scenes.html) if it\'s visible, then destroy it. + +[]{#displayAutoBright} + +##### displayAutoBright + +`var ok = displayAutoBright( bool onFlag )` + +Whether the display brightness should automatically adjust to the +ambient light or not. + +[]{#displayAutoRotate} + +##### displayAutoRotate + +`var ok = displayRotate( bool onFlag )` + +Whether the display orientation should change based on the physical +orientation of the device. + +[]{#displayTimeout} + +##### displayTimeout + +`var ok = displayTimeout( int hours, int minutes, int seconds )` + +How long the period of no-activity should be before the display is +turned off. + +[]{#dpad} + +##### dpad + +`var ok = dpad( str direction, int noRepeats )` + +Simulate a movement or press of the hardware dpad (or trackball). + +*direction* must be one of **up, down, left, right** or **press**. + +This function requires a rooted device. + +[]{#enableProfile} + +##### enableProfile + +`var ok = enableProfile( str name, boolean enable )` + +Enable or disable the named Tasker profile. + +[]{#encryptDir} + +##### encryptDir + +`var ok = encryptDir( str path, str keyName, bool rememberKey, bool shredOriginal )` + +As [encryptFile()](#encryptFile), but encrypts each file in the +specified directory in turn. + +[]{#elemBackColour} + +##### elemBackColour + +`var ok = elemBackColour( str scene, str element, str startColour, str endColour )` + +Set the background [colour](#colour) of the specified +[scene](scenes.html) element. + +See also: action [Element Back +Colour](help/ah_scene_element_background_colour.html). + +[]{#elemBorder} + +##### elemBorder + +`var ok = elemBorder( str scene, str element, int width, str colour )` + +Set the border [colour](#colour) and width of the specified +[scene](scenes.html) element. + +[]{#elemPosition} + +##### elemPosition + +`var ok = elemPosition( str scene, str element, str orientation, int x, int y, int animMS )` + +Move an element within it\'s scene. + +*orientation* must be one of **port** or **land**. *animMS* indicates +the duration of the corresponding animation in MS. A zero-value +indicates no animation. + +See also: action [Element +Position](help/ah_scene_element_position.html). + +[]{#elemText} + +##### elemText + +`var ok = elemText( str scene, str element, str position, str text )` + +Set the text of the specified [scene](scenes.html) element. + +*pos* must be one of **repl** (replace existing text completely), +**start** (insert before existing text) or **end** (append after +existing text). + +See also: action [Element Text](help/ah_scene_element_text.html). + +[]{#elemTextColour} + +##### elemTextColour + +`var ok = elemTextColour( str scene, str element, str colour )` + +Set the text [colour](#colour) of the specified [scene](scenes.html) +element. + +See also: action [Element Text +Colour](help/ah_scene_element_text_colour.html). + +[]{#elemTextSize} + +##### elemTextSize + +`var ok = elemTextSize( str scene, str element, int size )` + +Set the text size of the specified [scene](scenes.html) element. + +See also: action [Element Text Size](help/scene_element_text_size.html). + +[]{#elemVisibility} + +##### elemVisibility + +`var ok = elemVisibility( str scene, str element, boolean visible, int animationTimeMS )` + +Make the specified [scene](scenes.html) element visible or invisible. + +See also: action [Element +Visibility](help/ah_scene_element_visibility.html). + +[]{#endCall} + +##### endCall + +`var ok = endCall()` + +Terminate the current call (if there is one). + +[]{#encryptFile} + +##### encryptFile + +`var ok = encryptFile( str path, str keyName, bool rememberKey, bool shredOriginal )` + +Encrypt the specified file using the encryption parameters specified in +`Menu / Prefs / Action`. + +If *rememberKey* is set, the entered passphrase will be reapplied +automatically to the next encryption/decryption operation with the +specified *keyName*. + +If *shredOriginal* is specified, the original file will be overwritten +several times with random bits if encryption is successful. + +See Also: [Encryption](encryption.html) in the Userguide, [Encrypt +File](help/ah_encrypt_file.html) action. + +[]{#enterKey} + +##### enterKey + +`var ok = enterKey( str title, str keyName, bool showOverKeyguard, bool confirm, str background, str layout, int timeoutSecs )` + +Show a dialog to enter the passphrase for the specified *keyName*. The +JavaScript waits until the dialog has been dismissed or the timeout +reached. + +- *confirm*: if set, the passphrase must be entered twice to ensure it + is correct. +- *background*: \[optional\] a file path or file URI to a background + image. +- *layout*: the name of a user-created [scene](scenes.html) to use in + place of the built-in scene. + +See Also: [Encryption](encryption.html) in the Userguide + +[]{#filterImage} + +##### filterImage + +`bool ok = filterImage( str mode, int value )` + +Filter an image previously loaded into Tasker\'s image buffer via +[loadImage()](#loadImage) + +Possible values of *mode* are: + +- **bw**: convert to black & white, using *value* as a threshold +- **eblue**: enhance blue values by *value* +- **egreen**: enhance green values by *value* +- **ered**: enhance red values by *value* +- **grey**: convert to greyscale, *value* is unused +- **alpha**: set pixel alpha (opposite of transparency) to *value* + +*value* should be 1-254. + +[]{#flipImage} + +##### flipImage + +`bool ok = flipImage( bool horizontal )` + +Flip an image previously loaded into Tasker\'s image buffer via +[loadImage()](#loadImage) + +If *horizontal* is false, the image is flipped vertically. + +[]{#exit} + +##### exit + +`exit()` + +Stop execution of the JavaScript. + +[]{#flash} + +##### flash + +`flash( str message )` + +Flash a short-duration Android \'Toast\' message. []{#flashLong} + +##### flashLong + +`flashLong( str message )` + +Flash a long-duration Android \'Toast\' message. []{#getLocation} + +##### getLocation + +`var ok = getLocation( str source, bool keepTracking, int timeoutSecs )` + +Try to get a fix of the current device location. + +*source* must be one of **gps, net** or **any**. + +If *keepTracking* is set, the specified source(s) will be left tracking +with the purpose of providing a much quicker fix next time the function +is called. + +Fix coordinates are stored in the global Tasker variables **%LOC** (GPS) +and/or **%LOCN** (Net). The value can be retrieved with the +[global](#global) function. Several other parameters of the fix are also +available, see [Variables](variables.html). + +Example + + + var lastFix = global( 'LOC' ); + if ( + getLocation( 'gps' ) && + ( global( 'LOC' ) != lastFix ) + ) { + flash( "New fix: " + global( 'LOC' ) ); + } + +See also: action [Get Location](help/ah_get_fix.html), function +[stopLocation](#stopLocation). + +[]{#getVoice} + +##### getVoice + +`str result = getVoice( str prompt, str languageModel, int timeout )` + +Get voice input and convert to text. + +*result* is \'undefined\' if the voice acquisition failed, otherwise +it\'s an array of possible matching texts. + +*prompt* is a label for the dialog that is shown during voice +acquisition. + +*languageMode* gives the speech recognition engine a clue as to the +context of the speech. It must be one of **web** for \'web search\' or +**free** for \'free-form\'. + +[]{#goHome} + +##### goHome + +`goHome( int screenNum )` + +Go to the Android home screen. *screenNum* is not supported by all home +screens. + +[]{#haptics} + +##### haptics + +`var ok = haptics( bool onFlag )` + +Enable/disable system setting Haptic Feedback. + +[]{#hideScene} + +##### hideScene + +`var ok = hideScene( str sceneName )` + +Hide the named [scene](scenes.html) if it\'s visible. + +[]{#global} + +##### global + +`var value = global( str varName )` + +Retrieve the value of a Tasker global variable. Prefixing the name with +% is optional. + +Example: + + flash( global( '%DogName' ) ); + +[]{#listFiles} + +##### listFiles + +`str files = listFiles( str dirPath, bool hiddenToo )` + +List all files in the specified *dirPath*. + +*files* is a newline-separated list of subfiles. + +If no files or found or an error occurs, the returned value will be +`undef`. + +If *hiddenToo* is specified, files starting with period are included, +otherwise they are not. + +Example: + + var files = listFiles( '/sdcard' ); + var arr = files.split( '\n' ); + flash( 'Found ' + arr.length + ' files' ); + +[]{#loadApp} + +##### loadApp + +`var ok = loadApp( str name, str data, bool excludeFromRecents )` + +Start up the named app. + +*Name* can be a package name or app label, it\'s tested first against +known package names. **Note**: app label could be localized to another +language if the script is used in an exported app. + +*Data* is in URI format and app-specific. + +When *excludeFromRecents* is true, the app will not appear in the home +screen \'recent applications\' list. + +[]{#loadImage} + +##### loadImage + +`var ok = loadImage( str uri )` + +Load an image into Tasker\'s internal image buffer. + +The following uri formats are currently supported: + +- *file://* followed by a local file path + +See also [Load Image](help/ah_load_image.html) action. + +[]{#lock} + +##### lock + +`var ok = lock( str title, str code, bool allowCancel, bool rememberCode, bool fullScreen, str background, str layout )` + +Show a lock screen, preventing user interaction with the covered part of +the screen. The JavaScript waits until the code has been entered or the +lock cancelled (see below). + +- *code*: the numeric code which must be entered for unlock +- *allowCancel*: show a button to remove the lockscreen, which causes + a return to the Android home screen +- *rememberCode*: the code will be remembered and automatically + entered when the lock screen is show in future, until the display + next turns off +- *background*: \[optional\] a file path or file URI to a background + image. +- *layout*: the name of a user-created [scene](scenes.html) to use in + place of the built-in lock scene + +[]{#local} + +##### local + +`var value = local( str varName )` + +Retrieve the value of a Tasker scene-local variable. The name should +**not** be prefixed with *%*. + +This function is only for use by JavaScript embedded in HTML and +accessed via a WebView scene element. + +[]{#mediaControl} + +##### mediaControl + +`var ok = mediaControl( str action )` + +Control media via simulation of hardware buttons. + +Possible *action*s are **next, pause, prev, toggle, stop** or **play**. + +[]{#micMute} + +##### micMute + +`var ok = micMute( bool shouldMute )` + +Mute or unmute the device\'s microphone (if present), + +[]{#mobileData} + +##### mobileData + +`var ok = mobileData( bool set )` + +Enable or disable the system Mobile Data setting. + +See also: action [Mobile Data](help/ah_mobile_data_direct.html) +[]{#musicBack} + +##### musicBack + +`var ok = musicBack( int seconds )` + +Skip back by *seconds* during playback of a music file previously +started by [musicPlay](#musicPlay). + +See also: [musicSkip](#musicSkip), [musicStop](#musicStop) + +[]{#musicPlay} + +##### musicPlay + +`var ok = musicPlay( str path, int offsetSecs, bool loop, str stream )` + +Play a music file via Tasker\'s internal music player. + +*stream* to which [audio stream](#streams) the music should be played + +This function does **not** not wait for completion. + +The last 3 arguments may be ommitted, in which case they default to +**0**, **false** and **media** respectively. + +See also: [musicStop](#musicStop), [musicBack](#musicBack), +[musicSkip](#musicSkip) + +[]{#musicSkip} + +##### musicSkip + +`var ok = musicSkip( int seconds )` + +Skip forwards by *seconds* during playback of a music file previously +started by [musicPlay](#musicPlay). + +See also: [musicBack](#musicBack), [musicStop](#musicStop) + +[]{#musicStop} + +##### musicStop + +`var ok = musicStop()` + +Stop playback of a music file previously started by +[musicPlay](#musicPlay). + +See also: [musicBack](#musicBack), [musicSkip](#musicSkip) + +[]{#nightMode} + +##### nightMode + +`var ok = nightMode( bool onFlag )` + +Turn on or off Android Night Mode. + +[]{#popup} + +##### popup + +`var ok = popup( str title, str text, bool showOverKeyguard, str background, str layout, int timeoutSecs )` + +Show a popup dialog. The JavaScript waits until the popup has been +dismissed or the timeout reached. + +- *background*: \[optional\] a file path or file URI to a background + image. +- *layout*: the name of a user-created [scene](scenes.html) to use in + place of the built-in popup scene. + +[]{#performTask} + +##### performTask + +`var ok = performTask( str taskName, int priority, str parameterOne, str parameterTwo )` + +Run the Tasker task *taskName*. + +Note that the JavaScript does not wait for the task to complete. + +[]{#profileActive} + +##### profileActive + +`bool active = profileActive( str profileName )` + +Whether the named Tasker profile is currently active. Returns false if +the profile name is unknown. + +[]{#pulse} + +##### pulse + +`bool ok = pulse( bool onFlag )` + +Enable or disable the Android Notification Pulse system setting. + +[]{#readFile} + +##### readFile + +`var contents = readFile( str path )` + +Read the contents of a text file. + +[]{#reboot} + +##### reboot + +`var ok = reboot( str type )` + +Reboot the device. + +*type* is one of **normal, recovery** or **bootloader**. It can be +ommitted and defaults to **normal**. + +Requires a rooted device. + +See also: function [shutdown](#shutdown) []{#resizeImage} + +##### resizeImage + +`var ok = resizeImage( int width, int height )` + +Scale the current image in Tasker\'s image buffer to the specified +dimensions. + +[]{#rotateImage} + +##### rotateImage + +`var ok = rotateImage( str dir, int degrees )` + +Rotate the current image in Tasker\'s image buffer. + +*dir* must be one of **left** or **right**. *degrees* must be one of +**45, 90, 135** or **180**. + +[]{#saveImage} + +##### saveImage + +`var ok = saveImage( str path, int qualityPercent, bool deleteFromMemoryAfter )` + +Save the current image in Tasker\'s image buffer to the specified file +*path*. + +[Save Image](help/ah_save_image.html) action. + +[]{#say} + +##### say + +`var ok = say( str text, str engine, str voice, str stream, int pitch, int speed )` + +Cause the device to say *text* out loud. + +- *engine*: the speech engine e.g. **com.svox.classic** Defaults to + the system default (specify *undefined* for that) +- *voice*: the voice to use (must be supported by *engine*). Defaults + to the current system language (specify *undefined* for that) +- *stream*: to which [audio stream](#streams) the speech should be + made +- *pitch*: 1-10 +- *speed*: 1-10 + +The script waits for the speech to be finished. + +[]{#sendIntent} + +##### sendIntent + +`var ok = sendIntent( str action, str targetComp, str package, str class, str category, str data, str mimeType, str[] extras );` + +Send an intent. Intents are Android\'s high-level application +interaction system. + +Any parameter may be specified as undefined. + +- *targetComp*: the type of application component to target, one of + **receiver, activity** or **service**. Defaults to **receiver**. +- *package*: the application package to limt the intent to +- *class*: the application class to limit the intent to +- *category*: one of **none, alt, browsable, cardock, deskdock, home, + info, launcher, preference, selectedalt, tab** or **test**, defaults + to **none** +- *extras*: extra data to pass, in the format key:value. May be + undefined. Maximum length 2. + +See also: action [Send Intent](help/ah_send_intent.html). + +[]{#sendSMS} + +##### sendSMS + +`var ok = sendSMS( str number, str text, boolean storeInMessagingApp );` + +Send an SMS. + +See also: action [Send SMS](help/ah_send_sms.html) + +[]{#setAirplaneMode} + +##### setAirplaneMode + +`var ok = setAirplaneMode( bool setOn )` + +Enable or disable Airplane Mode. + +Get the current value with: + +` var enabled = global( 'AIR' );` + +See also: function [setAirplaneRadios](#setAirplaneRadios) + +[]{#setAirplaneRadios} + +##### setAirplaneRadios + +`var ok = setAirplaneRadios( str disableRadios )` + +Specify the radios which will be **disabled** when the device enters +Airplane Mode. + +*disableRadios* is a comma-separated list with radio names from the +following set: **cell, nfc, wifi, wimax, bt**. + +Get the current value with: + +` var radios = global( 'AIRR' );` + +See also: function [setAirplaneMode](#setAirplaneMode) + +[]{#setAlarm} + +##### setAlarm + +`var ok = setAlarm( int hour, int min, str message, bool confirmFlag )` + +Create an alarm in the default alarm clock app. + +*confirmFlag* specifies whether the app should confirm that the alarm +has been set. + +*message* is optional. + +Requires Android version 2.3+. + +[]{#setAutoSync} + +##### setAutoSync + +`var ok = setAutoSync( bool setOn )` + +Enable or disable the global auto-sync setting. + +[]{#scanCard} + +##### scanCard + +`var ok = scanCard( str path )` + +Force the system to scan the external storage card for new/deleted +media. + +If *path* is defined, only that will be scanned. + +See also: action [Scan Card](help/ah_scan_card.html) + +[]{#setBT} + +##### setBT + +`var ok = setBT( bool setOn )` + +Enable or disable the Bluetooth radio (if present). + +Test BT state with: + +` if ( global( 'BLUE' ) == "on" ) { doSomething(); }` + +[]{#setBTID} + +##### setBTID + +`var ok = setBTID( str toSet )` + +Set the bluetooth adapter ID (the name as seen by other devices). + +[]{#setGlobal} + +##### setGlobal + +`setGlobal( str varName, str newValue )` + +Set the value of a Tasker global user variable. Prefixing varName with % +is optional. + +Arrays are **not** supported due to limitations of the Android JS +interface. + +[]{#setKey} + +##### setKey + +`var ok = setKey( str keyName, str passphrase )` + +Set the passphrase for the specified *keyName*. + +See Also: [Encryption](encryption.html) in the Userguide. + +[]{#setLocal} + +##### setLocal + +`setLocal( str varName, str newValue )` + +Set the value of a Tasker **scene-local** user variable. Variable names +should **not** be prefixed with *%*. + +This function is only for use by JavaScript embedded in HTML and +accessed via a WebView scene element. + +[]{#setClip} + +##### setClip + +`var ok = setClip( str text, bool appendFlag )` + +Set the global system clipboard. + +Test the value with: + +` var clip = global( 'CLIP' );` + +[]{#settings} + +##### settings + +`var ok = settings( str screenName )` + +Show an Android System Settings screen. + +*screenName* must be one of **all, accessibility, addacount, +airplanemode, apn, app, batteryinfo, appmanage bluetooth, date, +deviceinfo, dictionary, display, inputmethod, internalstorage, locale, +location, memorycard, networkoperator, powerusage, privacy, quicklaunch, +security, mobiledata, search, sound, sync, wifi, wifiip** or +**wireless**. + +[]{#setWallpaper} + +##### setWallpaper + +`var ok = setWallpaper( str path )` + +Set the system home screen wallpaper. + +[]{#setWifi} + +##### setWifi + +`var ok = setWifi( bool setOn )` + +Enable or disable the Wifi radio (if present). + +Test wifi state with: + +` if ( global( 'WIFI' ) == "on" ) { doSomething(); }` + +[]{#shell} + +##### shell + +`var output = shell( str command, bool asRoot, int timoutSecs )` + +Run the shell command *command*. + +*asRoot* will only have effect if the device is rooted. + +*output* is \'undefined\' if the shell command failed. It\'s maximum +size is restricted to around 750K. + +[]{#showScene} + +##### showScene + +`var ok = showScene( str name, str displayAs, int hoffset, int voffset, bool showExitIcon, bool waitForExit )` + +Show the named [scene](scenes.html), creating it first if necessary. + +- *displayAs*: options: + `Overlay, OverBlocking, OverBlockFullDisplay, Dialog, DialogBlur, DialogDim, ActivityFullWindow, ActivityFullDisplay, ActivityFullDisplayNoTitle` +- *hoffset, voffset*: percentage vertical and horizontal offset for + the scene -100% to 100% (not relevant for full screen/window display + types) +- *showExitIcon*: display a small icon in the bottom right which + destroys the scene when pressed +- *waitForExit*: whether to wait for the scene to exit before + continuing the script + +[]{#shutdown} + +##### shutdown + +`var ok = shutdown()` + +Shutdown the device. + +Requires a rooted device. + +See also: [reboot](#reboot) + +[]{#silentMode} + +##### silentMode + +`var ok = silentMode( str mode )` + +Set the system silent (\'ringer\') mode. + +*mode* must be one of **off, vibrate** or **on** + +[]{#sl4a} + +##### sl4a + +`var ok = sl4a( str scriptName, boolean inTerminal )` + +Run a previously created +[SL4A](https://code.google.com/p/android-scripting/) script. + +[]{#soundEffects} + +##### soundEffects + +`var ok = soundEffects( bool setTo )` + +Setting the system *Sound Effects* setting (sound from clicking on +buttons etc. + +[]{#speakerphone} + +##### speakerphone + +`var ok = speakerPhone( bool setFlag )` + +Enable or disable the speakerphone function. + +[]{#statusBar} + +##### statusBar + +`var ok = statusBar( bool expanded )` + +Expand or contract the system status bar. + +[]{#stayOn} + +##### stayOn + +`var ok = stayOn( str mode )` + +Specify whether the device should remain on when power is connected. + +Possible *mode*s are **never, ac, usb, any**. + +[]{#stopLocation} + +##### stopLocation + +`var ok = stopLocation()` + +Stop tracking a location provider. This is only relevant when a +[getLocation](#getLocation) function has been previously called with the +*keepTracking* parameter set. + +[]{#systemLock} + +##### systemLock + +`var ok = systemLock()` + +Turn off the display and activate the keyguard. + +Requires Tasker\'s Device Administrator to be enabled in Android +settings. + +[]{#taskRunning} + +##### taskRunning + +`bool running = taskRunning( str taskName )` + +Whether the named Tasker task is currently running. Returns false if the +task name is unknown. + +[]{#takeCall} + +##### takeCall + +`bool ok = takeCall();` + +Auto-accept an incoming call (if there is one). + +[]{#takePhoto} + +##### takePhoto + +`bool ok = takePhoto( int camera, str fileName, str resolution, bool insertGallery )` + +Take a photo with the builtin camera. + +- *camera*: 0 = rear camera, 1 = front camera +- *resolution*: format WxH e.g. 640x840 +- *insertGallery*: whether to insert the resulting picture in the + Android Gallery application + +See also: action [Take Photo](help/ah_take_photo.html) + +[]{#type} + +##### type + +`var ok = type( str text, int repeatCount )` + +Simulate keyboard typing. + +Requires a rooted device. + +[]{#unzip} + +##### unzip + +`boolean ok = unzip( str zipPath, bool deleteZipAfter )` + +Unpack a Zip archive into the parent directory of the archive. + +*deleteZip* causes the zip archive to be deleted after successful +unpacking. + +[]{#usbTether} + +##### usbTether + +`usbTether( bool set )` + +Enable or disable USB tethering. + +See also: action [USB Tether](help/ah_tether_usb.html) + +[]{#vibrate} + +##### vibrate + +`vibrate( int durationMilliseconds )` + +Cause the device to vibrate for the specified time. + +[]{#vibratePattern} + +##### vibratePattern + +`vibratePattern( str pattern )` + +Cause the device to vibrate following the specified *pattern*, which +consists of a sequence of off then on millisecond durations e.g. + +`500,1000,750,1000` + +wait for 500ms, vibrates 1000ms, wait for 750ms, then vibrate for +1000ms. + +[]{#wait} + +##### wait + +`wait( int durationMilliseconds )` + +Pause the script for the specified time. + +Warning: may cause some preceeding functions not to complete in some +situations. If in doubt, use JavaScript setTimeout() instead. + +[]{#wifiTether} + +##### wifiTether + +`var ok = wifiTether( bool set )` + +Enable or disable Wifi tethering. + +See also: action [Wifi Tether](help/ah_tether_wifi.html) + +[]{#writeFile} + +##### writeFile + +`var ok = writeFile( str path, str text, bool append )` + +Write *text* to file *path*. + +If *append* is specified, the text will be attached to the end of the +existing file contents (if there are any). + +[]{#zip} + +##### zip + +`boolean ok = zip( str path, int level, bool deleteOriginalAfter )` + +Zip a file or directory. + +*level* is the desired compression level from 1-9, with 9 resulting in +the smallest file and the longest compression time. + +*deleteOriginal* causes *path* to be deleted if the zip operation is +successful. + +[]{#notes} + +### Notes + +[]{#streams} + +#### Audio Streams + +Must be one of **call, system, ringer, media, alarm** or +**notification** []{#colour} + +#### Colours + +Colours are specified in *AARRGGBB* hexadecimal format, with solid white +being **FFFFFFFF**. []{#paths} + +#### File Paths + +File paths can be specified as either absolute (start with **/**) or +relative (don\'t start with **/**). + +Relative file paths are relative to the root of the internal storage +media. So, for example, `pics/me.jpg` might resolve to +`/sdcard/pics/me.jpg`. diff --git a/en/loccontext.md b/en/loccontext.md new file mode 100644 index 0000000..8764431 --- /dev/null +++ b/en/loccontext.md @@ -0,0 +1,46 @@ +--- +title: 'Tasker: Location Context' +--- + +Location Context ![](icon_tasker.png) +------------------------------------- + +A *location context* specifies a circular geographical area in which it +is active. It is formed by a centre point (*latitude, longitude*) plus a +*radius* around that point. + +#### Location Providers + +A location provider is a method of supplying geographical coordinates. +Tasker must use one or more location providers to be able to decide when +a location context should become active or inactive. []{#gps} + +##### GPS + +The most accurate provider available (around +-10m), but its performance +degrades quickly indoors and it uses a relatively large amount of power. + +To set the frequency of GPS fixes, see `Menu / Preferences / Monitor`. +*GPS Check Time* determines the check frequency in seconds while the +device is awake, *Off Check Time* while the device is asleep. + +GPS will only be used for a particular context if it is specified in the +location edit screen. + +[]{#net} + +##### Network + +This provider uses a combination of cell-towers and WiFi information (if +wifi is enabled) to determine the device\'s geographical location. It is +less power-hungry than GPS, but also less accurate (sometimes +- several +kilometres) and requires data network availability. + +Network will only be used for a particular context if it is specified in +the location edit screen. + +See also: + +- [Location Edit Screen](activity_locselect.html) +- [Location Without Tears](loctears.html) (guidance for choosing a + location method) diff --git a/en/loctears.md b/en/loctears.md new file mode 100644 index 0000000..626dfe2 --- /dev/null +++ b/en/loctears.md @@ -0,0 +1,265 @@ +--- +title: 'Tasker: Location Without Tears' +--- + +Location Without Tears ![](icon_tasker.png) +------------------------------------------- + +This is an overview guide to choosing a method for fixing your location +with Tasker. At the end are some [advanced power-saving +strategies](#adv). + +Power / Accuracy Comparison +--------------------------- + + Method Power Usage Acc Network Wifi BT + ---------------------------------- ------------- --------------- --------- ------ ---- + [State: Cell Near](#cell) \* \* + [State: BT Near](#btnear) \*\* \*\*\*\*\* Y + [State: Wifi Near](#near) \*\* \*\*\*\*\* Y + [Location: Net](#net) \*\* \*\* Y + [Location: Net & Wifi](#netwifi) \*\*\* \*/\*\*\*\*\* Y Y + [Location: GPS](#gps) \*\*\*\*\* \*\*\*\*\* Y + +More stars mean higher power usage or higher accuracy (Acc). + +Detail Comparison +----------------- + +[]{#cell} + +### State: Cell Near + +##### Setup + +Create a **state context**, select **Phone** then **Cell Near**. Click +Update and walk around a bit to scan for cell towers nearby. + +##### About + +Uses information about the cell towers the phone uses for telephony to +record and match a location. + +When the display is off, frequency of checks is controlled by +`Prefs / Monitor / Display Off All Checks`. + +If your profile keeps deactivating, go back to the Cell Near state and +click the magnifying glass icon to check for cells you may have missed +in your scan. + +##### Plus / Minus + +- (+) virtually no extra power on top of power needed for normal phone + service +- (+) when the display is on, context updates as soon as the tower is + visible +- (+) when the display is off, only one check period is needed to + determine context exit +- (-) highly inaccurate +- (-) must be physically at the location in order to record it + +##### Other Settings + +- `Monitor / General Monitoring / Use New Cell API`: if you\'re not + seeing any cells at all when scanning on a modern device, try + checking this +- `Monitor / Display Off Monitoring / Cell Workaround`: if things + aren\'t working when the display is off +- `Monitor / Display Off Monitoring / Cell Wake Screen`: second + possible workaround when the display is off + +[]{#btnear} + +### State: BT Near + +##### Setup + +Create a **State context**, click **BT Near** (in the Net category), +fill in the name or address of a bluetooth device near the location you +want to identify. + +##### About + +BT Near does regular bluetooth Scans and will activate when it +recognizes a device you have configured is nearby. Note: you don\'t have +to connect to the device, so it doesn\'t have to be a device you own. + +Frequency of checks is controlled by `Prefs / Monitor / BT Scan Seconds` +(screen on) and `Prefs / Monitor / Display Off All Checks` (screen off). + +Check the **BT Toggle** box if you don\'t want bluetooth enabled all the +time. It will then be toggled when Tasker needs to do a scan. + +If your target device is a low-energy device, deselect **Standard +Devices** to reduce energy usage. If you can pair with the target +device, you can have a major reduction in power usage and scan times by +not selecting **Non-Paired Devices**. + +##### Plus / Minus + +- (+) very good accuracy, reliability +- (+) modest power usage, especially for paired devices +- (+) works indoors too +- (-) need a known device nearby + +##### Other Settings + +- `Prefs / Monitor / Display Off Monitoring / Motion Detection`: if + available on your device, will need to be disabled if you wish to + detect a nearby BT device that may move or turn off or on + +[]{#net} + +### Location: Net + +##### Setup + +Create a location context, and deselect GPS. + +##### About + +Net location accuracy varies greatly. It\'s **very important** that you +create a **large radius** around the spot you wish to detect. + +Frequency of checks is controlled by +`Prefs / Monitor / Network Location Check` (screen on) and +`Prefs / Monitor / Display Off All Checks`. + +[More Info](loccontext.html). + +##### Plus / Minus + +- (+) extremely low (extra) power (IF network is available anyway) +- (-) requires network and phone service +- (-) highly inaccurate and variable fixes + +[]{#netwifi} + +### Location: Net & Wifi + +##### Setup + +Create a location context and deselect GPS. Make sure your device\'s +Wifi is turned on when you want a more accurate location fix. + +##### About + +Net location can be assisted by nearby access points when Wifi is turned +on (Google has a map of APs for many areas). + +Turn Wifi off when not needed to conserve power e.g. use a Time context +to turn wifi off at night. + +##### Plus / Minus + +- (+) very good accuracy in built-up areas for relatively low power + usage +- (-) must be physically at the location in order to record it + +[]{#near} + +### State: Wifi Near + +##### Setup + +Create a **State context**, click **Wifi Near** (in the Net category), +fill in the SSID of an Access Point (AP) with the best signal near where +you want to identify. + +##### About + +Wifi Near does regular Wifi Scans and will activate when it recognizes +an AP you have configured is nearby. Note: you don\'t have to connect to +the AP. You could configure e.g. the neighbours AP if the signal is +strong enough. + +Frequency of checks is controlled by +`Prefs / Monitor / Wifi Scan Seconds` (screen on) and +`Prefs / Monitor / Display Off All Checks` (screen off). + +Check the **Wifi Toggle** box if you don\'t want wifi on all the time. +It will then be toggled when Tasker needs to do a scan. This isn\'t +needed in In Android 4.4+ if you select `Scanning Always Available` in +Advanced Wifi Settings and will save power. + +##### Plus / Minus + +- (+) very good accuracy and reliability +- (+) less power than GPS +- (+) works indoors too +- (-) need an AP nearby + +##### Other Settings + +- `Prefs / Monitor / Display Off Monitoring / Motion Detection`: if + available on your device, will need to be disabled if you wish to + detect an AP that may turn off and on. +- Android location settings: basic location needs to be enabled for + Android 8.1+. + +[]{#gps} + +##### Location: GPS + +##### Setup + +Create a location context, and deselect Net. + +##### About + +Frequency of GPS checks is controlled by `Prefs / Monitor / GPS Check` +(screen on) and `Prefs / Monitor / Display Off All Checks`. Higher +frequencies mean more battery usage but that location changes will be +noticed more quickly. + +When indoors, GPS will try a long time to get a signal, using a lot of +battery. Adjust it at `Prefs / Monitor / GPS Timeout`. Make the timeout +as low as you can until you start losing effectiveness. + +[More Info](loccontext.html). + +##### Plus / Minus + +- (+) highly accurate in the open air +- (-) functions very poorly or not at all indoors. A bad side effect + is that if you enter a building e.g. office while between the check + times, it may never detect your new location until you leave. +- (-) extreme power usage +- (-) needs network to get a first fix + +##### Other Settings + +- `Prefs / Monitor / Display Off Monitoring / Motion Detection`: if + available on your device, will need to be disabled if you wish to + detect changes of location on the order of a few meters. + +[]{#adv} + +### Advanced Strategies + +##### Motion Detection + +Some devices have a low-power accelerometer that can be active while the +rest of the device is sleeping. + +For such devices, Tasker will not do location checks with the display +off unless it detects that significant movement has taken place since +the last check, resulting in lower power usage and faster response times +when the device does eventually move. + +##### Multiple Contexts + +Tasker does not check high-power contexts until all lower-power contexts +in the same profile are active. You can use this to reduce power +consumption. For instance, if you use the Wifi Near state to detect +coming home, you could add a Location: Net context to the same profile, +so that wifi scanning will only take place when you are in the right +neighbourhood. + +##### Location Control + +Disable GPS/Net location when they\'re not needed by creating a separate +profile with e.g. a Time context which disables GPS during the night. + +This works because Location contexts assume you are in the same location +until there is a fix which says otherwise. diff --git a/en/matching.md b/en/matching.md new file mode 100644 index 0000000..647326e --- /dev/null +++ b/en/matching.md @@ -0,0 +1,114 @@ +--- +title: 'Tasker: Pattern Matching' +--- + +Pattern Matching ![](icon_tasker.png) +------------------------------------- + +### What\'s Pattern Matching ? + +With Pattern Matching, you specify a *pattern* which tells Tasker what +text you wish to match. For instance, if you want to match any telephone +number starting with **0135**, you can specify the simple match +**0135\***. **\*** is a special character which *matches* any number of +any character. + +Tasker has two type of matching, [Simple Matching](#simple) and more +advanced [Regex Matching](#regex). []{#simple} + +### Simple Matching + +Simple matching is designed to be easy for non-technical people to use. + +#### Where\'s It Used ? + +Simple Matching is used in the following places: + +- in the **If** condition of an action, when the **\~** (match) or + **!\~** (not match) operators are specified. +- in text paremeters of State and Event contexts +- some other places :-) + +#### Matching Rules + +- if a pattern is left blank, it will match against anything +- if it is not blank it must match the whole target text +- **/** means \'or\', it divides up multiple possible matches +- a **\*** will match any number of any character. It\'s not possible + to specifically match a **\*** character. +- a **+** will match one or more of any character. It\'s not possible + to specifically match a **+** character.\ + Beware: the condition \'%var matches +\' will be **true** if %var + has not been assigned a value, because Tasker does not replace + variables which do not have a value. +- matching is case-insensitive (*magic* will match with *MagiC*) + **unless** the pattern contains an upper-case letter e.g. *Magic\** + will not match against *magically*, but it will match against *Magic + Roundabout* +- a **!** at the very start of a match means **not** e.g. + *!\*Magic\*/\*Yellow\** matches anything **not** containing the + words *Magic* or *Yellow* +- it is not possible to specifically match a **!** character at the + start of a target (but you could use **\*!** + +Examples + +- *help* matches *help* but not *helper*. +- *help\** matches *helper* +- *\*the\** matches *the* (anywhere) +- *123+* matches *123* and minimally one more character +- *+* matches anything with at least one character (non-empty) +- *the\*way* matches *the other way* and *the first way*, amongst + others +- *Help/\*shell* matchs *Help* or anything ending with *shell*, + case-sensitively + +[]{#caller} + +#### Caller Matching + +Caller matching (some events and states e.g. *Call*) is handled slightly +differently. + +- *C:ANY* matches the telephone number of any contact +- *C:FAV* matches the telephone number of any favourite (starred) + contact +- *CG:`groupmatch`* matches the telephone number of a contact in a + group which matches `groupmatch` +- *Otherwise:* otherwise a match is attempted using the general + matching rules against **both** the caller phone number and the + associated contact\'s name (if there is one). + +Examples: + +- *!C:ANY* matches a number **not** belonging to a contact +- *077\*/Geoff\** matches a number starting with *077* or belonging to + a contact whose names starts with *Geoff* +- *C:FAV/0123456789* matches any favourite contact or the telephone + number *0123456789* +- *CG:\*Family\*/CG:Business* matches any contact in the contact + groups *Family Members*, *My Family* or *Business* + +[]{#regex} + +### Regular Expression Matching + +Regular expressions are similar to simple matching patterns but have +many more features and are much harder for non-technical people. + +#### Where\'s It Used ? + +Regex Matching is available: + +- in the **If** condition of an action, when the **\~R** or **!\~R** + operators are specified. +- in the *Variable Search Replace* action +- in the condition of a *Variable Value* state +- wherever a Simple Match is possible, by preceding the regex with + **\~R** or **!\~R** + +#### Matching Rules + +Standard Java regular expression matching is applied. The Android +Developer site has a [reference +page](http://developer.android.com/reference/java/util/regex/Pattern.html). diff --git a/en/maths.md b/en/maths.md new file mode 100644 index 0000000..c0610f5 --- /dev/null +++ b/en/maths.md @@ -0,0 +1,82 @@ +--- +title: 'Tasker: Maths' +--- + +Maths ![](icon_tasker.png) +-------------------------- + +#### Where Is Maths Used ? + +- When you do `Variable Set` and click the *Do Maths* checkbox +- With the `If` action, if you select a mathematical comparison like + **\<** or **=** +- With individual action conditions when a mathematical comparison is + selected + +#### What\'s Available + +Tasker uses the [MathEval](http://www.softwaremonkey.org/Code/MathEval) +library by Lawrence PC Dol. + +#### Operators + +- **+ - \* /** - the basic operators +- **%** - modulus +- **\^** - power + +##### Constants + +- **E** - the base of the natural logarithms +- **EUL** - Euler\'s Constant +- **LN2** - log of 2 base e +- **LN10** - log of 10 base e +- **LOG2E** - log of e base 2 +- **LOG10E** - log of e base 10 +- **PHI** - the golden ratio +- **PI** - the ratio of the circumference of a circle to its diameter + +##### Functions + +Trigonometric functions expect a value in radians. + +Functions take their argument in parenthesis e.g. sin(torad((90)) + +- **abs** - absolute value +- **acos** - arc cosine; the returned angle is in the range 0.0 + through pi +- **asin** - arc sine; the returned angle is in the range -pi/2 + through pi/2 +- **atan** - arc tangent; the returned angle is in the range -pi/2 + through pi/2 +- **cbrt** - cube root +- **ceil** - smallest value that is greater than or equal to the + argument and is an integer +- **cos** - trigonometric cosine +- **cosh** - hyperbolic cosine +- **exp** - Euler\'s number e raised to the power of the value +- **expm1** - *e*x-1 +- **floor** - largest value that is less than or equal to the argument + and is an integer +- **getExp** - unbiased exponent used in the representation of val +- **log** - natural logarithm (base e) +- **log10** - base 10 logarithm +- **log1p** - natural logarithm of (val+1) +- **nextup** - floating-point value adjacent to val in the direction + of positive infinity +- **round** - closest 64 bit integer to the argument +- **roundhe** - double value that is closest in value to the argument + and is equal to a mathematical integer, using the half-even rounding + method. +- **signum** - signum function of the argument; zero if the argument + is zero, 1.0 if the argument is greater than zero, -1.0 if the + argument is less than zero +- **sin** - trigonometric sine +- **sinh** - hyperbolic sine +- **sqrt** - correctly rounded positive square root +- **tan** - trigonometric tangent +- **tanh** - hyperbolic tangent +- **todeg** - converts an angle measured in radians to an + approximately equivalent angle measured in degrees +- **torad** - converts an angle measured in degrees to an + approximately equivalent angle measured in radians +- **ulp** - size of an ulp of the argument diff --git a/en/midi.md b/en/midi.md new file mode 100644 index 0000000..159b3a2 --- /dev/null +++ b/en/midi.md @@ -0,0 +1,218 @@ +--- +title: 'Tasker: MIDI' +--- + +MIDI ![](icon_tasker.png) +------------------------- + +Tasker includes basic support for interacting with a (single) musical +instrument which support the MIDI protocol. + +You don\'t need to know anything about MIDI in order to play complex +tunes on an instrument via Tasker. + +### Requirements and Setup + +The Android ROM on the Android device must support the USB Host +protocol. + +A USB OTG (*On The Go*) adapter is required for the Android device. + +If the MIDI device has a USB-To-Host connecter, a normal USB lead can +then be used from the OTG adapter to the MIDI device. + +If the MIDI device has only MIDI inputs, a USB-To-MIDI adapter must be +used from the OTG adapter to the MIDI device. + +When a connection has been established with the MIDI device, Android +should ask whether permission should be granted to Tasker to use the +device. In order to make things easier and allow automation without +user-interaction, it\'s recommended that **Always** be selected. + +### Action: MIDI Play + +Tasker supports playing of notes in various voices and on multiple +channels via the *MIDI Play* action in the *Media* category. + +The *Score* parameter in the *MIDI Play* action uses a Tasker-specific +format to hopefully allow even non-musicians to easily \'code\' some +music. + +#### Examples: + +- `C`\ + plays a single C note and stops +- `D D`\ + plays a D twice +- `D . . C`\ + plays a D, wait 2 beats, then plays a C +- `CDA#` ***or*** `C,D,A#`\ + plays a C, D and A\# simultaneously +- `D!10`\ + plays a D very softly +- `D!10 !100,C C C`\ + plays a D very softly then a few loud Cs +- `C2 C3 C4`\ + Plays three Cs of increasing octaves (higher pitch) +- `D*4`\ + plays a D for 4 beats +- `C#/4`\ + plays a C for a quarter beat +- `C#/4D`\ + plays a C for a quarter beat and simultaneously a D for a full beat +- `@1 C C C`\ + Selects voice 1 then plays 3 Cs +- `C@1,D@2` ***or*** `C@1D@2`\ + Plays a C with voice 1 and a D with voice 2 +- `@1 C@2 E*4`\ + Plays a C on the first channel with voice 1, while playing and + holding an E on the second channel with voice 2. +- `C AB D`\ + Plays C A B D on channel zero. Note that just starting a new line + would mean creating a new channel. +- `C AA BB DC D`\ + Plays C A B D on channel 0 while playing simultauously A B C D on + channel 1. + +#### Note Specification + +A note specification can be made up of several parts indicating +different things about what and how to play. The note itself must be the +first part, all other parts are optional. + +###### The Note + +Possible notes for the English locale are +`C, C#, D, D#, E, F, F#, G, G#, A, A#, B`. These represent the notes +starting at *middle C* on a piano, which are in the 4th octave. Flat +notes are also possible e.g. `D_`. + +Deeper notes can be achieved by specifying a lower octave e.g. `E2` or +`A#3` and higher notes a higher octave e.g. `C6`. + +For convenience, lower case versions of the notes are an octave deeper +than the upper case versions e.g. `c` is equivalent to `C3`. + +Other locales may have different note naming conventions. + +###### Note Duration (Optional) + +A note is by default held for one beat. A `*` indicates the note should +be held longer e.g. `C*6` holds a C for 6 beats. A `/` indicates the +note should be shorter e.g. `C/2` indicates that the note should be +played for half a beat. + +###### Note Velocity + +*Velocity* usually indicates to a MIDI instrument how hard to play the +note. It\'s represented in Tasker via an exclamation mark e.g. `!6` +means \'play this note with velocity 6\'. + +The lowest value is 0 and the highest 127. + +###### Note Voice + +*Voice* specifies which instrument to play a note with. It\'s +represented in Tasker by an @ sign e.g. `C@1` \'play a C using voice +1\'. + +The voice can be from 0 to 127. + +Most MIDI instruments don\'t have more than 128 voices and so you +probably don\'t need to read any further in this section. + +However, if your instrument has more voices you will probably need to +specify them using the values *MSB* and/or *LSB* which you will need to +find in the instrument\'s user manual. + +Tasker allows specificaton of LSB and Program (the name of the basic +parameter) together e.g: `B@3.1` specifies LSB 3 and Program 1. + +To specify an MSB also, add it on the left e.g. `D@6.5.3` specifies MSB +6, LSB 5 and Program 3. + +#### Chords + +Several notes can be played at the same time by grouping them together +(no whitespace) or separating them with commas e.g. C,D and `CD` both +play a C and a D. + +#### Channels and Beats + +A specification of a single note or chord is called a beat. + +A channel consists of a set of beats separated by whitespace which are +dealt with one-by-one at the same time as the corresponding beats on +other channels. In that way, it\'s possible to see which notes are going +to be played simultaneously. + +Beats usually consist purely of a few notes, but they can also specify +default values of velocity and voice for the channel. + +For example, `!10,C D E!100 F` will play a quiet C, a quiet D, a loud E +then a quiet F. `@2 C D E@3 F` plays a C then a D in voice 2, an E in +voice 3, then an F in voice 2 again. + +When you reach the end of a line with a channel, do **not** go further +on the next line. If you do so, the next line will be treated as a new +channel. Instead, leave a blank line.\ +See the last two examples above. + +A dash character `-` as the **whole** beat means \'do nothing this +beat\'. + +A dash followed by a number will rest for that number of beats. This +will mess up the channel alignment, but can be useful for channel which +isn\'t used very often. + +#### Bars + +A bar is a character that divides music into pieces of equal length. +Tasker totally ignores `|` characters so they do not count as a beat. + +#### Comments + +The remainder of a line can be ignored by inserting a single quotation +character \'. The line before the quotation mark, and subsequent lines, +are unaffected. + +The rest of a whole channel can be ignored by inserting a double +quotation mark \". The line before the quotation marks are unaffected. + +Comments can be useful for testing specific parts of a score +independently. + +#### Variable Support + +The `Score` parameter supports variable just like most other places in +Tasker. + +That means you can e.g. specify a voice specification with Variable Set +and then use the name to make it easier to read the music e.g. +`@%piano,C @%guitar,D` (play a C with piano then a D with guitar: +assuming you\'ve first set the variables to a voice which matches their +name on your MIDI instrument) + +You can also define variables with sequences of notes and then define a +song as being repeating names e.g. `%intro %verse %chorus %verse %end`. + +#### Music \'Programming\' + +MIDI Play actions can of course be interspersed with other Tasker +actions so that you can do things like loops which play a piece of music +at different pitch levels, loudness, speed etc Here\'s a task which +plays a long chord with 10 different instrument and each instrument at 5 +different velocities (loudness levels). + + For, %loudness, 20:100:20 + For, %voice, 1:10 + MIDI Play, @%voice,!%loudness C,E,G + +### Tested Devices + +Tasker has been tested with the following devices: + +- Yamaha Clavinova 480 + +Please let the developer know if you can confirm it working on other +devices. diff --git a/en/power.md b/en/power.md new file mode 100644 index 0000000..92757cf --- /dev/null +++ b/en/power.md @@ -0,0 +1,45 @@ +--- +title: 'Tasker: Power Usage' +--- + +Power Usage ![](icon_tasker.png) +-------------------------------- + +Internally, Tasker does its best to keep power usage down. Following are +some macro-strategies to achieve this. + +#### Context Monitoring + +When a profile contains multiple contexts, power is saved by only +monitoring for changes in order of the least-power-hungry first. For +example, in a profile with a Time and App context, Tasker will not +decide that it needs to monitor for a changing application unless the +Time context is active (because the profile cannot become active until +both contexts are active). + +Tasker rates contexts for power-hungriness in the following (ascending) +order: + +- Other State +- Day / Time +- Calendar Entry State +- Cell Near State +- App +- BT Near State +- Network Location +- Wifi Near State +- GPS Location +- Temperature / Humidity / Proximity / Pressure / Magnetic Field / + Light Sensor / Gesture Event / Orientation State (accelerometer + activation) + +Items at the bottom of the list won\'t become eligible for monitoring +until all items further up the list are active. + +#### Display-Off Checks + +When the display is off, all necessary \'active\' checks (GPS/Net +Location, Wifi Near, App) are done at the same time so that the device +is awake for as short a time as possible. See *Display Off Timings* in +`Menu / Prefs / Monitor` for the frequency and maximum duration of these +checks. diff --git a/en/scenes.md b/en/scenes.md new file mode 100644 index 0000000..6b2872a --- /dev/null +++ b/en/scenes.md @@ -0,0 +1,108 @@ +--- +title: 'Tasker: Scenes' +--- + +Scenes ![](icon_tasker.png) +--------------------------- + +### Introduction + +A *scene* is a graphical user-interface consisting of a collection of +*elements* to which tasks can be attached to be run when the user +interacts with them e.g. by tapping them. + +Tasker uses scenes for things like popup dialogs, menus and getting +input from the user but scenes can actually be displayed by the user +whenever desired, meaning they can be used for things like creating +simple user-designed applications or showing extra controls over the top +of (selected) existing applications. + +Scenes are completely user-customisable via a drag-and-drop graphical +[editor](activity_sceneedit.html). + +### Displaying Scenes + +#### Actions: `Enter Key, HTML Popup, Lock, Menu, Popup, Popup Task Buttons` and `Variable Query` + +These actions use a **built-in scene** with the same name as their +action. After creating a task with such an action, the associated scene +can be found under the **Scenes** tab on the main Tasker screen. That +scene can be edited so that e.g. all `Popup` actions have the same style +because they all use the same scene. + +The parameters specified in the action are applied to the scene before +it is show. For instance, if the scene has a *Title* element it will be +set to the title specified in the action and the scene resized +appropriately. + +It might be desirable to have a different style for e.g. some `Popup` +actions, in which case: + +1. clone the built-in scene long-clicking on it in the **Scenes** tab +2. edit the clone to change the contents +3. in a `Popup` action, specify that the cloned scene should be used by + clicking on the **Layout** parameter in the action edit screen. + +#### Scene Category Actions: `Create Scene, Show Scene, Hide Scene, Destroy Scene` + +These allow a completely free hand over when a scene should be displayed +and it\'s life-cycle. They all act on scenes pre-designed in the +**Scenes** tab. + +Usually, only `Show Scene` and `Destroy Scene` will be used, however +sometimes it\'s useful for a scene to be created but not visible to the +user: + +- by hiding a scene instead of completely destroying it, the settings + of the elements are retained for next time it is shown +- the values of the elements in the scene can be changed to track + certain events so that the scene can be immediately displayed when + required without any configuration + +### Scene Elements + +Each scene is comprised of a number of elements. + +An element has three main components: + +#### Geometry + +It\'s size and position on the screen. An element\'s geometry is +specified in the [scene editor](activity_sceneedit.html). + +#### Content + +How it looks on the screen. + +Specified under the **UI** tab in the element editor. Some elements also +have a Background tab. A Menu element has an additional Items tab. + +#### Event Tasks + +What should happen when the user interacts with the element. + +Specified under the right-most tabs after clicking on the element in the +element editor. There are different events depending on the type of +element. For instance, a Button has tap and long-tap events while a +Slider has a value-set event. + +Event tasks are run at priority one higher than the task which displayed +the scene + +Local variables set by event tasks are visible to all tasks in the same +scene. + +### Scene Element Actions + +In the **Scenes** action category, there are several actions for setting +the properties of scene elements. You can use these for a wide variety +of purposes e.g. + +- when a slider value is set, change the zoom of an associated map + element +- set the size of an element depending on current light level +- animate elements around a scene + +Note that actions that affect scene elements can only be used when the +scene has already been created (via `Create Scene` or `Show Scene`). The +scene does not have to be visible. diff --git a/en/settings.md b/en/settings.md new file mode 100644 index 0000000..c910d09 --- /dev/null +++ b/en/settings.md @@ -0,0 +1,50 @@ +--- +title: 'Tasker: Settings' +--- + +Settings ![](icon_tasker.png) +----------------------------- + +#### What\'s A Setting ? + +Settings are actions like *Display Brightness* and *Ringer Volume* whose +effects are reversed by Tasker when the profile(s) which applied them +are no longer active. + +Setting actions have a double arrow icon next to them. + +#### Single Profile + +When a setting is applied by the profile\'s Enter Task, its value is +restored after the profile becomes inactive again. For example, if the +ringer volume is at 7 and is set to 0 in the Enter Task, when the +profile becomes inactive it is automatically set back to 7. + +In other words, settings are only valid for the lifetime of their +profiles. + +#### Multiple Profiles + +When multiple profiles that affect a setting are active simultaneously: + +1. the setting has the value from the **most recently activated** + profile +2. when **all** profiles are inactive, the setting has the value from + before **any** profile was active + +#### Special Cases + +- if a setting is changed by the Exit Task the profile will never save + the setting\'s initial value. +- settings changed in an *instant profile* (one with an event context + or repeating/non-ranged time context) remain changed after the + event. The reasoning is that there is no point in changing the + setting for the half-second that the event lasts. + +#### Notes + +- settings are not *actively* maintained. If something else changes + the setting once the Enter task has run, it\'s not the case that + this is detected and the Enter task value automatically reapplied. + +Complicated, huh ? diff --git a/en/sharecreation.md b/en/sharecreation.md new file mode 100644 index 0000000..ef10a1e --- /dev/null +++ b/en/sharecreation.md @@ -0,0 +1,69 @@ +--- +title: 'Tasker: Sharing' +--- + +Sharing ![](icon_tasker.png) +---------------------------- + +Tasker allows you to share your setups as easy to access links that can +be opened on any browser. + +The intention is to allow people to easily share their automations with +the world, in a centralized place. + +Anyone can import your setups by simply visiting the shared link! + +Sharing is accessed by long-clicking on a project (**not** the base +project), profile or task and selecting **Export** then **As Link**. + +#### The basics to Export a Task to Link: + +1. Long-click the name of any Task, Profile, or Project. From the 3-dot + menu in the upper right choose Export \> As Link +2. Enter a basic or detailed general Description for your Task, then + click the left arrow at the top left to continue. +3. You will then see the \"Done\" dialog that gives you choices for + where the shared link for the Task should be placed. You can share + it to any app on your device that supports share, such as Gmail, + etc., or, you can copy the link to your clipboard and put here in + reddit or anywhere you\'d like :) +4. After making your choice - Tasker will return to the previous screen + it was on (likely Profiles or Tasks Tab) and you will notice that + the check mark appears at the top indicating changes have been made + in Tasker. You may ask yourself \"What changes? I simply exported a + Task?\" and the answer is - Tasker saves the \"Description\" you + wrote in Step 2 so that the next time you export that specific Task + as Link you don\'t have to type it in again. +5. Your export is complete and your shared Task/Profile/Project is on + the Tasker server. Simply give the link created in Step 3 to anyone + you\'d like to have Import your creation! + +#### The basics to Import a Task from URL: + +1. You need a \"taskernet\" share link generated by someone who has + Exported their Task/Profile/Project as per the steps above. The link + begins with https://taskernet.com/shares/?user=AS35etc +2. Open the link on any device that has Tasker on it (with at least + version 5.4b) typically via web browser and you will be greeted with + the Task Data \"Import Screen\". It provides a datetime stamp of the + most recent share/upload of this Task, along with its Title and + basic description. To continue - simply press the green \"Import\" + button. +3. This will open the Tasker app and provide you with the Import + Confirmation dialog. This allows you to proceed with or cancel the + Import process. +4. You\'ll also notice the \"View Description\" button on the left hand + side. This allows you to view the full Task list of actions before + you Import. So you can look to see if all the actions look ok to you + (i.e. no weird File Writes or anything). There is also a \"Copy To + Clipboard\" button there if you need an even closer inspection. +5. Finally if all looks good to you - click \"OK\" and the + Profile/Task/Project will be Imported into Tasker ready for your + use! And just in case you already have a Task of the same name - + Tasker will popup a dialog to let you choose to overwrite it or not. + Typically you\'d overwrite if you\'re Importing a new update to a + previously Imported Task. +6. As a final bonus - a dialog will ask you if you want to run the Task + / enable the Profiles right away. Or you can run them / enable them + manually after you\'ve had a chance to peruse them in the Task + editor :) diff --git a/en/tasks.md b/en/tasks.md new file mode 100644 index 0000000..a0e3f42 --- /dev/null +++ b/en/tasks.md @@ -0,0 +1,209 @@ +--- +title: 'Tasker: Tasks' +--- + +Tasks ![](icon_tasker.png) +-------------------------- + +A task is simply a set of actions which are performed one after the +other. + +#### Named / Anonymous Tasks + +A task can be given a name. This allows: + +- the same task to be used in more than one profile +- easier identification of what the task does +- in the case of a [task widget/shortcut]{#app_widgets.html}, it + provides a label for the icon on the home screen. + +When creating a profile, widget or shortcut, often the associated task +will consist only of one or two actions which will not be reused. For +this case, Tasker allows you to create a task without a name (an +*Anonymous* task). + +#### Task Visibility + +Anonymous tasks are only visible when editing the profile that they are +associated with. + +Named tasks are visible on any screen that allows task editing. Any +changes made to the set of tasks in any screen is reflected in all the +other screens. + +#### Task Icon + +Each task has an associated icon, by default a question mark. The icon +is used + +- to represent the task on the home screen when it is used as a + [widget or shortcut]{#widgets.html} +- when the task is [turned into and app](appcreation.html) +- for easier identification of the task within the Tasker UI + +#### Deleting Tasks + +Named tasks can only be deleted via the *Delete* button on the [Task +Edit](activity_taskedit.html) screen. Unnamed tasks are deleted +automatically when the profile they are part of is deleted, or a named +task is selected for that profile. + +Named tasks cannot be deleted while a profile still refers to them. + +When a task is deleted that is referred to by a previously created named +widget or task, the widget will stop working. + +Android does not allow Tasker to automatically remove the widget from +the Home Screen. + +[]{#scheduling} + +#### Task Scheduling + +When there is a single task waiting to be executed, it\'s actions are +executed one-by-one until finished. + +When there are several tasks in the queue at once, it\'s important to +understand how they are handled: + +- only **one action** from the same [action group](#actiongroups) can + be executed at once to prevent interference +- the task in the queue with the **highest priority** goes first and + blocks lower priority tasks +- tasks with the **same priority** take turns executing an action + each, starting with the most recent addition to the queue **unless** + one task is a child of the other (started via [Perform + Task](help/ah_run_task.html)), in which case the child executes + first. + +Task priority, 0 to 50 inclusive with 0 being lowest, is determined +according to whatever causes the task to run. + +- enter tasks run by profiles have the priority specified in Profile + Properties, the default is 5. +- exit tasks run by profiles have the priority specified in Profile + Properties **plus 1001**, the default is therefore 1016 +- tasks run by **widgets** or **shortcuts** can be set in Task + Properties when the widget/shortcut is created, the default is 7 +- tasks run from scene elements have priority **one more** than the + task which showed the scene +- tasks run from the **Test** button in the task edit screen have + priority 100 by default, long-click the play buttin to choose a + different one. + +A couple of guidelines are: + +- if you want a particular task to always interrupt other tasks that + may be executing, give it a high priority +- if you have a task that lasts for a while, you probably want to give + it a low priority so it doesn\'t block other tasks from being + executed. + +[]{#actiongroups} + +#### Action Groups + +Actions are divided into groups for scheduling based on how long the +action takes to execute and what it interferes with: + +- **Speech**: `Say, Say To File` +- **Javascript**: `Javascript` +- **Fix**: `Get Location` +- **Voice**: `Get Voice` +- **Proxy**: + `Display Brightness, Query Action, Photo, Photo Series, Photo Series Time` +- **Proxy Scene** Enter Key, Menu, Popup, Popup Task Buttons, Variable + Query +- **Other Scenes**: the name of the scene being shown +- **Normal**: all other actions + +#### Wait Actions + +`Wait` and `Wait Until` are special cases. The rules for handling them +are complicated and try to do the \'best thing\' dependent on the +situation. + +#### Same-Profile Tasks + +Tasks launched by the same profile by default always execute in the +order in which they are launched. Other tasks from the same profile +remain completely inactive until any previous task from the same profile +is complete. The main purpose of this rule is to correctly handle rapid +changes in a profile\'s activation state. + +This behaviour can be disabled by deselecting *Enforce Task Order* in +the Profile Properties dialog. + +##### Example + +This example demonstrates the effect of Enforce Task Order and shows +also how sub-tasks launched by [Perform Task](help/ah_run_task.html) are +handled. + + Profile: Example + Enter Task: Enter1 + Perform Task, Enter2 + Exit Task: Exit1 + Perform Task, Exit2 + +**With** Enforce Task Order: + +Enter1 and Enter2 are both guaranteed to finish before either of Exit1 +or Exit2. Whether Enter1 or Enter2 finishes first depends on their +relative priority. Same for Exit1 and Exit2. All 4 tasks compete based +on priority against tasks from other profiles. Exit tasks have a higher +base priority so will finish before Enter tasks. + +**Without** Enforce Task Order: + +If the profile goes active and inactive quickly, Enter1, Enter2, Exit1 +and Exit2 will all compete purely on priority. Since Exit tasks have +higher base priority, Exit1 and Exit2 will probably finish first. + +[]{#collisions} + +#### Collisions + +Sometimes a task needs to be executed of which a copy is already +executing. This can happen quite often e.g. when a task widget button is +pressed twice quickly, or a task contains a Wait action or shows a +dialog. + +The way in which a collision is resolved is specified by the user. There +are 3 options: + +- the **new** task is ignored (the default) +- the **existing** task is aborted and the new one starts from its + first action. The current action of the previous task is finished if + it is already being carried out. +- both tasks run simultaneously + +Note that the last option can lead to several copies of a task all +running at once. + +[]{#stayawake} + +#### Behaviour When Device Off + +By default, after a few seconds of the screen being off Android will +power down the device and thus running tasks will be paused. + +In the Task Properties dialog, it can be specified that a task should +keep running. + +##### Dialogs + +An action that shows some kind of dialog (such as a lock screen, popup, +menu) blocks execution of any other action, even one of higher priority, +until it is completed. + +##### Wait / Wait Until + +These are exceptions. A wait action can be interrupted by another +task\'s action and will resume (if necessary) when the other task\'s +action is finished. + +#### Killing Tasks + +If you have a problem with a task that never ends, you can manually end +tasks with the **Kill** button in the Task Edit screen. diff --git a/en/timecontext.md b/en/timecontext.md new file mode 100644 index 0000000..3fceee6 --- /dev/null +++ b/en/timecontext.md @@ -0,0 +1,55 @@ +--- +title: 'Tasker: Time Context' +--- + +Time Context ![](icon_tasker.png) +--------------------------------- + +A *Time Context* specifies a particular range, or one (or more) points +in time. There are three major components, at least one of which must be +selected (by enabling its checkbox on the left): + +- **From Time**: the starting time of the range. If it\'s not + specified, **00:00** is assumed. +- **To Time**: the end time of the range, inclusive. The context will + deactivate after the **end** of the specified minute.\ + If To Time is not specified then **23:59** is assumed i.e. the + context deactivates at midnight. +- **Repeat**: if no repeat is selected, the context is assumed to be a + continuous range which starts at *From Time* and ends at *To Time*. + If a repeat **is** specified, the first occurrence is at *From Time* + and then every X hours or minutes until *End Time*. + +When not in [Beginner Mode](beginner.html), it\'s possible to specify a +[global user variable](variables.html) as the source of the `From Time` +or `To Time` by clicking on one of the rotating-arrow icons. + +The variable contents must specify the hours and minutes in **24-hour +format** and separated by a **period** (dot) or **colon** e.g. *13.45*. +Leading 0s can be ommited e.g. *9.7* for +seven-minutes-past-nine-in-the-morning. + +Alternatively, the time can be specified in seconds-since-the-epoch +format, in which case only the hour and minute part of the specification +are used. + +When the variable value changes, the time context is reevaluated which +may result in it activating or deactivating. If the variable value does +not specify a valid time then the profile will deactivate (if it\'s +already activated). + +Note: in some cases it may be wise to disable the profile (via the +*Profile Status* action) before changing the associated variable values. +For example, if your time context is from 16.00 to 16.00 (i.e. acting as +an event) and it should be changed to 17.00,17.00, if you don\'t disable +it first then as soon as you change the first value the time context +will become a 23 hour range (17.00-16.00) and probably activate. + +Notes: + +- to specify a precise time, set *From* and *To* times the same. In + that case, the context is treated as an instant event, it it only + active for a fraction of a second, so no setting restoration is + done. +- each repeat (if *Repeat* is set) is also treated like an instant + event. diff --git a/en/variables.md b/en/variables.md new file mode 100644 index 0000000..057c755 --- /dev/null +++ b/en/variables.md @@ -0,0 +1,796 @@ +--- +title: 'Tasker: Variables' +--- + +Variables ![](icon_tasker.png) +------------------------------ + +#### General + +A variable is a named value which changes over time e.g. the level of +the battery, the time of day. + +When Tasker encounters a variable name in a text, it replaces the name +with the current value of the relevant variable before carrying out the +action. + +The main purposes of variables are: + +- *dynamic binding*: doing something with an action with data which + is unknown when the task is created e.g. respond to an SMS; the + sender is not known until the SMS is received. +- allow [flow control](flowcontrol.html) within and between tasks +- record data for some future use e.g. passing data between tasks + +#### Global vs. Local Variables + +Variables which have an **all-lower-case** name (e.g. %fruit\_bar) are +*local*, meaning that their value is specific to the task or scene in +which they are used. + +Variables which have one or more capital letters in their name (e.g. +%Car, %WIFI) are *global*, meaning that wherever they are accessed from +the same value is returned. + +#### Built-In Variables + +The values of built-In variables are updated automatically by Tasker. + +[]{#localbuiltin} + +##### Local Built-In Variables + +- **Action Error**\ + *%err*\ + Is set to an integer if an error occurred when running the last + action. The actual number can signify the error which occurred, but + is usually 1 for most Tasker actions (notable exception: `Run Shell` + and plugins). Every action sets or clears it, so it must be saved + (e.g. with [Variable + Set](https://tasker.joaoapps.com/userguide/en/help/ah_set_variable.html)) + if it will be needed later than in the immediate next action. +- **Action Error Description**\ + *%errmsg*\ + A description of the error which **last resulted in %err being + set**. Currently never set by Tasker but possibly by some plugin + actions. +- **Task Priority**\ + *%priority*\ + The priority of the running task. The priority determines which task + executes its next action when several tasks are running together.\ + See also: [Task Scheduling](tasks.html#scheduling) +- **Task Queue Time**\ + *%qtime*\ + How long (seconds) the running task has been running.\ + Note that tasks can be interrupted by higher priority tasks, so this + number is not necessarily the total run-time of the task.\ +- **Task Caller**\ + *%caller*\ + A variable array tracing the origin of the current running task. + *%caller1* gives the origin of the current task, *%caller2* the + origin of *%caller1* etc. + + Example: if task A uses action `Perform Task` to start task B, then + when task A is run by pressing the Play button in the task edit + screen, *%caller1* in task B will show **task=A**, *%caller2* will + show **ui**. + + The format of each entry in the array is + *callertype*(**=***callername*(**:***subcallername*)) + + Caller types ares detailed below: + + - **profile**\ + a profile (when it\'s state changes). *callername* is either + **enter** or **exit** depending on whether the profile activated + or deactivated. *subcallername* is the name of the profile, if + it has one, otherwise **anon** + - **scene**\ + a scene event, with *callername* being the scene name. For + element events, *subcallername* is the element name. For action + bar button presses, *subcallername* is the label if one was + given. For scene-global events (e.g. Key), *subcallername* is + event type + - **ui**\ + the Play button in the task edit screen in the Tasker UI + - **launch**\ + clicking a child application icon in the launcher + - **nbutton**\ + a notification action button, either from Tasker\'s permanent + notification or one created with one of the Notify actions. + *callername* specifies the label of the button if present. + - **external**\ + an external application + - **qstile**\ + a Quick Settings tile. *callername* specifies the label of the + tile. + - **appshort**\ + an app shortcut (accessed via long-click on the Tasker icon). + *callername* specifies the label of the tile. + - **task**\ + another task, from a Perform Task action. *subcallername* is the + task name, if it has one, otherwise **anon** + +[]{#globalbuiltin} + +##### Global Built-In Variables + +- **Airplane Mode Status**`(dynamic)`\ + *%AIR*\ + Whether Airplane Mode is **on** or **off** +- **Airplane Radios**\ + *%AIRR*\ + A comma-separated list of the radios which will be **disabled** when + entering Airplane Mode.\ + Common radio names are: *bluetooth, cell, nfc, wifi, wimax*. +- **Battery Level**\ + *%BATT*\ + Current device battery level from 0-100. +- **Bluetooth Status** `(dynamic)`\ + *%BLUE* Whether Bluetooth is **on** or in some other state + (**off**).\ +- **Calendar List**\ + *%CALS*\ + Newline-separated list of calendars available on the device.\ + Each entry is in the format *calendarprovider:calendarname*.\ + Example usage: + + Variable Set, %newline, \n + Variable Split, %CALS, %newline + Flash, %CALS(#) calendars, first one is %CALS(1) + + For the sign *\\n*, press carriage-return on the keyboard. + +- **Calendar Event Title / Descr / Location** *%CALTITLE / %CALDESCR / + %CALLOC*\ + The title, description and location of the **current** calendar + event, if there is one. If there are multiple current calendar + events the variables refer to the **shortest**.\ + Tip: find other details about the current event(s) using the + `Misc / Test` action, specifying %TIMES for the data. +- **Call Name / Number/ Date / Time (In)** `(dynamic, monitored)`\ + *%CNAME / %CNUM / %CDATE / %CTIME*\ + The caller name, number, date and time of the current (if a call is + in progress) or last call received.\ + Caller number is **0** if it\'s unknown.\ + Caller name is **?** if it\'s unknown (probably because the caller + number was blocked) and set to the caller number if the contact + couldn\'t be looked up. It\'s unavailable on Android versions prior + to 2.0. +- **Call Name / Number/ Date / Time / Duration + (Out)**`(dynamic, monitored)`\ + *%CONAME / %CONUM / %CODATE / %COTIME / %CODUR*\ + The called name, number, date and time of the last (**not** the + current) outgoing call made.\ + Called Name is set to the called number if the contact couldn\'t be + looked up. It\'s unavailable on Android versions prior to 2.0. +- **Cell ID** `(monitored,dynamic)`\ + *%CELLID*\ + The current cell tower ID if known.\ + If you are using a Cell Near state, note that sometimes the Cell + Near state will stay active even though %CELLID reports that the + tower ID is unknown or invalid; that is because Cell Near only + responds to valid IDs to prevent the state becoming inactive e.g. + due to a service interruption.\ + For backwards compatibility, UMTS cells are reported with a GSM + prefix.\ + From Android 4.2, Tasker version 4.3+, cells could be found from 2 + different network types simultaneously. In that case, the value is + reported with preference for the network type leftmost on the list: + GSM, CDMA, UMTS, LTE. +- **Cell Signal Strength** `(monitored,dynamic)`\ + *%CELLSIG*\ + The current phone signal level from 0-8 inclusive on a rougly linear + scale. On some phones, the level will rise in steps of 2 + (0,2,4,6,8). The value is -1 if the value is unknown or there is + e.g. no service.\ + From Android 4.2, Tasker version 4.3+, cells could be found from 2 + different network types simultaneously. In that case, the value is + reported with preference for the network type leftmost on the list: + GSM, CDMA, UMTS, LTE.\ + There is a bug with some Android versions that the reported signal + strength is not updated until the device is turned off and on. +- **Cell Service State** `(monitored,dynamic)`\ + *%CELLSRV*\ + The current phone service state. One of *unknown, service, + noservice, emergency, nopower*. +- **Clipboard Contents**`(monitored,dynamic)` *%CLIP*\ + The current contents of the system clipboard. Please note that the + clipboard can\'t be accessed while the device\'s screen is securely + locked. +- **CPU Frequency**\ + *%CPUFREQ*\ + The current frequency CPU 0 is running at. See also: [CPU + Control](cpu.html). +- **CPU Governor**\ + *%CPUGOV*\ + The current governor controlling the frequency of CPU 0. See also: + [CPU Control](cpu.html). +- **Date**\ + *%DATE*\ + Current human-readable date. +- **Day of the Month**\ + *%DAYM*\ + Current Day of the Month, starting at 1. +- **Day of the Week**\ + *%DAYW*\ + Current Day of the Week starting with Sunday. +- **Device ID / Manufacturer / Model / Product**\ + *%DEVID / %DEVMAN / %DEVMOD / %DEVPROD*\ + The ID, manufacturer, model and product name of the device.\ + Note: ID is **not** a unique identifier for the device, but rather + for the hardware of the device. See also: %DEVTID. +- **Device Telephony ID**\ + *%DEVTID*\ + Returns the unique telephony-based ID for the device (e.g. for GSM + the IMEI, for CDMA the MEID or ESN).\ + Not available on all devices. +- **Display Brightness** *%BRIGHT* Current screen brightness, 0-255. + On some devices, if the Android setting Auto Brightness is enabled, + the value will always be 255. +- **Display Timeout** *%DTOUT* Current system screen timeout + (seconds). +- **Email From / Cc / Subject / Date / Time** `(dynamic)`\ + *%EFROM / %ECC / %ESUBJ / %EDATE / %ETIME*\ + The From, Cc, Subject, Received Date and Received Time of the last + email received by the K9 email agent. +- **Free Memory**\ + *%MEMF*\ + System free memory remaining in MB. +- **GPS Status**\ + (monitored,dynamic Gingerbread+) *%GPS*\ + Whether the system GPS receiver is **on** or **off**. +- **Heart Rate** `(monitored,dynamic)`\ + *%HEART*\ + The current detected heart rate in beats per minute.\ + See also: state *Heart Rate*.\ + The value will be negative for no contact (-1), accuracy unreliable + (-2) or some other problem (-3) +- **HTTP Response Code / Data / Content Length**`(dynamic)` *%HTTPR / + %HTTPD / %HTTPL*\ + Values from the last HTTP POST/GET action.\ + If the server doesn\'t return a content length, %HTTPL will be + calculated from the returned data where possible. +- **Humidity** `(monitored,dynamic)`\ + *%HUMIDITY*\ + The relative ambient air humidity in percent.\ + See also: state *Humidity*. +- **Input Method**\ + *%IMETHOD*\ + The current active input method. Consists of 4 parts separated by + commas: Method Name, SubType Name, Mode, Locale.\ + To access particular parts, use the *Variable Split* action. +- **Interrupt Mode** `(dynamic)`\ + *%INTERRUPT*\ + Only available on Android 5.0+, **requires Tasker\'s notification + access service to be enabled**, see Android\'s Sound & Notification + settings.\ + \ + Android 5.0+: the current state of interruptions mode on the device: + **none**, **priority** or **all**\ + See Also: action *Interrupt Mode*\ + \ + Android 6.0+: the current state of Do Not Disturb mode on the + device: **none**, **priority**, **all** or **alarms**\ + See Also: action *Do Not Disturb* +- **Keyguard Status**\ + *%KEYG*\ + Whether the Keyguard is **on** or **off** +- **Last Application**\ + *%LAPP*\ + The name of the application that was in the foreground before the + current one e.g. Maps. +- **Last Photo**\ + *%FOTO*\ + The filesystem path to the last photo taken by Tasker or the + standard system camera application. +- **Light Level** `(monitored,dynamic)`\ + *%LIGHT*\ + The last recorded light level in lux.\ + Note that Android does not return a value until the light level + changes, so to test the sensor is working you should put it near a + bright light initially.\ + May not change when the device display is off, see + `Menu / Prefs / More / Display Off Monitoring / Light Sensor`. +- **Location** `(dynamic)`\ + *%LOC*\ + The latitude and longitude of the last GPS fix.\ + [See note](#locnote). +- **Location Accuracy** `(dynamic)`\ + *%LOCACC*\ + The accuracy in metres of the last GPS fix.\ + [See note](#locnote). +- **Location Altitude** `(dynamic)`\ + *%LOCALT*\ + The altitude in metres of the last GPS fix, or 0 if unavailable.\ + [See note](#locnote). +- **Location Speed** `(dynamic)`\ + *%LOCSPD*\ + The speed in metres/second at the last GPS position fix or 0 if + unavailable.\ + [See note](#locnote). +- **Location Fix Time Seconds** `(dynamic)`\ + *%LOCTMS*\ + The time in seconds of the last GPS fix. To get age of fix, take + this away from %TIMES.\ + This value is not set until an offset of the GPS time from the fixed + time has been calculated (should be after the first GPS fix) because + the value is meaningless until that point.\ + [See note](#locnote). +- **Location (Net)** `(dynamic)`\ + *%LOCN*\ + The latitude and longitude of the last network location fix.\ + [See note](#locnote). +- **Location Accuracy (Net)** `(dynamic)`\ + *%LOCNACC*\ + The accuracy in metres of the last network location fix.\ + [See note](#locnote). +- **Location Fix Time (Net)** `(dynamic)`\ + *%LOCNTMS*\ + The time in seconds of the last net location fix. To get age of fix, + take this away from %TIMES.\ + [See note](#locnote). +- **Magnetic Field Strength** `(monitored,dynamic)`\ + *%MFIELD*\ + The total magnitudes in micro-Teslas of the magnetic fields acting + on all three axis of the devices sensor.\ + Updated once per second.\ + See Also: state `Magnetic Field`. +- **Music Track** `(monitored,dynamic)`\ + *%MTRACK*\ + The current playing music track, supported for: + - Tasker actions *Music Play* and *Music Play Dir* + - Built-in Android music-player, probably not on all devices + however + - Power AMP + - BeyondPod (Tasker v1.2.1+) + - Phantom Music Control Pro + - Media Utilities + + Priority: if both Tasker and one of the other supported apps are + playing simultaneously, the non-Tasker track will be shown. If more + than one of the other supported apps is playing simultaneuosly, + behaviour is unspecified.\ + Notes: + - if you don\'t have a supported player, you could try Phantom + Music Control Pro or Media Utilities, which support a lot of + players and should pass the info on to Tasker + - pausing a track clears the variable, unpausing sets it again + - your music player may need an option enabled in order to + broadcast the track information, or the broadcast may only be + available in a \'pro\' version + +- **Muted**\ + *%MUTED*\ + Whether the microphone is currently muted (**on**) or not (**off**). +- **Night Mode**\ + *%NIGHT*\ + The current Android Night Mode.\ + One of **on**, **off** or **auto**.\ + If **auto**, Android will decide whether it should be in Night Mode + itself. +- **Notification Title** `(monitored, dynamic)`\ + *%NTITLE*\ + The title of the last notification shown in the status bar. Prior to + KitKat, requires Tasker\'s accessibility server to be running (see + Android Accessibility Settings). From KitKat, requires Tasker\'s + Notification Listener service to be running instead.\ + In a task running as a result of a `Notification` or + `Notification Removed` event, use variable %evtprm2 instead of + %NTITLE. This is much more reliable and you have access to other + parts of the notification (%evtprm3 etc)\ + Notifications generated by Tasker are not shown. +- **Phone Number**\ + *%PNUM*\ + The current phone number of the device, if it\'s in service.\ + On some phones it doesn\'t work (Android limitation), seems related + to the type of SIM. +- **Pressure** `(monitored,dynamic)`\ + *%PRESSURE*\ + The current air pressure on the device in millibars.\ + May not change when the device display is off, see + `Menu / Prefs / Monitor / Display Off Monitoring / Pressure Sensor`. +- **Profiles Active** `(dynamic)`\ + *%PACTIVE*\ + A comma-separated list of the currently active, named profiles in + activation order. Duplicate names will appear on the list only once. + The list always starts and ends with a comma to make matching + easier, if it\'s not empty. +- **Profiles Enabled** `(dynamic)`\ + *%PENABLED*\ + A comma-separated list of the currently enabled, named profiles in + creation order. Duplicate names will appear on the list only once. + The list always starts and ends with a comma to make matching + easier, if it\'s not empty. +- **Roaming**\ + *%ROAM*\ + **on** if device is roaming on the current telephone network, + otherwise **off**. +- **Root Available**\ + *%ROOT*\ + **yes** if root functions are available on this device, otherwise + **no**. +- **Screen** `(dynamic)`\ + *%SCREEN*\ + Whether the screen is on (value **on**) or off (value **off**). +- **SDK Version**\ + *%SDK*\ + The numeric Android [SDK + version](http://developer.android.com/reference/android/os/Build.VERSION_CODES.html) + of the device. +- **Silent Mode** `(dynamic)`\ + *%SILENT*\ + The current state of silent mode: **off**, **vibrate** or **on**.\ + From Android 5.0+ this variable is intended to only reflect whether + the device is in vibrate mode (**vibrate**) or not (any other + value), but the **on** value is included for backwards compatibility + and set when the device is not in vibrate mode and the interrupt + mode is **none** or **priority**.\ + See Also: variable *%INTERRUPT*, actions *Silent Mode* and + *Interrupt Mode*. +- **SIM Serial Number**\ + *%SIMNUM*\ + The serial number of the SIM card, if one is present and + accessible.\ + If the SIM has not been unlocked it will not be available. +- **SIM State**\ + *%SIMSTATE*\ + The current state of the SIM card.\ + One of **unknown**, **absent**, **pinrequired**, **pukrequired**, + **netlocked** or **ready**. +- **Speakerphone**\ + *%SPHONE*\ + Whether the speakerphone is **on** or **off** +- **Speech** `(dynamic)`\ + *%SPEECH*\ + The current utterance as a result of a *Say* or *Say File* action, + if applicable. +- **Tasks Running** `(dynamic)`\ + *%TRUN*\ + A comma-separated list of any named tasks which are currently + running. The list always starts and ends with a comma to make + matching easier, if it\'s not empty. +- **Telephone Network** `(dynamic, monitored)`\ + *%TNET*\ + The current telephony network operator the device is using.\ + May be unreliable on CDMA networks +- **Temperature** `(monitored,dynamic)`\ + *%TEMP*\ + The current ambient temperature in degrees Celsius.\ + May not change when the device display is off, see + `Menu / Prefs / Monitor / Display Off Monitoring / Temp. Sensor`.\ + See also: state *Temperature*. +- **Text From/Date/Subject/Time** `(monitored)`\ + *%SMSRF / %SMSRN / %SMSRB / %MMSRS / %SMSRD / %SMSRT*\ + The sender address, name, body, subject, date and time of the last + text (SMS or MMS) received.\ + These variables will be empty until the first time a text is + received after they have been referenced because Tasker does not + monitor texts unless it\'s needed.\ + *Name* is set to sender address of no contact could be looked up. + It\'s unavailable on Android versions prior to 2.0.\ + *Body* (%SMSRB) is only set for SMSs.\ + *Subject* (%MMSRS) is only set for MMSs. +- **Time**\ + *%TIME*\ + Current human-readable time separated by a period e.g. 10.59 +- **Tether** (dynamic)\ + *%TETHER*\ + A comma-separated list of enabled tethering forms i.e. connections + over which another device can connect to this one in order to use + its internet connection.\ + The possible forms are **wifi**, **usb** or **bt**.\ + BT will only be present when an actual client is connected via BT + for using the devices network connection, whereas the others will be + present as soon as the functionality is enabled (Android + bug/limitation). +- **Time MilliSeconds**\ + *%TIMEMS*\ + The current time in milliseconds.\ + (milliseconds since some time in January, 1970, if you must know). +- **Time Seconds**\ + *%TIMES*\ + The current time in seconds.\ + (seconds since some time in January, 1970, if you must know). +- **UI Mode** `(monitored,dynamic)`\ + *%UIMODE*\ + The current Android UI mode.\ + One of **car**, **desk**, **appliance**, **tv** (television), + **watch**, **undef** (undefined) or **normal**. +- **Uptime Seconds**\ + *%UPS*\ + The number of seconds since the device last booted. +- **Volume - Alarm/Call/DTMF/Media/Notification/Ringer/System** + `(dynamic)`\ + *%VOLA / %VOLC / %VOLD / %VOLM / %VOLN / %VOLR / %VOLS*\ + Current audio channel volume level.\ + On some devices, volume changes are not picked up dynamically, on + others not when using the phone app. +- **WiFi Info**\ + *%WIFII*\ + When connected to an Access Point (AP), shows human-readable data + about the AP. When not connected, show details of the most recent + Wifi scan results for nearby APs.\ + On Android 8.1+, may require basic location services to be enabled + in Android settings. +- **WiFi Status** `(dynamic)`\ + *%WIFI*\ + Whether WiFi is **on** or **off**. Note: if WiFi is enabling or + disabled, in fact anything but enabled, it\'s classed as off. +- **Wimax Status**\ + *%WIMAX*\ + Whether Wimax is **on** or **off**. Note: if Wimax is enabling or + disabled, in fact anything but enabled, it\'s classed as off. +- **Window Label** `(monitored,dynamic)`\ + *%WIN*\ + The label of the current window, which could be a full-screen + activity or a dialog.\ + Not set if the label is unknown.\ + For some windows, the label might be that of the first item in the + window e.g. a menu entry or even a button. + +[]{#notes} + +##### General Notes + +Variables marked `dynamic` in the list above trigger changes in +*Variable Value* states and *Variable Set* events whenever their value +changes. + +Variables marked `monitored` will cause the relevant monitor to startup +to track their state when they are used in contexts or tasks which are +used by widgets or **enabled** profiles. For instance, %CELLID used in a +Flash action will cause cell location to be tracked. + +Limitation: monitored variables cannot be detected in anonymous +shortcuts. + +[]{#locnote} + +##### Note On Location Variables + +When the relevant provider (Net or GPS) of a location context is active, +these variables report the values from the provider, which may be more +recent than Tasker has seen if other applications are asking for +location. + +When the relevant provider is **not** active, these variables report the +last values **seen by Tasker**, which could be the result of a +`Get Location` action or of monitoring for a `Location Context`. + +That means the the reported fix times could **go backwards**, if you +turn off the location provider between two uses of the variables. + +Location variables can also be manually updated by running the +`Get Location` action. + +#### User Variables + +The action *Variable Set* (and several others) can be used to create new +variables. Variable names have the following restrictions: + +- they must start with the **%** character +- they are case-sensitive +- then must at least a further **3** alphanumeric characters +- they can also contain the underscore character (\_) but not start or + end with it + +In general, it\'s best to use local variables wherever possible because: + +- you know they won\'t be interfered with by other tasks or scenes +- they are more efficient in several ways + +Note: multiple copies of the same task running at the same time each +have their own separate copy of their local variables. + +###### Scene-Local Variables + +Each scene has its own set of local variables which it shares with the +task that created it; both the scene and task see changes to the +variables made by either. + +Any task which starts as a result of a scene event (e.g. a tap on an +element) also shares the variables of the scene (and thus of the +original task which created the scene). + +As a consequence, a task started by a scene event (e.g. Tap on an +element) which shows a new scene e.g. via the *Show Scene* action, will +result in the second scene sharing the variables of the first scene. + +When a task shows a scene that was created by a different task (or a +different copy of the same task) and subsequently hidden, the task\'s +variables are **copied** to the scene variables (overriding values of +variables which already exist) but the task does **not share** the scene +variables and cannot see changes to them. + +##### Escaping Variable Names + +If you want to prevent a variable name being replaced, put a **\\** in +front of it e.g. + +> `Variable Set, %new, \%old` + +Will set the value of *%new* to *%old*, **not** the **value** of *%old*. + +In order to precede a variable name with a **\\** you can escape the +backslash e.g. + +> `Variable Set, %new, \\%old` + +Will set the value of *%new* to **\\** followed by the **value** of +*%old*. + +##### Variable References + +It\'s possible to indirectly refer to variables by preceeding one or +more extra **%** signs to the start of the variable name. For example: + +> ` Variable Set, %colour, red Variable Set, %varname, colour Flash %%varname` + +\... will flash **red**. + +Using this notation it\'s possible to assign variables whose name is not +known beforehand: + +> ` Read File, variablename.txt, To Var, %varname Variable Set, %%varname, red` + +This will set the variable whose name is stored in the file +`variablename.txt` to **red**. + +You can nest references as deeply as you like (e.g. `%%%%var`) but +mental stress and bugs are sure to follow. + +If any part of the chain has an invalid variable name then the original +reference will be returned. In the first example, if `%varname` is set +to `!!!`, then **%%varname** will be flashed instead of **red**. + +##### Variable Lifetime + +The value a **global** variable holds lasts until Tasker is uninstalled +if it is not changed by any task. + +**Local** variables are lost at the end of the task they were created +in, or when the parent scene is destroyed in the case of tasks called +from scenes. + +##### Uninitialized Variables + +User-variables which have not had a value assigned do not have +replacements carried out e.g. in the expression *I love %fruit*, if +%fruit is uninitialized, the expression remains as it is, otherwise +%fruit is replaced with the value. + +Exception: uninitialized variables used in mathematical expressions are +replaced with 0. + +#### Variables In Plugins + +Plugin developers can tell Tasker to replace variables it finds in +plugin strings with their current Tasker value. If you have a plugin +which doesn\'t support this, send the developer this URL + +> + +which has the relevant details. + +[]{#arrays} + +#### Variable Arrays + +Tasker supports pseudo-arrays. + +They are especially useful when used with the `For` action, since you +can perform a set of actions on each element in turn e.g. list a set of +files then test each one. + +##### Examples + +If the four variables **%arr1, %arr2, %arr3, %arr4** hold respectively +**a, b, c** and **d** then we have an array with 4 *elements*. These +variables can be used just like any other, however it is also possible +to access them in special ways. Here are some examples: + +- **%arr(\#)**\ + The number of defined array elements (**4** in this case) +- **%arr(\#\>)**\ + The index of the first defined array element, or **0** if none are + defined (**1**). +- **%arr(\#\<)**\ + The index of the last defined array element, or **0** if none are + defined (**4**) +- **%arr(\#?b/c)**\ + A comma-separated list of the array indices (lowest to highest) with + matching values, or **0** if none match (**2,3** in the example) +- **%arr(\#?\~Rregex here)**\ + Same as above but with regex matching +- **%arr(\>)**\ + The contents of the first defined array element (**a**) +- **%arr(\<)**\ + The contents of the last defined array element (**d**) +- **%arr()** or **%arr(:)**\ + All of the array elements separated by commas (**a,b,c,d**) +- **%arr(2)** or just **%arr2**\ + The content of the element with index 2 (**b**) +- **%arr(2:4)**\ + Contents of defined elements with indices 2 to 4 (**b,c,d**) +- **%arr(:3)**\ + All the defined elements with indices up to 3 (**a,b,c**) +- **%arr(3:)**\ + All the defined elements with indices starting from 3 (**c,d**) +- **%arr(1:2)**\ + All the defined elements with indices from 1 to 2 (**a,b**) + +Notes: + +- arrays will virtually always have all their elements defined so e.g. + %arr(\>) will be the same as %arr(1), %arr(\#) will be the same as + %arr(\#\<) +- index specifiers can themselves be variables (e.g. %arr(1:%MAX) or + %arr(\#?%FINDME)) but **not** variable arrays + +##### Creating An Array + +1. using `Array Set`:\ + **Array Set, %arr, a b c d** +2. using `Variable Split` on an existing (simple) variable:\ + **Variable Set %arr a b c d**\ + **Variable Split %arr**\ +3. by assigning individual elements with `Variable Set`:\ + **Variable Set, %arr3, c**. +4. using `Array Push` to add an initial element +5. some other actions also create arrays for their results e.g. + `List Files`. + +##### Inserting Elements + +Use the `Array Push` action. + +The *Fill Spaces* parameter might need more explanation. It is only +relevant if one or more of the array elements are undefined. As an +example, if we have the array elements %arr1 and %arr3 containing +**apple** and **banana**: + +- **Array Push %arr1, 1, pear**\ + leaves %arr1, %arr2 and %arr4 containing **pear**, **apple** and + **banana**.\ +- but **Array Push %arr2, 1, pear, Fill Spaces**\ + leaves %arr1, %arr2 and %arr3 containing **pear**, **apple** and + **banana**. + +##### Removing Elements + +Use the `Array Pop` action. Note the difference between `Array Pop` and +`Variable Clear`: `Pop` reduces the number of elements in the array, +while `Clear` merely changes elements to undefined. + +Example: if we have the array elements %arr1, %arr2, %arr3 containing +**apple**,**pear** and **banana**: + +- **Variable Clear %arr2**\ + leaves %arr1 and %arr3 containing **apple** and **banana**.\ +- but **Array Pop %arr2**\ + leaves %arr1 and %arr2 containing **apple** and **banana**. + +##### Deleting An Array + +Use `Array Clear`. + +In most cases you could also use **Variable Clear %arr\*** with Pattern +Matching checked, but that would also delete variables called e.g. +%arrTOODEETOO so `Array Clear` is safer. + +##### Sorting + +The `Array Process` action offers various sorting options, amongst other +things. + +##### Array Efficiency + +Arrays are intended for convenience when processing high-level data, not +for e.g. processing astronomical data. Doing thousands of array actions +will likely take several seconds (although mostly due to the +housekeeping work done by Tasker in-between each action rather than due +to the array operations themselves). + +In terms of storage efficiency, they are also fairly hopeless. You +probably do not want to store tens of thousands of items in an array. diff --git a/userguide_summary.md b/userguide_summary.md new file mode 100644 index 0000000..5e7919b --- /dev/null +++ b/userguide_summary.md @@ -0,0 +1,8247 @@ +*This document is a one-page compilation of the on-device userguide +intended for printing out for use as a reference.* + +[]{#index.html} + +Tasker Userguide ![](icon_tasker.png) +------------------------------------- + +Profiles + +- [Main Screen](#activity_main.html) + + + +- Contexts + - [Application](#appcontext.html) + - [Time](#timecontext.html) + - [Day](#daycontext.html) + - [Location](#loccontext.html) + - [Location Edit](#activity_locselect.html) + - [State](#activity_stateedit.html) + - [A-Z](#help/sh_index.html) + - [Event](#eventcontext.html) + - [Event Edit](#activity_eventedit.html) + - [A-Z](#help/eh_index.html) + +Tasks + +- [General](#tasks.html) +- [Task Edit](#activity_taskedit.html) +- [Flow Control](#flowcontrol.html) +- [Task Widgets / Shortcuts](#app_widgets.html) + - [Configuration](#activity_widget_configure.html) +- Actions\ + - [Action Edit](#activity_actionedit.html) + - [Settings](#settings.html) + - [A-Z](#help/ah_index.html) + +Scenes + +[General](#scenes.html) + +[Scene Edit](#activity_sceneedit.html) + +[Scene Properties](#activity_scenepropertiesedit.html) + +Scene Elements\ + +- [Button](#element_button.html) [CheckBox](#element_checkbox.html) + [Doodle](#element_doodle.html) [EditText](#element_textedit.html) + [Image](#element_image.html) [Map](#element_map.html) + [Menu](#element_menu.html) [Number Picker](#element_picker.html) + [Oval](#element_shape.html) [Rectangle](#element_shape.html) + [Slider](#element_slider.html) [Spinner](#element_spinner.html) + [Text](#element_text.html) [Toggle](#element_toggle.html) + [Video](#element_video.html) [Web](#element_web.html) +- [Element Edit](#activity_elementedit.html) + +Variables + +- [General](#variables.html) + +Miscellaneous + +- [Android System Power Management](#androidpowermanagement.html) +- [App Creation](#appcreation.html) +- [Beginner Mode](#beginner.html) +- [CPU Control](#cpu.html) +- [Encryption](#encryption.html) +- [Gestures](#gestures.html) +- [Intents](#intents.html) +- [Java](#java.html) +- [JavaScript](#javascript.html) +- [Icons](#icons.html) +- [Location Without Tears](#loctears.html) +- [Maths](#maths.html) +- [Pattern Matching](#matching.html) +- [MIDI](#midi.html) +- [Power Usage](#power.html) +- [Run Log](#activity_runlog.html) + +FAQs + +- [How Do I\... / Can I\... ?](#faqs/faq-how.html) +- [Usage Problems](#faqs/faq-problem.html) +- [Why\... ?](#faqs/faq-why.html) +- [App Creation](#faqs/faq-appcreation.html) +- [Other](#faqs/faq-other.html) + +Web Links + +- [Wiki (Step-throughs, Recipes)](http://tasker.wikidot.com) +- [Tour](http://tasker.dinglisch.net/tour.html) +- [Bugs / Limitations](http://tasker.dinglisch.net/bugs.html) +- [Plans](http://tasker.dinglisch.net/todo.html) +- [Developers](http://tasker.dinglisch.net/developers.html) +- [Release Notes](http://tasker.dinglisch.net/changes.html) + +[]{#activity_main.html} + +Main Screen ![](icon_tasker.png) +-------------------------------- + +This is the first screen shown when you startup Tasker. It allows you to +organize and configure Tasker\'s four main \'building blocks\': +*Profiles, Tasks, Scenes* and *Variables*. + +- Main Tabs + - [Profiles](#profiles) + - [Tasks](#tasks) + - [Scenes](#scenes) + - [Variables](#variables) +- [Action Bar](#action) +- [Menus](#menus) +- [Projects](#projects) + +### Main Tabs + +Displayed in the action bar on most devices. + +- **Click** on a tab to view a list of the relevant things +- **Click** on an **already selected** tab to get options for it + +[]{#profiles} + +#### *Profiles* + +Each item in the list represents a profile. The profile links contexts +(conditions) on the left to tasks which should be run on the right. The +profile name is green if the profile is active. There are three main +parts to each profile. + +##### *1. Title Bar* + +This shows the profile name (or description if it has no name) and a +switch on the right shows whether the profile is enabled or not. + +- **Click** on the name to expand / collapse the profile. When + expanded, the contexts and tasks (described below), are visible. +- **Long-click** on the profile name to get profile options or to drag + profile(s) around +- **Click** on the switch to control whether the profile is enabled or + not. + +Important: the switch being set to **on** does **not** mean the profile +is **active** (will run its tasks), it means that the profile **can** +become active **if** its conditions are met. + +##### *2. Contexts* + +On the left hand side of the profile are an icon and text for each +context in the profile. The contexts dictate when the profile should +become active. When **all** contexts are active then the profile will be +active. + +- **Click** on the context to edit it +- **Long-click** to show management options, such as editing or adding + a new context + +You can configure what clicks and long-clicks on contexts do in +`Menu / Prefs / UI`. + +##### *3. Tasks* + +On the right hand side of the profile are one or two tasks to carry out +based on its activation status. + +- **Click** on the task to edit it +- **Long-click** to show management options. + +A task indicated with a **green, right-pointing** arrow is an *entry* +task, executed when the profile first becomes active. + +A task indicated with a **red, left-pointing** arrow is an *exit* task, +executed when the profile becomes inactive again. + +Exception: a profile containing an event context or a repeating or +non-ranged time context has two green arrows, to denote that both tasks +are executed immediately because the profile activation and deactivation +is instantaneous. + +Click on the **Profiles** tab when it is already selected for general +profile-related options such as sorting. + +[]{#tasks} + +#### Tasks + +The task list shows the named [tasks](#tasks.html) which have been +created. + +- **Click** on a task to edit it +- **Long-click** for options or to drag task(s) around + +Note that a profile can be assigned an *anonymous* task (one without a +name) which is not accessible in the task list, only via the relevent +profile in the profile list. + +Click on the **Tasks** tab when it is already selected for general +task-related options such as sorting. + +[]{#scenes} + +#### Scenes + +The scene list shows the [scenes](#scenes.html) which have been created. + +- **Click** on a scene to edit it +- **Long-click** for options or to drag scene(s) around + +Scenes with a green name have been created but may be invisible +(hidden). + +Click on the **Scenes** tab when it is already selected for general +scene-related options such as sorting. + +[]{#variables} + +#### Variables + +The Variables tab is not shown if [Beginner Mode](#beginner.html) is +enabled. + +By default, all global [user-variables](#variables.html) that Tasker +knows about are listed, which includes any that have a value set or are +mentioned somewhere in a profile, task or scene. + +- **Click** on a variable to edit it +- **Long-click** for options + +Note that variables whose names are all lower-case are *local* variables +and not shown because they are only valid within the task that refers to +them. + +Click on the **Vars** tab when it is already selected for general +variable-related options such as sorting and filtering. + +The filter controls function as follows: + +- **Indexed** (button)\ + includes variables whose names end in a number e.g. `%LOC3`, + otherwise they are excluded. +- **Empty** (button)\ + includes variables which have currently have no value assigned, + deselect to show only variables that have a value. +- **Referenced** (button,home project only)\ + includes variables which are referenced in profiles, tasks or + scenes.\ + Deselect to show only \'orphan\' variables. +- **Filter** (textbox)\ + excludes variables which don\'t contain the specified text somewhere + in their name (case-sensitive) + +In a user-created project, only variables referenced by that project are +shown. + +Unlike most screens in Tasker, changes made in the variable list cannot +be cancelled. + +[]{#action} + +#### Action Bar + +##### *Apply* Button + +Save and apply any changes which have been made **without** exiting the +UI. + +This is unnecessary prior to leaving the UI via the back button or home +key, it\'s just for convenience when testing changes. + +Not visible in [Beginner Mode](#beginner.html). + +##### *Overflow* Button + +Click to access [menu options](#menus) if no menu hard-key is available +on the device. []{#menus} + +### Menus + +#### Menu Item: Browse Examples + +Links to websites with projects, profiles etc offering solutions for +common problems. Important: once downloaded you need to import the file +into your active user data. For example, profiles are imported by +long-clicking the profile tab and selecting Import. + +#### Menu Items: Data + +##### Clear + +Removes all data that has been created to that point. Does not remove +preferences (use `Menu / Preferences` and click **Defaults** for that) +or variables (long-click on the Variables tab for that). + +##### Backup + +Saves the existing user data to a backup file on external storage. + +##### Restore + +Options for restoring backups of various types. []{#projects} + +### Projects + +Tasker allows organisation of profiles, tasks, scenes and variables into +groups called *Projects*, each with a separate *Project Tab*. + +The projects tabs are hidden in [Beginner Mode](#beginner.html). + +- **Click** on a project tab to switch to viewing only things in that + project +- **Long-click** on a project tab for options, including adding a new + tab. Options can also be accessed by a single click on the selected + project tab. +- **Long-click and Select**, then drag to a project tab, any items you + want to move to that project + +The first tab has a slightly special status, it cannot be removed and +anything which is not a member of another project is placed there. + +[]{#appcontext.html} + +Application Context ![](icon_tasker.png) +---------------------------------------- + +An *Application Context* is activated when selected parts of one or more +application are running. + +Important: in Android versions after (and including) L, app detection is +much less accurate. For some apps it may not work at all, for others it +may activate and never deactivate. + +#### Controls + +##### *App* button + +When checked, indicates that the context will become active if any of +the selected applications is in the *foreground*, meaning it is +currently being displayed to the user. + +##### *Services* button + +When checked, indicates that the context will also become active if a +service associated with any of the selected applications is running. + +Note that services other than the obvious ones may be running. For +example, the default Play Music app may have a download service running +even when not playing music at a particular time. + +##### *Invert* button + +When the context is *inverted*, it will become active when any +application **apart from** the selected ones is matched + +##### *All* button + +Usually only applications are shown for selection which would usually be +shown in the launcher. The All button shows certain other launchable +activities. + +This button in no way affects how the context behaves. + +#### Application Checking + +When any profiles have application contexts specified, Tasker checks +frequently to see if one of those applications has been launched. The +default is every 1.5 seconds. + +If you would like quicker response, or you suspect this is severely +increasing your battery usage, you can change this value in preferences +(select `Menu / Preferences / Monitor` from the main screen). + +[]{#timecontext.html} + +Time Context ![](icon_tasker.png) +--------------------------------- + +A *Time Context* specifies a particular range, or one (or more) points +in time. There are three major components, at least one of which must be +selected (by enabling its checkbox on the left): + +- **From Time**: the starting time of the range. If it\'s not + specified, **00:00** is assumed. +- **To Time**: the end time of the range, inclusive. The context will + deactivate after the **end** of the specified minute.\ + If To Time is not specified then **23:59** is assumed i.e. the + context deactivates at midnight. +- **Repeat**: if no repeat is selected, the context is assumed to be a + continuous range which starts at *From Time* and ends at *To Time*. + If a repeat **is** specified, the first occurrence is at *From Time* + and then every X hours or minutes until *End Time*. + +When not in [Beginner Mode](#beginner.html), it\'s possible to specify a +[global user variable](#variables.html) as the source of the `From Time` +or `To Time` by clicking on one of the rotating-arrow icons. + +The variable contents must specify the hours and minutes in **24-hour +format** and separated by a **period** (dot) or **colon** e.g. *13.45*. +Leading 0s can be ommited e.g. *9.7* for +seven-minutes-past-nine-in-the-morning. + +Alternatively, the time can be specified in seconds-since-the-epoch +format, in which case only the hour and minute part of the specification +are used. + +When the variable value changes, the time context is reevaluated which +may result in it activating or deactivating. If the variable value does +not specify a valid time then the profile will deactivate (if it\'s +already activated). + +Note: in some cases it may be wise to disable the profile (via the +*Profile Status* action) before changing the associated variable values. +For example, if your time context is from 16.00 to 16.00 (i.e. acting as +an event) and it should be changed to 17.00,17.00, if you don\'t disable +it first then as soon as you change the first value the time context +will become a 23 hour range (17.00-16.00) and probably activate. + +Notes: + +- to specify a precise time, set *From* and *To* times the same. In + that case, the context is treated as an instant event, it it only + active for a fraction of a second, so no setting restoration is + done. +- each repeat (if *Repeat* is set) is also treated like an instant + event. + +[]{#daycontext.html} + +Day Context ![](icon_tasker.png) +-------------------------------- + +A *Day Context* allows specification of one or more months and/or days +of the week/month. + +#### Month Specification + +The months are listed at the top, any of which can be selected. +Selecting **no** month has the same meaning as selecting **every** month +i.e. has no restriction on when the profile will become active. + +#### Day of Week/Month Specification + +Days of the week (*Sunday, Monday* etc) and/or month (*1st, 9th* etc) +can be selected independently with the pulldown centre-right. This will +initially be for Week Days if there are any defined, otherwise Month +Days. + +Selecting **no** day has the same meaning as selecting **every** day. + +If you select **both** days of the week **and** days of the month, it +requires both conditions to be fulfilled for the profile to become +active e.g. selecting *Mon,Tue* and *11th* means the profile will become +active when the day is a *Mon* or *Tuesday* and **simultaneously** the +*11th* day of the month. + +If you are unsure if you have specified the day(s) you require, click +the **Done** button and you will see a verbal description at the top of +the Profile Edit screen. You can click on this to try again if it\'s not +correct. + +[]{#loccontext.html} + +Location Context ![](icon_tasker.png) +------------------------------------- + +A *location context* specifies a circular geographical area in which it +is active. It is formed by a centre point (*latitude, longitude*) plus a +*radius* around that point. + +#### Location Providers + +A location provider is a method of supplying geographical coordinates. +Tasker must use one or more location providers to be able to decide when +a location context should become active or inactive. []{#gps} + +##### GPS + +The most accurate provider available (around +-10m), but its performance +degrades quickly indoors and it uses a relatively large amount of power. + +To set the frequency of GPS fixes, see `Menu / Preferences / Monitor`. +*GPS Check Time* determines the check frequency in seconds while the +device is awake, *Off Check Time* while the device is asleep. + +GPS will only be used for a particular context if it is specified in the +location edit screen. + +[]{#net} + +##### Network + +This provider uses a combination of cell-towers and WiFi information (if +wifi is enabled) to determine the device\'s geographical location. It is +less power-hungry than GPS, but also less accurate (sometimes +- several +kilometres) and requires data network availability. + +Network will only be used for a particular context if it is specified in +the location edit screen. + +See also: + +- [Location Edit Screen](#activity_locselect.html) +- [Location Without Tears](#loctears.html) (guidance for choosing a + location method) + +[]{#activity_locselect.html} + +Location Edit ![](icon_tasker.png) +---------------------------------- + +This screen allows configuration of a [Location +Context](#loccontext.html). + +#### Map Display + +The map shows the location (base of the flag icon), radius and names of +all defined location contexts + +The location currently being defined has a yellow base, other location +contexts have a blue base. + +#### Map Controls + +- **long-click** on the map to select a location for this context. +- **long-click then drag** on the flag for the current location to + drag it + +Use the pull-down selector under the map to specify the radius for this +context. + +**Important:** if your radius is too small compared to the accuracy of +the fixes you are receiving, your context may never go active. If you +can\'t get a fix, try increasing the radius. Typically, a good radius +would be around twice the accuracy of the fixes you are receiving. + +If you have no internet available in order to retrieve the map tiles, +you can still use the **Get Fix** button (see below) to specify your +current location. + +#### Action Bar Options + +##### Grab (\'My Location\') Button + +Acquires a location fix using the enabled and available providers (make +sure the GPS Button is clicked first if you want to use GPS). + +Once a fix is acquired, the latitude, longitude and radius of this +location context are set according to it. If you reduce the radius after +a fix, Tasker may no longer accurately detect whether you are in or out +of the context. + +When trying to determine current location, Tasker will keep going with +fixes until they stop improving (e.g. as the GPS locks on to more +satellites). If you get impatient you can press the Get Fix button again +to stop the process (its label is changed to **Stop** while a fix is +being acquired). + +##### Address Menu Item + +Allows entry of an address for which this location context should be +active. + +#### Bottom Buttons + +##### Net Button + +The Net toggle button specifies whether to use the [Network](#net) +location provider to monitor for this location + +##### GPS Button + +The GPS toggle button specifies whether to use [GPS](#gps) to monitor +for this location (assuming it is available on the device). If GPS is +not used, the network will need to be available in order to query for +location fixes based on cell-towers or WiFi data. +[]{#activity_stateedit.html} + +State Context ![](icon_tasker.png) +---------------------------------- + +A *State Context* allows specification of the continuing state of a +software or hardware entity. + +The State Edit screen allows configuration of the state and its +parameters. + +#### State Name + +The name of the state is given at the top of the screen. Clicking on it +allows changing to another state type. + +Next to the name is a button to show help for the displayed state type +and its parameters. Be sure to check the help text if you have trouble +with a particular state. + +#### State Parameters + +##### General Parameters + +All states have parameters to specify more details about the state. + +Text parameters are treated as [pattern matches](#matching.html). + +##### Invert Parameter + +All states have an *invert* parameter, which specifies that the context +should become active when it would usually be inactive, and vice-versa. +[]{#eventcontext.html} + +Event Context ![](icon_tasker.png) +---------------------------------- + +An *Event Context* allows specification of an event which is needed to +activate its profile e.g. SMS received, screen has gone off. + +Events are a little different to other contexts because they are +*instantaneous* whereas other contexts usually have a duration. + +This means that it is nonsensical to specify that e.g. the screen +brightness should be set to X for the duration of the event, so Tasker +assumes that all [settings](#settings.html) actions should persist +beyond the event. + +For more information about specifying events, see the [Event Edit +screen](#activity_eventedit.html). + +#### Event Parameters + +When a task is triggered by an event, the parameters of the event that +ocurred are passed to the task so that it can make decisions based on +the event details. + +The parameters are passed in the [array](#arrays) *%evtprm*. + +The order of elements of the array have values which match the order of +the parameters of the event. + +Example: if an event\'s second parameter is an Application, %evtprm2 in +the launched task will be set to the label of the application which +triggered the event. + +[]{#activity_eventedit.html} + +Event Edit ![](icon_tasker.png) +------------------------------- + +This screen allows configuration of an [Event +Context](#eventcontext.html). + +#### Event Name + +The name of the event is given at the top of the screen. Clicking on it +allows changing to another event type. + +In the top right is a button to show help for the displayed event type. + +#### Priority + +Only present for relevant events. + +Selects the priority at which this event will be detected. An event can +be processed by other Tasker Profiles, other installed applications and +system processes. + +If priority is high, then this profile will be more likely to detect the +event before other processes, and vice versa. + +#### Stop Event + +Only present for relevant events. + +If checked, then once this profile has dealt with the event, other user +or system applications will no longer be able to see it. + +You can achieve different effects by combining *Priority* and *Stop +Event*. For instance, if you want to show a Tasker menu when the camera +button is pressed, you would set *Priority* **High** and check the *Stop +Flag*, because you do not want the camera application to appear +afterwards. + +#### Event Parameters + +Some events have paramaters to specify more details about the event. To +get help on particular parameters, click the question-mark icon at top +right. + +Text parameters are treated as [pattern matches](#matching.html). + +If you would like to make more complex comparions (e.g. mathematical +expressions), leave the event parameter blank and instead put a +[condition](#condition) on the first action of the task you execute with +the profile. + +[]{#tasks.html} + +Tasks ![](icon_tasker.png) +-------------------------- + +A task is simply a set of actions which are performed one after the +other. + +#### Named / Anonymous Tasks + +A task can be given a name. This allows: + +- the same task to be used in more than one profile +- easier identification of what the task does +- in the case of a [task widget/shortcut]{#app_widgets.html}, it + provides a label for the icon on the home screen. + +When creating a profile, widget or shortcut, often the associated task +will consist only of one or two actions which will not be reused. For +this case, Tasker allows you to create a task without a name (an +*Anonymous* task). + +#### Task Visibility + +Anonymous tasks are only visible when editing the profile that they are +associated with. + +Named tasks are visible on any screen that allows task editing. Any +changes made to the set of tasks in any screen is reflected in all the +other screens. + +#### Task Icon + +Each task has an associated icon, by default a question mark. The icon +is used + +- to represent the task on the home screen when it is used as a + [widget or shortcut]{#widgets.html} +- when the task is [turned into and app](#appcreation.html) +- for easier identification of the task within the Tasker UI + +#### Deleting Tasks + +Named tasks can only be deleted via the *Delete* button on the [Task +Edit](#activity_taskedit.html) screen. Unnamed tasks are deleted +automatically when the profile they are part of is deleted, or a named +task is selected for that profile. + +Named tasks cannot be deleted while a profile still refers to them. + +When a task is deleted that is referred to by a previously created named +widget or task, the widget will stop working. + +Android does not allow Tasker to automatically remove the widget from +the Home Screen. + +[]{#scheduling} + +#### Task Scheduling + +When there is a single task waiting to be executed, it\'s actions are +executed one-by-one until finished. + +When there are several tasks in the queue at once, it\'s important to +understand how they are handled: + +- only **one action** from the same [action group](#actiongroups) can + be executed at once to prevent interference +- the task in the queue with the **highest priority** goes first and + blocks lower priority tasks +- tasks with the **same priority** take turns executing an action + each, starting with the most recent addition to the queue **unless** + one task is a child of the other (started via [Perform + Task](#help/ah_run_task.html)), in which case the child executes + first. + +Task priority, 0 to 50 inclusive with 0 being lowest, is determined +according to whatever causes the task to run. + +- enter tasks run by profiles have the priority specified in Profile + Properties, the default is 5. +- exit tasks run by profiles have the priority specified in Profile + Properties **plus 1001**, the default is therefore 1016 +- tasks run by **widgets** or **shortcuts** can be set in Task + Properties when the widget/shortcut is created, the default is 7 +- tasks run from scene elements have priority **one more** than the + task which showed the scene +- tasks run from the **Test** button in the task edit screen have + priority 100 by default, long-click the play buttin to choose a + different one. + +A couple of guidelines are: + +- if you want a particular task to always interrupt other tasks that + may be executing, give it a high priority +- if you have a task that lasts for a while, you probably want to give + it a low priority so it doesn\'t block other tasks from being + executed. + +[]{#actiongroups} + +#### Action Groups + +Actions are divided into groups for scheduling based on how long the +action takes to execute and what it interferes with: + +- **Speech**: `Say, Say To File` +- **Javascript**: `Javascript` +- **Fix**: `Get Location` +- **Voice**: `Get Voice` +- **Proxy**: + `Display Brightness, Query Action, Photo, Photo Series, Photo Series Time` +- **Proxy Scene** Enter Key, Menu, Popup, Popup Task Buttons, Variable + Query +- **Other Scenes**: the name of the scene being shown +- **Normal**: all other actions + +#### Wait Actions + +`Wait` and `Wait Until` are special cases. The rules for handling them +are complicated and try to do the \'best thing\' dependent on the +situation. + +#### Same-Profile Tasks + +Tasks launched by the same profile by default always execute in the +order in which they are launched. Other tasks from the same profile +remain completely inactive until any previous task from the same profile +is complete. The main purpose of this rule is to correctly handle rapid +changes in a profile\'s activation state. + +This behaviour can be disabled by deselecting *Enforce Task Order* in +the Profile Properties dialog. + +##### Example + +This example demonstrates the effect of Enforce Task Order and shows +also how sub-tasks launched by [Perform Task](#help/ah_run_task.html) +are handled. + + Profile: Example + Enter Task: Enter1 + Perform Task, Enter2 + Exit Task: Exit1 + Perform Task, Exit2 + +**With** Enforce Task Order: + +Enter1 and Enter2 are both guaranteed to finish before either of Exit1 +or Exit2. Whether Enter1 or Enter2 finishes first depends on their +relative priority. Same for Exit1 and Exit2. All 4 tasks compete based +on priority against tasks from other profiles. Exit tasks have a higher +base priority so will finish before Enter tasks. + +**Without** Enforce Task Order: + +If the profile goes active and inactive quickly, Enter1, Enter2, Exit1 +and Exit2 will all compete purely on priority. Since Exit tasks have +higher base priority, Exit1 and Exit2 will probably finish first. + +[]{#collisions} + +#### Collisions + +Sometimes a task needs to be executed of which a copy is already +executing. This can happen quite often e.g. when a task widget button is +pressed twice quickly, or a task contains a Wait action or shows a +dialog. + +The way in which a collision is resolved is specified by the user. There +are 3 options: + +- the **new** task is ignored (the default) +- the **existing** task is aborted and the new one starts from its + first action. The current action of the previous task is finished if + it is already being carried out. +- both tasks run simultaneously + +Note that the last option can lead to several copies of a task all +running at once. + +[]{#stayawake} + +#### Behaviour When Device Off + +By default, after a few seconds of the screen being off Android will +power down the device and thus running tasks will be paused. + +In the Task Properties dialog, it can be specified that a task should +keep running. + +##### Dialogs + +An action that shows some kind of dialog (such as a lock screen, popup, +menu) blocks execution of any other action, even one of higher priority, +until it is completed. + +##### Wait / Wait Until + +These are exceptions. A wait action can be interrupted by another +task\'s action and will resume (if necessary) when the other task\'s +action is finished. + +#### Killing Tasks + +If you have a problem with a task that never ends, you can manually end +tasks with the **Kill** button in the Task Edit screen. +[]{#activity_taskedit.html} + +Task Edit ![](icon_tasker.png) +------------------------------ + +This dialog allows editing of the actions in a task, and various +properties of the task. + +#### Action List + +The main part of the screen is a list of the actions contained in the +currently selected task. + +- **Click** on an action to edit it +- **Long-click** on an action to enter multi-select mode and for + options +- **Click-and-drag** at the right hand side of the action to move it + around e.g. to the trash bin + +If a particular action is a [setting](#settings.html), that will be +indicated on the right-hand side of the action. + +##### Condition and Block Colours + +If an action has had a condition set for it, the condition is shown with +a red or green bar next to it; **green** indicates that the condition is +currently met (the action will execute), **red** indicates the opposite. +Of course, when the task is executed it could be that it changes things +so that the condition is then met. + +If an action is within an `If / End If` block it is displayed indented +with a red or green margin. The colours have the same significance as +for individual action conditions described above. + +If an action is within a [For loop](#for) it is displayed indented with +a **grey** margin. If the `For` action has a condition on it which is +not met, the margin will be **red** (because the actions in the loop +will never execute, like an `If / End If` block). + +#### Task Control Row + +Directly underneath the action list is a row of buttons with icons. + +##### Play/Step Buttons + +Run the task. + +The Play button will run the task right through till the end, the Step +button will run a single task each time it\'s pressed. + +During tasting, the current action is shown with an arrow and the next +task with a faded arrow. + +The success of each action is shown when it finishes with a green +(action OK) or red (action failed) circle. + +Tasks run via the Play or Step button have priority **10**. + +Long-click the Play or Test button to manually set the priority of the +task when it runs **during the test**. Please be aware that setting a +lower priority can result in interference from other tasks running which +are e.g. triggered by profiles. + +Tip: pressing the Step button while a task is playing will cause the +task to switch to stepping mode when the current action finishes. + +##### Add Action Button + +Add an action to the end of the task. When in multi-select mode, adds an +action after the current selected item, if only one item is selected. + +##### Task Properties + +Show extended properties for the task. Not visible in [Beginner +Mode](#beginner.html). + +##### Task Icon + +Shows the icon associated with the task. Clicking on it allows changing +of the icon. + +#### Menu Items + +##### Action Labels + +Toggle display of action labels (which are specified in the [Action +Edit](#activity_actionedit.html) screen). + +##### Param Names + +Toggle display of the name of each action parameter. + +##### Icons + +Toggle display of the setting/action indicator icon for each action. +[]{#activity_actionedit.html} + +Action Edit ![](icon_tasker.png) +-------------------------------- + +This screen allows configuration of a single action in a Task. + +#### General + +At top left is the name of the action. Tapping on this allows it to be +changed. + +Bottom-right is a help button. Please be sure to read the action help of +every action before you use it for the first time, there may be e.g. +device specific restrictions you should know about. + +#### Action Parameters + +A *parameter* gives extra detail about how the action is to be carried +out. + +##### Text Parameters + +- are sometimes optional: in that case the text *Optional* will appear + as a hint unless the entry box has already been filled in +- sometimes have a dialog to help you fill in a value which you can + access by clicking the magnifying glass icon next to them +- can have [variables](#variables.html) automatically inserted by + clicking the tag icon next to them. + +##### Numeric Slider Parameters + +Clicking the arrows icon next to numeric sliders allows you to specify +the number textually or use a [variable](#variables.html) for the +parameter instead, if the value will not be known until the action is +actually executed. + +##### *If* (Condition) Parameter + +*(most actions)* + +Allows specification of one or more conditions which must match if this +action is to execute. + +Single conditions consist of a *left-hand side* (usually a variable +name), an *operator* and a *right-hand-side* for example +`%number, Equals, 1` indicates that the action will be executed if the +variable %number has the value 1. + +When more than one condition is specified, they must be combined via +*And* (all conditions must be true), *Or* (at least one condition must +be true) or *Xor* (exactly one must be true). These \'combiners\' are +called *boolean operators*. + +Usually, 2 or 3 conditions will be combined with all *And*s or all +*Or*s, but in order to allow more complicated logic, Tasker also offers +*And* and *Or* in high-precedence versions. Of the 4 boolean operators +which are available, the selection goes from low to high precedence +ones. + +The higher the precedence of a boolean operator, the further to the +right it is shown. This enables the logical groups to be visualised. + +Examples: + +`True | False & True | False` is the same as +`( True | False ) & ( True | False )` so is **True**. + +`True & False | True & False` is the same as +`True & ( False | True ) & False` so is **False**. + +`True & False | True |+ False` is the same as +`True & ( False | ( True | False ) )` so is **True**. + +Note that the order of the conditions can mean that some conditions are +never evaluated. For instance, when two conditions are present and the +one above an *And* is **false** then the condition below it will never +be evaluated. This can be advantageous if the second condition takes +relatively more resources e.g. involves matching against a lot of text. + +Please see the section on [Flow Control](#flowcontrol.html) for more +information. + +##### *Continue Task After Error* Parameter + +*(selected actions only)* + +By default, if an action fails with an error (e.g. the user specified to +delete a file that doesn\'t exist) Tasker will stop the task immediately +and the remaining actions will never be executed. + +This parameter specifies that the task should continue even if this +action fails. + +In addition, if it\'s checked, errors will be logged in the system log +as diagnostics instead of errors and error popups will be surpressed. + +##### *Label* Parameter + +*(all actions)* + +A label for the action which is shown on the Task Edit screen. This +parameter could also be used to add comments to actions to help +understand how the task works. + +Labels are also used with `Goto` actions to jump from one part of the +task to another. + +#### Menu Options + +##### *Search* + +Search for and jump to a specified action. The entered term is searched +against action properties in the following order: + +1. the action number +2. the action label if present +3. the action name +4. the action description, including the action parameter contents + +The matching is case-insensitive. Searching starts from the current +action and wraps around. Only the header action ( + +If + +or *For*) of closed blocks is searched. + +[]{#scenes.html} + +Scenes ![](icon_tasker.png) +--------------------------- + +### Introduction + +A *scene* is a graphical user-interface consisting of a collection of +*elements* to which tasks can be attached to be run when the user +interacts with them e.g. by tapping them. + +Tasker uses scenes for things like popup dialogs, menus and getting +input from the user but scenes can actually be displayed by the user +whenever desired, meaning they can be used for things like creating +simple user-designed applications or showing extra controls over the top +of (selected) existing applications. + +Scenes are completely user-customisable via a drag-and-drop graphical +[editor](#activity_sceneedit.html). + +### Displaying Scenes + +#### Actions: `Enter Key, HTML Popup, Lock, Menu, Popup, Popup Task Buttons` and `Variable Query` + +These actions use a **built-in scene** with the same name as their +action. After creating a task with such an action, the associated scene +can be found under the **Scenes** tab on the main Tasker screen. That +scene can be edited so that e.g. all `Popup` actions have the same style +because they all use the same scene. + +The parameters specified in the action are applied to the scene before +it is show. For instance, if the scene has a *Title* element it will be +set to the title specified in the action and the scene resized +appropriately. + +It might be desirable to have a different style for e.g. some `Popup` +actions, in which case: + +1. clone the built-in scene long-clicking on it in the **Scenes** tab +2. edit the clone to change the contents +3. in a `Popup` action, specify that the cloned scene should be used by + clicking on the **Layout** parameter in the action edit screen. + +#### Scene Category Actions: `Create Scene, Show Scene, Hide Scene, Destroy Scene` + +These allow a completely free hand over when a scene should be displayed +and it\'s life-cycle. They all act on scenes pre-designed in the +**Scenes** tab. + +Usually, only `Show Scene` and `Destroy Scene` will be used, however +sometimes it\'s useful for a scene to be created but not visible to the +user: + +- by hiding a scene instead of completely destroying it, the settings + of the elements are retained for next time it is shown +- the values of the elements in the scene can be changed to track + certain events so that the scene can be immediately displayed when + required without any configuration + +### Scene Elements + +Each scene is comprised of a number of elements. + +An element has three main components: + +#### Geometry + +It\'s size and position on the screen. An element\'s geometry is +specified in the [scene editor](#activity_sceneedit.html). + +#### Content + +How it looks on the screen. + +Specified under the **UI** tab in the element editor. Some elements also +have a Background tab. A Menu element has an additional Items tab. + +#### Event Tasks + +What should happen when the user interacts with the element. + +Specified under the right-most tabs after clicking on the element in the +element editor. There are different events depending on the type of +element. For instance, a Button has tap and long-tap events while a +Slider has a value-set event. + +Event tasks are run at priority one higher than the task which displayed +the scene + +Local variables set by event tasks are visible to all tasks in the same +scene. + +### Scene Element Actions + +In the **Scenes** action category, there are several actions for setting +the properties of scene elements. You can use these for a wide variety +of purposes e.g. + +- when a slider value is set, change the zoom of an associated map + element +- set the size of an element depending on current light level +- animate elements around a scene + +Note that actions that affect scene elements can only be used when the +scene has already been created (via `Create Scene` or `Show Scene`). The +scene does not have to be visible. + +[]{#activity_sceneedit.html} + +Scene Edit ![](icon_tasker.png) +------------------------------- + +The scene editor is used for designing custom scenes. + +The editor consists of three areas: + +### Display Area + +The main part of the editor, where the position and size of elements are +arranged. The display area has two modes dependent on the setting of the +magnifying glass icon in the corner. + +#### Preview Mode + +This mode shows the scene as it will appear when displayed. + +- Click-and-drag on the **edge** of the scene to resize it + +#### Editing Mode + +This mode is zoomed to make editing easier. + +- **Long-click** on an **empty** area to create a new element + positioned there +- **Long-click** on an **element** to get options for the element +- **Click** on an **element** to edit it. +- **Click-and-drag** on the **centre** of an element to move it +- **Click-and-drag** on the **edge** of an element to resize it + +When moving and resizing, the sides of elements are snapped to a grid to +make alignment easier. The grid size is unique to each scene and can be +changed via **Menu / Grid Size**. + +### Tool Bar + +#### Touch Mode + +There are four touch modes which decide the effect of taps on the +display area. *Normal Mode* is described above. *Edit Mode* is the same +as *Normal Mode* except that all controls except the Touch Mode selector +are hidden to allow access to small controls along the scene edges. +*Move Mode* is intended to make it easier to reposition elements. +*Resize* mode is for making resizing easier. + +#### Element Picker + +Allows selection of an element by name. This is most useful when an +element is difficult to directly click on due to other elements or +because it\'s very small. + +Both short and long clicks on the element names behave the same as short +and long clicks on the element itself. + +#### Undo + +Allows undo of all operations, up to 20 steps in the past. + +#### New Element + +Create a new element in the **middle** of the scene. Useful if the scene +is already cluttered with a lot of elements so there is no free space. + +### Menu Options + +#### Background Colour + +A complex background can be set by long-tapping an element and +specifying it as the [background element](#back). If a uniform colour is +sufficient, it can also be specified with this menu option. + +However, there is a special case where it\'s a good idea to specify a +background colour even if you already have a background element. A scene +is resized to fit the container into which it\'s placed, but in some +cases (e.g. when it is shown as a full screen activity) there will be +margins left on one side of the container because the *aspect ration* of +the scene (the relative size of its width and height) of a scene is +never changed. In such a case, the margins are coloured with the +background colour specified here. + +### Element Long-Click Options + +[]{#back} + +#### Set Background + +An element which is set as the scene background is resized to always +fill the whole scene and interferes less with selection of other +elements. To reverse this, long-tap on it and select **Set Foreground**. + +#### Pin + +When an element is positioned satisfactorily, it can be pinned to make +it easier to select and manipulate other elements. To reverse this, +long-tap on it and select **Unpin**. + +#### Set Depth + +Each element has a particular depth which is unique to it. Deeper +elements are obscured by shallower elements which overlap them. + +### Orientation + +The geometry (**position** and **size**) of each element can be +configured independently for portrait and landscape display orientations +by rotating the device to the desired orientation in the editor. + +If no geometry is configured for a particular orientation when the scene +is displayed, Tasker will attempt to fit the elements into the scene +based on the geometry of the elements in the other orientation. + +[]{#element_button.html} + +Scene Element: Button ![](icon_tasker.png) +------------------------------------------ + +#### About + +A standard Android button enhanced to allow display of an icon, text or +both. + +#### Parameter: Position + +If both a *Label* and *Icon* are specified, the *Position* parameter +refers to the position of the *Label*. The *Icon* is then placed +opposite the *Label*. + +#### Events + +- [Tap, Long Tap](#tap) + +#### Related Actions + +- [Element Image](#help/ah_scene_element_image.html) +- [Element Text](#help/ah_scene_element_text.html) +- [Element Text Colour](#help/ah_scene_element_text_colour.html) +- [Element Position](#help/ah_scene_element_position.html) +- [Element Focus](#help/ah_scene_element_focus.html) +- [Element Size](#help/ah_scene_element_size.html) +- [Element Visibility](#help/ah_scene_element_visibility.html) +- [Element Depth](#help/ah_scene_element_depth.html) +- [Test Element](#help/ah_scene_element_test.html) + +#### See Also + +The [Element Editor](#activity_elementedit.html) screen. +[]{#element_checkbox.html} + +Scene Element: CheckBox ![](icon_tasker.png) +-------------------------------------------- + +#### About + +A standard Android checkbox to indicate e.g. an item selection state. + +#### Events + +- [Change](#checkchange) + +#### Related Actions + +- [Element Value](#help/ah_scene_element_value.html) +- [Element Focus](#help/ah_scene_element_focus.html) +- [Element Position](#help/ah_scene_element_position.html) +- [Element Size](#help/ah_scene_element_size.html) +- [Element Visibility](#help/ah_scene_element_visibility.html) +- [Element Depth](#help/ah_scene_element_depth.html) +- [Test Element](#help/ah_scene_element_test.html) + +#### See Also + +The [Element Editor](#activity_elementedit.html) screen. +[]{#element_doodle.html} + +Scene Element: Doodle ![](icon_tasker.png) +------------------------------------------ + +#### About + +A *Doodle* is an image created by the user with a simple finger-painting +screen. + +Click the *Doodle* parameter to edit the doodle. + +Doodles are stored on external storage in the directory +`/sdcard/Tasker/cache/doodles` in case they are masterpieces which +demand publishing. + +#### Events + +- [Tap, Long Tap](#tap), +- [Stroke](#stroke) + +#### Related Actions + +- [Element Position](#help/ah_scene_element_position.html) +- [Element Size](#help/ah_scene_element_size.html) +- [Element Focus](#help/ah_scene_element_focus.html) +- [Element Visibility](#help/ah_scene_element_visibility.html) +- [Element Depth](#help/ah_scene_element_depth.html) +- [Test Element](#help/ah_scene_element_test.html) + +#### See Also + +The [Element Editor](#activity_elementedit.html) screen. +[]{#element_image.html} + +Scene Element: Image ![](icon_tasker.png) +----------------------------------------- + +#### Events + +- [Tap, Long Tap](#tap) +- [Stroke](#stroke) + +#### Related Actions + +- [Element Image](#help/ah_scene_element_image.html) +- [Element Focus](#help/ah_scene_element_focus.html) +- [Element Position](#help/ah_scene_element_position.html) +- [Element Size](#help/ah_scene_element_size.html) +- [Element Visibility](#help/ah_scene_element_visibility.html) +- [Element Depth](#help/ah_scene_element_depth.html) +- [Test Element](#help/ah_scene_element_test.html) + +#### See Also + +The [Element Editor](#activity_elementedit.html) screen. +[]{#element_shape.html} + +Scene Element: Oval / Rectangle ![](icon_tasker.png) +---------------------------------------------------- + +#### About + +Shape elements are intended mostly for decoration but can also be used +as invisible \'launchpads\' for e.g. stroke events. + +#### Events + +- [Tap, Long Tap](#tap) +- [Stroke](#stroke) + +#### Related Actions + +- [Element Focus](#help/ah_scene_element_focus.html) +- [Element Position](#help/ah_scene_element_position.html) +- [Element Size](#help/ah_scene_element_size.html) +- [Element Visibility](#help/ah_scene_element_visibility.html) +- [Element Depth](#help/ah_scene_element_depth.html) +- [Test Element](#help/ah_scene_element_test.html) + +#### See Also + +The [Element Editor](#activity_elementedit.html) screen. +[]{#element_map.html} + +Scene Element: Map ![](icon_tasker.png) +--------------------------------------- + +#### About + +A *Map* element is a view onto the same kind of map window used by +Google Maps but is much more automateable than the standalone app. + +Map elements cannot appear in Overlay scenes. + +When shown with the display type *Dialog, Dim Behind* or *Dialog, Dim +Behind Heavy* the map will also be dimmed starting with Tasker 4.5, an +unfortunate side-effect of the dimming method. + +#### Related Actions + +- [Element Add GeoMarker](#help/ah_scene_element_add_geomarker.html) +- [Element Delete + Geomarker](#help/ah_scene_element_delete_geomarker.html) +- [Element Map Control](#help/ah_scene_element_map_control.html) +- [Element Focus](#help/ah_scene_element_focus.html) +- [Element Position](#help/ah_scene_element_position.html) +- [Element Size](#help/ah_scene_element_size.html) +- [Element Visibility](#help/ah_scene_element_visibility.html) +- [Element Depth](#help/ah_scene_element_depth.html) +- [Test Element](#help/ah_scene_element_test.html) + +#### Events + +- [Tap, Long Tap](#tap) + +#### See Also + +The [Element Editor](#activity_elementedit.html) screen. +[]{#element_menu.html} + +Scene Element: Menu ![](icon_tasker.png) +---------------------------------------- + +#### About + +A menu displays a variable selection of items and can have a separate +action, text and icon defined for each item in the list. + +#### Parameter: Source + +Items can either be filled manually or from a variable array. In the +case of an array, the list shows all the items starting at the first +index; %var(1) %var(2) etc. + +In the case of manual specification, click on the *Items* tab in the +element editor to specify the items. + +#### Parameter: Selection Mode + +There are three selection modes: + +- single: tapping an item deselects any other item selected +- multi: several items can be selected at the same time +- none: tapping an item never selects it + +Selected items are highlighted. There are two ways to find out the +selected items: + +- assign a task under the **Item Tap** element event tab. Every time + an item is tapped, the selected items are available in the local + variable **%select\_indices** +- query the selected items at any time using the action + `Element Get Value` + +#### Parameter: Item Layout + +Specifies how each item within the list will be displayed. Each item has +exactly the same layout. To change the layout, click on it. Each Menu +element has it\'s own unique item layout. + +There are two pre-defined layouts you can choose from (click the +magnifying glass icon). \'Icon and Text\' is the default. + +#### Events + +- [Item Tap, Item Long Tap](#tap) + +#### Related Actions + +- [Menu](#help/ah_menu.html)\ + allows easy display of a dialog with a title and showing a single + menu element.\ + When using the Menu action, items are configured in the action + itself rather than in the Menu element. +- [Element Position](#help/ah_scene_element_position.html) +- [Element Size](#help/ah_scene_element_size.html) +- [Element Visibility](#help/ah_scene_element_visibility.html) +- [Element Depth](#help/ah_scene_element_depth.html) +- [Test Element](#help/ah_scene_element_test.html) + +[]{#element_picker.html} + +Scene Element: Number Picker ![](icon_tasker.png) +------------------------------------------------- + +#### About + +Allows selection of a numeric value from a specified range. Above and +below the selected number the element can be long-clicked to advance the +number series, or the number can be scrolled or flung up or down by +touch. + +#### Events + +- [Value Selected](#value) + +Note that the Value Selected event will only fire when scrolling has +**finished** i.e. when the user has lifted their finger and the Number +Picker has come to rest. + +In contrast, long-clicking will produce an event for each number that is +cycled through. + +#### Related Actions + +- [Element Value](#help/ah_scene_element_value.html) +- [Element Focus](#help/ah_scene_element_focus.html) +- [Element Position](#help/ah_scene_element_position.html) +- [Element Size](#help/ah_scene_element_size.html) +- [Element Visibility](#help/ah_scene_element_visibility.html) +- [Element Depth](#help/ah_scene_element_depth.html) +- [Test Element](#help/ah_scene_element_test.html) + +#### See Also + +The [Element Editor](#activity_elementedit.html) screen. The [Slider +Element](#element_slider.html) screen. []{#element_slider.html} + +Scene Element: Slider ![](icon_tasker.png) +------------------------------------------ + +#### About + +A standard Android \'seek bar\' enhanced to allow specification of the +thumb icon and display indicators for the min, max and current values. + +#### Events + +- [Value Selected](#value) + +#### Related Actions + +- [Element Value](#help/ah_scene_element_value.html) +- [Element Focus](#help/ah_scene_element_focus.html) +- [Element Image](#help/ah_scene_element_image.html) +- [Element Position](#help/ah_scene_element_position.html) +- [Element Size](#help/ah_scene_element_size.html) +- [Element Visibility](#help/ah_scene_element_visibility.html) +- [Element Depth](#help/ah_scene_element_depth.html) +- [Test Element](#help/ah_scene_element_test.html) + +#### See Also + +- [Element Editor](#activity_elementedit.html) screen. +- [Number Picker Element](#element_picker.html) screen. + +[]{#element_spinner.html} + +Scene Element: Spinner ![](icon_tasker.png) +------------------------------------------- + +#### About + +A spinner allows selection of a single item from a menu. Only the +currently selected item is displayed. When tapped, the menu is shown, +when an item is selected, the menu is hidden again. + +#### Parameter: Source + +Items can either be filled manually or from a variable array. In the +case of an array, the list shows all the items starting at the first +index; %var(1) %var(2) etc. + +In the case of manual specification, click on the *Items* tab in the +element editor to specify the items. The default (initially showing +item) is selectable via the checkboxes on the left. + +Note that by default, a spinner is text only. To show also icons, +long-click the icon element in the Item Layout (see below) and select +*Show*. + +#### Parameter: Item Layout + +Specifies how each item within the list will be displayed. Each item has +exactly the same layout. To change the layout, click on it. Each Spinner +element has it\'s own unique item layout. + +#### Parameter: Popup Background Colour + +Specifies the background colour of the window which displays the +possible spinner values when the spinner is clicked. + +#### Events + +- [Item Select](#itemselect) + +#### Related Actions + +- [Element Focus](#help/ah_scene_element_focus.html) +- [Element Position](#help/ah_scene_element_position.html) +- [Element Size](#help/ah_scene_element_size.html) +- [Element Visibility](#help/ah_scene_element_visibility.html) +- [Element Depth](#help/ah_scene_element_depth.html) +- [Element Value](#help/ah_scene_element_value.html) +- [Test Element](#help/ah_scene_element_test.html) + +[]{#element_text.html} + +Scene Element: Text ![](icon_tasker.png) +---------------------------------------- + +#### About + +Displays non-editable text for labels etc. + +#### Parameter: Position + +Where to place the text within its box + +#### Parameter: Text Width Scale + +A horizontal scaling factor to squash up (negative values) or stretch +(positive values) the text. + +#### Parameter: Font + +Specifies a custom font file to use for the text instead of the system +default. Many thousands of free font files (with the filename ending in +`.ttf` are available for download on the Internet. + +#### Parameter: Vertical Fit Mode + +What to do when the height of the text to display is greater than the +height of the element. + +#### Parameter: Text Format + +Specifies how the text should be displayed. + +- *Plain Text*\ + just show the text as-is +- *Text With Links*\ + things that look like links are clickable (though not in the scene + editor) e.g. URLs, email addresses, phone numbers +- *HTML*\ + interpret the text as a piece of HTML. Only simple tags are + interpreted and no images are displayable. + +#### Events + +- [Tap, Long Tap](#tap) +- [Stroke](#stroke) + +#### Related Actions + +- [Element Text](#help/ah_scene_element_text.html) +- [Element Text Colour](#help/ah_scene_element_text_colour.html) +- [Element Border](#help/ah_scene_element_border.html) +- [Element Back Colour](#help/ah_scene_element_background_colour.html) +- [Element Focus](#help/ah_scene_element_focus.html) +- [Element Position](#help/ah_scene_element_position.html) +- [Element Size](#help/ah_scene_element_size.html) +- [Element Visibility](#help/ah_scene_element_visibility.html) +- [Element Depth](#help/ah_scene_element_depth.html) +- [Test Element](#help/ah_scene_element_test.html) + +#### See Also + +The [Element Editor](#activity_elementedit.html) screen. +[]{#element_textedit.html} + +Scene Element: TextEdit ![](icon_tasker.png) +-------------------------------------------- + +#### About + +A standard Android box for text entry. + +TextEdit elements cannot appear in Overlay scenes. + +#### Parameter: Text + +This is the **initial** text to show in the element, with any variables +replaced. + +Note that if *Text* contains a variable, any changes in the variable +value once the element have been shown will **not** be reflected in the +visible contents of the text box. The reason for this limitation is that +the user can change the text box contents by typing at any time so it is +not possible to track where the variable contents should be, or even if +they are still there at all. + +#### Parameter: Position + +Where to place the text within its box + +#### Parameter: Text Width Scale + +Horizontal scaling factor to squash up (negative values) or stretch +(positive values) the text. + +#### Events + +#### Related Actions + +- [Element Text](#help/ah_scene_element_text.html) +- [Element Text Colour](#help/ah_scene_element_text_colour.html) +- [Element Border](#help/ah_scene_element_border.html) +- [Element Back Colour](#help/ah_scene_element_background_colour.html) +- [Element Focus](#help/ah_scene_element_focus.html) +- [Element Position](#help/ah_scene_element_position.html) +- [Element Size](#help/ah_scene_element_size.html) +- [Element Visibility](#help/ah_scene_element_visibility.html) +- [Element Depth](#help/ah_scene_element_depth.html) +- [Test Element](#help/ah_scene_element_test.html) + +#### See Also + +The [Element Editor](#activity_elementedit.html) screen. +[]{#element_toggle.html} + +Scene Element: Toggle ![](icon_tasker.png) +------------------------------------------ + +#### About + +A button with two states with an indicator light and a label for each +state. + +#### Events + +- [Change](#checkchange) + +#### Related Actions + +- [Element Value](#help/ah_scene_element_value.html) +- [Element Focus](#help/ah_scene_element_focus.html) +- [Element Position](#help/ah_scene_element_position.html) +- [Element Size](#help/ah_scene_element_size.html) +- [Element Visibility](#help/ah_scene_element_visibility.html) +- [Element Depth](#help/ah_scene_element_depth.html) +- [Test Element](#help/ah_scene_element_test.html) + +#### See Also + +The [Element Editor](#activity_elementedit.html) screen. +[]{#element_web.html} + +Scene Element: Web ![](icon_tasker.png) +--------------------------------------- + +#### About + +A *Web* element is like a browser window. + +#### Parameters: Mode / Source + +These parameters determine how the content for the WebView is to be +acquired. + +- *URI*: the *Source* parameter refers to a URI (e.g. http://) from + which the WebView should retrieve content. +- *File*: the *Source* parameter contains a local file path from which + the WebView should retrieve content. +- *Direct*: the *Source* parameter directly specifies the HTML and/or + JavaScript content to load + +#### Parameter: Allow Phone Access + +If checked, the content in the WebView is allowed access to local device +files, data stores, and can run JavaScript, including Tasker\'s +[JavaScript Interface functions](#javascript.html). + +This is a very powerful feature, since it allows a WebView to present a +complex and highly functional interface, but should only be enabled if +you entirely trust the source of the specified content. + +Note that references to local files must be absolute (include the +directory) even when the WebView source is specified as a file e.g. +`/sdcard/myfiles/scripts.js` + +#### Parameter: Self Handle Links + +If checked, links will be handled by the WebView itself, otherwise they +will be passed to the system for handling e.g. by the default web +browser. + +#### Parameter: Support Popups + +If this parameter is **not** checked, HTML elements which generate a +popup window, for instance selection elements in forms, will crash the +scene when they are activated. + +If this parameter **is** checked, when the scene is hidden and reshown, +some of its state will be lost e.g. which part of the page was being +displayed, zoom level. + +#### Events + +#### Related Actions + +- [Element Web Control](#help/ah_scene_element_web_control.html) +- [Element Focus](#help/ah_scene_element_focus.html) +- [Element Position](#help/ah_scene_element_position.html) +- [Element Size](#help/ah_scene_element_size.html) +- [Element Visibility](#help/ah_scene_element_visibility.html) +- [Element Depth](#help/ah_scene_element_depth.html) +- [Test Element](#help/ah_scene_element_test.html) + +#### See Also + +The [Element Editor](#activity_elementedit.html) screen. +[]{#activity_elementedit.html} + +Scene Element Edit ![](icon_tasker.png) +--------------------------------------- + +Allows configuration of the properties of a scene element. The different +types of property are divided into tabs. + +- [UI](#ui) +- [Items](#items) +- [Background](#background) +- [Event](#event) + - [Change](#checkchange) + - [Focus](#focus) + - [Tap, Long Tap](#tap) + - [Item Select](#itemselect) + - [Value Selected](#value) + - [Item Tap](#itemtap) + - [Stroke](#stroke) + - [Text Changed](#text) + - [Link Tap](#linktap) + - [Page Loaded](#pageloaded) + - [Video](#video) + +Not all elements have all tabs. + +[]{#ui} + +### UI + +For the most part, configures the visual style of the element. +[]{#items} + +### Items + +Only relevant to Menu and Spinner elements. + +Each row configures an item in the menu/spinner. Starting from the left, +the controls are: + +- **selection checkbox**\ + this is only present when *Selection Mode* is set to **Single** or + **Multi**. It stipulates whether the item will be shown as selected + when the menu is displayed. +- **icon button**\ + the icon to show for the item. If you don\'t want to show an icon, + hide the icon element in the Layout parameter in the UI tab +- **label text**\ + the label to show for the item. If you don\'t want to show a label, + hide the label element in the Layout parameter in the UI tab +- **action button**\ + an action to run when the item is tapped + +To add an item, click the plus button at the bottom of the screen. Items +can be rearranged and deleted by click-and-dragging at the right hand +side. + +[]{#background} + +### Background + +Configures a rectangle shape to be used as the background for the +element when it is displayed. The background will be stretched to fit +the size of the element. + +If you want to use an image for a background, create a separate Image +element and place it underneath. []{#event} + +### Event Tabs + +Event tabs stipulate what Tasker should do when the user interacts with +the element in some way. When the scene is showing, the event will also +occur if an action (probably Element Value) sets the element. + +Most events consist only of a task to specify but some allow a filter +specification so that the task only runs if the event matches the +filter. + +To help the task to decide what to do with the event and to allow a +single task to handle many different events if desired, Tasker sets +certain local variables which give specific information about it. The +variables are easily accessible by clicking the usual variable tag icon +in any action in the task. + +The following variables are available in all such tasks: + +- **%scene\_name**\ + the name of the scene containing the element +- **%element\_name**\ + the name of the element that the user interacted with (e.g. Button1) +- **%element\_type**\ + the type of element (e.g. Button) +- **%event\_type**\ + the name of the event (e.g. Tap) + +[]{#text} + +#### Text Changed + +Elements: *TextEdit* + +This event is triggered whenever the text changes e.g. because a letter +key has been pressed while the element had focus. + +- **%new\_val**\ + the new text +- **%old\_val**\ + the old text + +Text entry is buffered so that it may be up to 1 or 2 seconds before new +input is seen, and that input may include several accumulated changes. + +[]{#checkchange} + +#### Change + +Elements: *CheckBox, Toggle* + +- **%new\_val**\ + the new state of the element (*on* or *off*) +- **%old\_val**\ + the last state (*on* or *off*) + +[]{#focus} + +#### Focus + +This event is triggered when the element gains or loses focus, probably +because the user has tapped it or another focusable element. + +Elements: *TextEdit* + +- **%focused**\ + whether the element now has focus (*true*) or not (*false*) + +[]{#tap} + +#### Tap, Long Tap + +Elements: *Button, Doodle, Image, Map, Oval, Rectangle, Text* + +In a *Map* element, the following variables are available: + +- **%coord**\ + the latitute,longitude of the tapped location on the map +- **%label**\ + the label of the tapped GeoMarker (if any). You can add GeoMarkers + to a Map element with the action Scene / Element Add GeoMarker + +[]{#value} + +#### Value Selected + +Elements: *Number Picker, Slider* + +- **%new\_val**\ + the new value of the element (e.g. 50) +- **%old\_val**\ + the last selected value (e.g. 43) + +[]{#itemtap} + +#### Item Tap, Item Long Tap + +Elements: *Menu* + +- **%select\_indices**\ + a comma-separated list of currently selected items in the list (e.g. + 3,4) +- **%select\_labels**\ + a comma-separated list of the labels of currently selected items in + the list (e.g. Blue,Yellow) +- **%tap\_index**\ + the index of the item that was tapped to cause this event (e.g. 3) +- **%tap\_label**\ + the label of the item that was tapped to cause this event (e.g. + Blue) + +[]{#stroke} + +#### Stroke + +Elements: *Doodle, Image, Oval, Rectangle, Text* + +A stroke has two filter parameters. + +- **Direction**\ + the direction from the start point of the stroke to the end point +- **Length**\ + minimum distance in (approximate) pixels from the start point of the + stroke to the end point + +If either of these parameters don\'t match the event, the task will not +run. + +- **%stroke\_dir**\ + Direction, as described above +- **%stroke\_len**\ + Length, as described above + +[]{#itemselect} + +#### Item Select + +Elements: *Spinner* + +Occurs when a **new** item is selected. + +- **%tap\_index**\ + the index of the item that was selected +- **%tap\_label**\ + the label of the item that was selected + +[]{#linktap} + +#### Link Tap + +Elements: *WebView* + +A Link Tap has two filter parameters: + +- **URL**\ + the URL of the tapped link. If entered, the tapped URL must + [match](#matching.html) the entry (e.g. http://\*.fruit.com) for the + task to run +- **Stop Event**\ + whether to stop the WebView following the link + + + +- **%url**\ + URL as described above + +[]{#pageloaded} + +#### Page Loaded + +Elements: *WebView* + +- **%url**\ + the URL of the page (e.g. http://i.hate.fruit/except/mangos.html) + +[]{#video} + +#### Video + +Elements: *Video* + +Occurs when the state of the video playback changes. + +- **%event\_subtype**\ + the type of the video event, possible values being: *Prepared, + BufferStart, BufferEnd, RenderStart, Lagging, Finished* + +Note that the **Finished** event will never occur if the Video element +has the `Loop` parameter checked. + +[]{#androidpowermanagement.html} + +Android System Power Management ![](icon_tasker.png) +---------------------------------------------------- + +Starting with Android 5.0, many devices will act aggressively to try and +save system battery power. Unless certain steps are taken, Tasker may +not function as expected, either because Android is not sending it the +needed signals in order to save power or because Android is even killing +Tasker. + +A commonly noticed symptom is that profiles with Time contexts don\'t +activate or deactivate at the expected time. + +### Tasker Run In Foreground Preference + +Make sure that `Menu / Prefs / Monitor / General / Run In Foreground` is +**checked**. + +### Tasker Reliable Alarms Preference (Android 5.0+) + +In `Menu / Prefs / Monitor / General / Use Reliable Alarms`, make sure +**When Off** or **Always** is selected. + +If **Never** is selected, Android may group alarms together so they go +off too late. On some devices, Android may even kill Tasker at times if +**Never** is selected. + +### Android Battery Optimization Setting + +If you have reliability problems, Tasker might need to be whitelisted so +that it is not *battery-optimized* by Android. + +###### Vanilla Android Devices (Android 6.0+) + +The location of the setting may vary per device, but a common method is +to launch the *Android Settings* app, select **Apps**, click the cog +icon top-right, then **Battery optimization**. Click **All apps**, then +Tasker, then **Don\'t optimize**. + +On a rooted device, it may be possible to change the battery optimiation +parameters depending on the functionality you need from Tasker. An +example app for this purpose is +[Naptime](https://play.google.com/store/apps/details?id=com.franco.doze). + +###### Samsung (Android 5.1.1+) + +Some Samsung devices have a *Smart Manager* app. Launch the app, press +the battery quarter of the screen, under **App optimisation** press +**DETAIL** where you can adjust the settings for each app. It\'s +advisable to disable this for Tasker if you are having reliablity +problems. + +###### MIUI 7 + +Launch Settings app, select Additional settings -\> Battery & +performance -\> Manage apps battery usage -\> OFF []{#appcreation.html} + +App Creation ![](icon_tasker.png) +--------------------------------- + +- [Introduction](#intro) +- [Hello World Example](#example) +- [App Configuration](#config) +- [Signing](#sign) +- [Target Device Requirements](#target) +- [Miscellaneous](#misc) +- [FAQ (External + Link)](http://tasker.dinglisch.net/faq-appcreation.html) + +[]{#intro} + +### Introduction + +Tasker allows creation of completely standalone apps (APK files) which +have no requirement for Tasker to be installed on the device they\'re +used on. + +The intention is to allow people to create their own apps for fun, for +sale or just to share with friends. Or if you are concerned about all +the permissions Tasker needs you can create an app that has only the +permissions you require! + +App creation is uncomplicated and takes only a few seconds once you\'re +setup. + +To create apps, you need the following on **your** device (not +necessarily on the device(s) the app will run on): + +- Android 2.3+ +- *Tasker App Factory* (free, see below) +- a device with an *ARM* or *x86* processor (the vast majority of + devices have one of those) + +App creation is accessed by long-clicking on a project (**not** the base +project) or task and selecting **Export** then **As App**. Any linked +resources needed (e.g. other tasks, images) are included as part of the +new app. + +To export anything except a single task, you need to create a project +and put anything you wish to export in the project. + +[]{#example} + +### Hello World Example + +Let\'s make a simple app that just pops up **Hello World!** when it\'s +launched. This example assumes that you are in *Beginner Mode*, please +make sure that `Menu / Prefs / UI / Beginner Mode` is checked before you +start. + +#### 1. Create A Task + +- **make a new task**\ + click on the Tasks tab then click **+** to add a new task. Give it a + name *Hello World*. +- **give the task an icon**\ + long-click on the colourful icon in the bottom right and pick any + icon +- **add the Popup action**\ + click **+** in the bottom left to add an action, select category + **Alert** and then action **Popup**. Fill in **Hello World!** in the + *Text* parameter, then click the accept button bottom left to accept + the action, then again to accept the task. +- **ask Tasker to create an app**\ + long-click on the task you just made, select **Export** then **As + App**. A popup appears mentioning a Missing App. + +#### 2. Install Tasker App Factory + +To generate apps, Tasker needs a free helper app called *Tasker App +Factory*. It\'s available on Play Store and from the Tasker website. + +Click the accept button on the popup to install the helper app. + +#### 3. App Generation + +Tasker should now start generating your app, which will take maybe 12 +seconds depending on your device. + +If all goes well, the Cancel button will turn into an OK button meaning +your app is ready! + +We can\'t run the app straight away though because it hasn\'t been +installed. Click on the rightmost bottom button with the Android icon to +ask Android to install your app. + +Once Android is done installing, you can click it\'s **Open** button to +run the app, or you can simply go to the home screen and click on the +app\'s icon in the launcher. + +You should see a Hello World popup! + +[]{#config} + +### App Configuration + +When in Beginner Mode, and if you only have one task to install, Tasker +will make guesses about how to configure the resulting app. + +More usually, before an app is generated you will be presented with a +configuration screen which lets you specify various options for the new +app. + +[]{#sign} + +### App Signing + +Android requires that all apps be *signed* i.e. that they certify who +created them. By default, Tasker uses an automatically-generated +insecure certificate to sign apps and doesn\'t bother mentioning it. + +However, if you want to release an app via a public site (Play Store for +example), you will need to sign it with a proper (secure) certificate. +That\'s done so the site knows that it\'s you that\'s giving them the +app each time you submit a new version. + +Certificates are kept in a *keystore* which is protected with a +password. To generate a keystore with a secure certificate, use +`Menu / More / Developer Options / Create Certificate`. + +Once you\'ve generated the keystore, Tasker will often need to ask you +for the certificate password before app generation so that it can be +used to sign each new version of your app. + +If Android\'s backup service is enabled in Android settings, Tasker +makes a backup of the keystore there. + +Tasker also makes an automatic backup of the keystore to + + /sdcard/Tasker/factory/keystore.user + +when it is first created and when you backup your profile data with +`Menu / Data / Backup`. It\'s highly advisable to make a copy of that +file and keep it safe away from your device. + +[]{#target} + +### Target Device Requirements + +The device the child app is used on must meet the following +requirements: + +- the minimum SDK version specified in the Kid Config screen +- have hardware corresponding to features specified in the Kid Config + screen + +[]{#misc} + +### Miscellaneous + +#### Accessibility Service + +Android accessibility support changed in Android 4.1 (JellyBean). If +support is needed for accessibility services in 4.1+, the **Minimum +Android Version** in the child Configuration screen must be set to +**16** or higher. If support is required pre-4.1, it must be set to +**less than** 16. + +In other words, to support both pre- and post-4.1 devices, two APKs must +be generated. + +This applies to all features that rely on an Accessibility Service +(events *Notification, New Window, Button Widget Clicked, Notification +Click*, variables *%NTITLE, %WIN*, *App Context* from min version 20+) + +Google Play Store allows publication of APKs targetting different +Android versions under the same package name, however this has not been +tested by the developer of Tasker. + +#### Launch Task + +When the specified launch task runs in the child app, the following +local variables will be available to it: + +- *%launch\_data*: the data (URI) in the intent that caused the child + app to launch (often empty) + +#### Monitor Service + +Most child apps include a service which constantly monitors for events. +If you know that you don\'t need to monitor events anymore (in-between +app launches) you can use the *Disable* action in the Tasker category to +stop it. + +It will be automatically started again next time the app is launched. + +#### Widgets / Shortcuts + +- it\'s not possible in Android to auto-create widgets with any app +- it\'s not possible \*currently\* to offer the user child-app + widgets, that may be available in the future to some extent + +#### Memory Problems + +If you are having low memory problems during app generation, you can ask +the App Factory to use external storage for the generation process. See +`Menu / Prefs / More / Factory`. + +#### Preferences + +The new app does not take over any preferences from Tasker, all of the +preferences in the child app are in their default state, with a couples +of exceptions. + +Despite the misleading name, you can use the *Set Tasker Pref* action in +the *Tasker* category **in the child app** to change some of the +**child\'s** preferences when it is running. + +#### Available Tasker Features + +Obviously, the device the new app runs on may not have the same set of +available e.g. actions as the device the app is created on. + +The *Test* action in the *Misc* category allows you to check which +Tasker features are available at *run time* (when the app is being +used). + +#### Images + +Referenced images (even scene doodles and photos from internal storage) +are bundled in with the app. + +Tip: to include a dynamic image (e.g. which you download to a file path +via HTTP Get), put the image reference in a variable, and put the +variable in the relevant action. + +#### Plugins + +When the new app is launched, it checks that all referenced plugins are +installed on the device and prompts the user to install missing ones. + +Some plugins may not work on other devices if they themselves store +something about the action to be performed, since that data will not be +available on the other device. + +Plugin authors: see also +[here](http://tasker.dinglisch.net/plugins.html#gen). + +#### JavaScript actions + +Scripts referenced by a *JavaScript* action are packaged with the new +app and run directly from there. + +#### SL4A Scripts + +Scripts referenced in a *Run Script* action are packaged with the new +app and unpacked to `/sdcard/sl4a/scripts`, prefixed with the package +name, on first run. Tasker automatically inserts the +WRITE\_EXTERNAL\_STORAGE permission for that purpose. + +If SL4A is missing on the target device, the new app will prompt the +user to download when launched. + +If a new version of the app is reinstalled on the target device, the new +versions of the scripts will be written if the **length** has changed. + +#### Other External Components + +The following external components are also checked for on launch of the +new app where necessary: + +- Speech engines (*Say, Say After*) +- APNDroid (*Mobile Data APN*) +- Zoom (*Zoom* action category actions) +- apps for *3rd Party* actions +- apps for *3rd Party* events + +#### Maps + +The data for Maps is provided by Google and they require a *maps key* +(v2) for each developer that uses it. If you are using Map scene +elements in your app, you need a key from Google that can be included +with your app. + +Here are the steps to acquire a key: + +1. \[if necessary\] setup a [Google + Account](http://www.google.com/accounts/) +2. \[if necessary\] create a [developer + account](http://developer.android.com/distribute/index.html) +3. \[if necessary\] create a [signing keystore](#sign) +4. get the SHA1 fingerprint of your certificate: + `Menu / More / Developer Options / Certificate Checksum` +5. Create an [Google API + Project](https://developers.google.com/maps/documentation/android/start#create_an_api_project_in_the_google_apis_console) +6. Obtain the [Maps + key](https://developers.google.com/maps/documentation/android/start#obtain_a_google_maps_api_key) + +Enter the key in the App Configuration screen when generating your app. +Note that the box will only be presented if your app uses one or more +Map scene elements. + +Note that the device on which the created app is used needs Google\'s +Play Services APK installed, otherwise the map elements will not +function. + +#### Variables + +The new app is completely independent of Tasker, so it also does not +share any variable values. + +#### Permissions + +Tasker attempts to reduce the set of permissions required by the new app +to the smallest set required for the functionality it contains. For +example, no *Vibrate* permission will be requested if there is no +vibrate action used. + +The WAKE\_LOCK permission is unfortunately always required for technical +reasons. + +#### App Size + +Generated apps are minimally around 640K but are unlikely to be +significantly larger unless a lot of images are referenced. It\'s +possible that this minimum can be reduced in the future. + +#### Encryption + +Code for encryption is included in any app created by App Factory, +however if you don\'t use encryption features it\'s unlikely to be a +problem in terms of export restrictions. However, that is an opinion, it +is **not legal advice**. + +Note that code libraries for encryption are included with every Android +device. Tasker (and child apps) use these libraries to perform the +encryption, they do not contain encryption code themselves. + +Licence + +You are free to distribute and sell apps created by Tasker in any way +you wish. No licence fees to the developer of Tasker are necessary. It +would be courteous to reference Tasker and it\'s website +(http://tasker.dinglisch.net) somewhere in your new app if possible. + +Please note that use of images from some Ipacks in commercial software +is prohibited by the licence terms of the image creators. You will need +to contact the image designer to request their assent in such cases. +(the origin of an Ipack\'s images is displayed in the Ipack image +selection screen). + +[]{#app_widgets.html} + +Task / Shortcut Widgets ![](icon_tasker.png) +-------------------------------------------- + +The standard way of running a Tasker task is by attaching it to a +profile which performs it when the profile becomes active. However, +tasks can be directly assigned to icons on the home screen called +*Widgets* or *Shortcuts*. + +#### Standard Widgets / Shortcuts + +These consist of an icon (the Task icon) with a label (the Task name) +underneath, and look identical to the normal application icons in the +home screen. + +Clicking on the icon runs the associated Task. + +#### Task Timer Widgets + +This type consists of an icon and label, like the standard widgets, but +also has a countdown timer display which counts down Days, Hours, +Minutes and Seconds. + +When the timer expires (reaches 0) the associated Task is run. + +Tapping on the **icon** of the widget shows a configuration screen where +the timer can be configured. + +Tapping on the **timer section** of the widget will pause, restart or +reset the timer, depending on its current state. + +Note that the timer updates more rarely when it is still a long way from +expiry in order to minimize power usage. + +See Also: + +- action [Timer Widget Control](#help/ah_timer_widget_control.html) +- action [Timer Widget Set](#help/ah_timer_widget_set.html) +- action [Test Tasker](#help/ah_test_tasker.html) +- event [Timer Change](#help/eh_timer_change.html) + +#### Creating a Widget / Shortcut + +1. Click and hold in an empty space on the Android home screen, until a + dialog appears. +2. Select **Widgets** or **Shortcuts** +3. Select **Task** or **Task Timer** (Widgets only) +4. Pick an existing task or create a new one. When creating a new one, + if you do not expect to change the function of the widget/shortcut + select One-Time to avoid it cluttering your list of tasks. +5. Use the [Configuration Screen](#activity_widget_configure.html) to + configure what should happen when the icon is clicked (or the timer + expires, in the case of a Task Timer widget). Take care to select an + appropriate name and icon for the task, as these will appear on the + home screen. + +#### Changing a Widget / Shortcut + +The function of widgets or shortcuts created from one-time tasks cannot +be changed, it must be deleted and recreated. + +On the other hand, if you associate a normal named task with a widget or +shortcut then when the task is changed (via the Task Edit screen) the +function of the widget or shortcut also changes. + +There are also some actions which will change the appearance of any +widget: + +- *Tasker/Change Icon Set*: changes the icon of a set of widgets to a + different style. +- *Tasker/Set Widget Icon*: changes the icon of a particular widget +- *Tasker/Set Widget Label*: changes the label of a particular widget + +The latter two you could use to visually show the status of something +e.g. WiFi. + +#### Deleting a Widget / Shortcut + +Click and hold on the icon in the Android home screen until the dustbin +icon appears. Drag the widget or shortcut icon to the dustbin icon and +release. + +[]{#diff} + +#### Differences Between Widgets and Shortcuts + +##### Advantages of Shortcuts + +- they can be created in some places that widgets can\'t e.g. in home + screen folders +- their layout probably better matches the default launcher layout +- long shortcut labels will scroll when selected in the default + launcher + +##### Advantages of Widgets + +- their icon and label can be dynamically changed after creation via + the *Set Widget Icon* and *Set Widget Label* actions. +- timer widgets are possible +- they can be created without a label + +So a shortcut should be used unless the extra configuration +possibilities of a widget are necessary. + +#### General + +- you can create as many Tasker widgets and shortcuts as you like. You + can even have several Timer widgets running at the same time. +- Timer Task widgets continue to update even when the screen is off. + +[]{#beginner.html} + +Beginner Mode ![](icon_tasker.png) +---------------------------------- + +When Tasker first starts, *Beginner Mode* is enabled. + +In Beginner Mode, Tasker attempts to simplify things for inexperienced +users, mostly by UI elements which are unlikely to be needed by +inexperienced users. + +Beginner Mode can be disabled by unchecking the option: + +> ` Menu / Prefs / UI / Beginner Mode` + +Some of the changes made in Beginner Mode are: + +- main screen, Variables tab removed +- main screen, export options removed +- main screen, project tab not accessible +- task edit screen, task properties icon removed +- action edit screen, Label, Continue On Error parameters removed +- prefs screen, many options removed +- various places, variable selection not possible + +In the userguide, when references are found to things which do not +appear on the screen. It\'s worth disabling Beginner Mode to see if +that\'s the problem. + +[]{#cpu.html} + +CPU Control ![](icon_tasker.png) +-------------------------------- + +------------------------------------------------------------------------ + +**Note:** CPU control can damage your hardware e.g. by the CPU +overheating. As for all Tasker functions, you use it at your own risk! + +------------------------------------------------------------------------ + +### General + +On a rooted device (only) Tasker is able to control the CPU frequency of +an Android device to some extent. This is usually done either to save +battery or make the device more responsive depending on the +circumstances. + +The relevant control action is **CPU** in the **Misc** category. You can +monitor the current state with the variables **%CPUFREQ** and +**%CPUGOV**. + +There are two aspects which can be controlled, the Frequency Range and +the CPU Governor. You will need to experiment with combinations of these +to achieve the best results. + +### Frequency Range + +You can set the minimum and maximum frequency which the CPU is allowed +to run at. Only certain frequencies are valid, depending on the CPU +(click on the magnifying glass button to select a valid value). + +The maximum frequency is probably initially set lower than the maximum +frequency that the CPU can actually handle. If that is the case, you +should be very cautious about setting it higher. Tasker will warn you +the first time you try to do configure an action to do that, assuming +you have not been using other apps to change the maximum frequency +limit. + +### CPU Governor + +The active *governor* decides what the CPU frequency should be set to at +a particular time, within the frequency range you have set. Each has +it\'s own unique strategy. Here are the most common governors: + +- *Performance*\ + keeps the CPU frequency always at the maximum. Most power-hungry, + most responsive. +- *Powersave*\ + keeps the CPU frequency always at the minimum. Least power-hungry, + least responsive. +- *Ondemand*\ + when the CPU is needed, immediately sets it to maximum frequency. + Slowly reduces the frequency back down to the minimum as time + passes. Responsive, reasonable power usage. +- *Interactive*\ + like Ondemand, but more responsive with slightly more battery usage. +- *Conservative*\ + when the CPU load is needed, slowly increases the frequency to + maximum. When the CPU is no longer needed, immediately drops back to + the minimum. Less power-usage than Ondemand or Interactive, less + responsive. + +Not all governors are available on all ROM versions. Your device may +also have a governor not described here. You can still set that governor +with Tasker. + +### CPU Action Not Available + +Common problems are: + +- *root not recognized*\ + Tasker decides that a device is rooted if + `/system/app/Superuser.apk` is present and `su` is present in one of + the directories of \$PATH +- *no available frequencies*\ + Tasker needs to know what frequencies it can set the CPU to. It + looks for the files + `/sys/devices/system/cpu/cpuX/cpufreq/scaling_available_frequencies, /sys/devices/system/cpu/cpuX/cpufreq/stats/time_in_state` + and `/system/etc/scaling_available_frequencies` (in that order). If + you know what your CPU frequencies are, you could write them + (space-separated, in numerical order) to the first (any number of + CPUs) or last (1 CPU only) of those files. + +[]{#activity_widget_configure.html} + +Widget / Shortcut Configuration ![](icon_tasker.png) +---------------------------------------------------- + +This screen allows selection and configuration of a task which will be +performed when an icon is clicked on the Android home screen or a timer +elapses. + +Please read about [Task Widgets / Shortcuts](#app_widgets.html) before +venturing further on this screen. + +The layout of the Configuration screen is nearly identical to that of +the [Task Edit](#activity_taskedit.html) screen. + +When creating a Task Timer widget, you\'ll find a different button in +the bottom right which allows initialization of the timer. You can use +this, or wait till the widget is created and then click on the icon to +configure the timer. + +[]{#flowcontrol.html} + +Flow Control ![](icon_tasker.png) +--------------------------------- + +#### Overview + +Task flow control is based on the following Tasker elements: + +- [variable](#variables.html) values +- [conditions](#condition) on individual actions +- *If / Else / Endif* actions for conditional grouping of following + actions +- *For / End For* to do a set of actions once for each of a set of + elements +- *Goto* action (jumping around within a task). +- *Perform Task* action (calling other tasks as subroutines) +- *Stop* action (terminate task immediately) + +On the Wiki there is a detailed example of [processing a file\'s +content](http://tasker.wikidot.com/fileproc) \[External Link\]. + +Tip: if you accidentally create a task that never ends when +experimenting with loops, use the **Kill** button in the Task Edit +screen to end it manually. + +[]{#condition} + +##### Conditions + +Every action can have a condition associated with it (specify this in +the Action Edit screen). If the condition does not match, the action +will be skipped. + +A condition consists of an *operator* (\'equals\' etc) and two +*parameters*. The possible operators are: + +- *Equals* (eq)\ + The left parameter is identical to the right parameter. +- *Doesn\'t Equal* (neq)\ + The left parameter is not identical to the right parameter. +- *Matches* (\~)\ + The right parameter is a pattern which the left parameter is + [matched against](#matching.html). +- *Not Matches* (!\~)\ + As above, but the match must fail for the action to be executed. +- *Matches Regex* (\~R)\ + The right parameter is a regular expression which the left parameter + is [matched against](#regex). +- *Doesn\'t Match Regex* (!\~R)\ + As above, but the match must fail for the action to be executed. +- *Maths: Less Than* (\<)\ + Both parameters (after variables are substitued) must be numbers or + mathematical expressions and the first must be **less** than the + second e.g. `3` \< `6`. See [Maths](#maths.html) for more info. +- *Maths: Greater Than* (\>)\ + As above, but the first parameter must evaluate to **more** than the + second. +- *Maths: Equals* (=)\ + As above, but the two parameters must be numerically equal. +- *Maths: Isn\'t Equal To* (!=)\ + As above, but the two parameters must be **not** numerically equal. +- *Maths: Is Even* (Even)\ + The left parameter is an even number. +- *Maths: Is Odd* (Odd)\ + The left parameter is an odd number. +- *Is/Isn\'t Set* (Set/!Set)\ + Whether the specified variable has a value or not. + +Expressions which are not mathematically valid e.g. *I Am The Walrus \> +5* give a warning and evaluate to **false** when used with a +mathematical operator. + +[]{#for} + +#### Foreach Loop + +Goal: perform a set of actions for each of *apple*, *pear* and *banana*. + + ----------------------- ----------------------- ----------------------- + 1. **For**\ Loop once for each of + %item\ apple, pear and banana + apple,pear,banana + + 2.   **Action One**\ Example: Flash %item + + 3.   **Action Two**\ \... + + 4. **End For**\ Return to action 1 if + we havn\'t done all the + items yet + ----------------------- ----------------------- ----------------------- + +Result: Action One and Action Two are performed three times. The first +time, the variable %item is set to *apple*, the second time *pear* and +the last time *banana*. + +You can insert a `Goto` action in the loop with either *Top of Loop* +(meaning continue, skip to the next item straight away) or *End of Loop* +(meaning break, stop without doing any more items) specified. + +In adition to simple text, the `For` action accepts any comma-separated +combination of these Items: + +- a numeric range e.g. 1:5 (= **1,2,3,4,5**) +- a numeric range with a jump e.g. 8:2:-2 (= **8,6,4,2**) +- a numeric range defined by variable values e.g. *2:%end:%skip*, + *1:%arr(\#)* +- a variable name (which is replaced) e.g. %fruit (= **banana** maybe) +- a [variable array](#arrays) part e.g. *%arr(1:2)* (= %arr1, %arr2 = + **apple,banana** maybe) + +A common case is to use %arr(), which performs a loop for each element +in the array %arr. + +**Warning**: the *Values* parameter in the loop is reevaluated with each +iteration of the loop, meaning that modifying array variables which +appear there from within the loop can have unexpected effects. To +workaround that, it can be best to use the following sequence: + + Variables Set, %values, %arrayWhichWillChange() + Variable Split, %values + For, %value, %values() + ... + +#### For Loop + +Goal: perform a set of actions for each of a set of elements in turn. + +Use the *Foreach Loop* as described above, with the *Items* parameter +being a range specification e.g. 4:0, 100, 0:8:2 (= +**4,3,2,1,0,100,0,2,4,6,8**). + +#### Until Loop + +Goal: perform a Task X until some condition is met (at least once) + + ----------------------- ----------------------- ----------------------- + 1. **Action One**\ \... + + 2. **Action Two**\ \... + + 3. **Goto**\ Return to action 1 if + 1\ runtime \< 20 + If %qtime **\<** 20 + ----------------------- ----------------------- ----------------------- + +Result: Action One and Action Two are performed until %QTIME contains +the value 20 or more i.e. until the task has been running for 20 +seconds. + +Note: %QTIME is a builtin local variable available in all tasks. + +#### While Loop + +Goal: perform a Task X while some condition is met. + + ----------------------- ----------------------- ----------------------- + 1. **Stop**\ Stop task if it\'s not + \ crunchy, otherwise go + If %fruit **Not to next action + Matches** Apple + + 2. **Action One**\ \... + + 3. **Action Two**\ \... + + 4. **Goto**\ Go back and see if + 1 we\'re still crunchy + ----------------------- ----------------------- ----------------------- + +Result: Action One and Action Two are performed while %fruit contains +the value Apple. + +#### Counter Loop + +Goal: perform a Task X a set number of times. + + ----------------------- ----------------------- ----------------------- + 1. **Variable Set**\ Initialize the counter + %count, 0 + + 2. **Action One**\ \... + Label: *LoopStart* + + 3. **Action Two**\ \... + + 4. **Variable Add**\ Add one to %count + %count, 1 + + 5. **Goto**\ Return to action 2 if + *LoopStart*\ count \< 10 + If %count **\<** 10 + ----------------------- ----------------------- ----------------------- + +Result: after initialization of %count to 0, the task loops around the +actions from 2-5 until %count reaches 10, at which point the condition +on the `Goto` fails and the end of the task is reached. + +Note that we used a `Goto` to a **labelled** action this time. In all +but the very simplest tasks it\'s better to use a label rather than a +number. It\'s easier to work out what\'s happening and if you insert or +delete actions before the loop starts, the `Goto` will still jump to the +right place. + +An alternative way to do this loop is to use a For action specified as +*0:10*. + +#### If / Then / Else Condition + +Goal: perform certain Tasks if conditions are met, otherwise perform a +different task. + + ----------------------- ----------------------- ----------------------- + 1. **If**\ **\~** is short for + %fruit **\~** Apple \'matches\' + + 2.   **Action One** \... + + 3.   **Action Two**\ \... + + 4. **Else If**\ an `Else` action with a + %fruit **\~** Pear condition + + 5.   **Action Three** \... + + 6. **Else**\ + + 7.   **Action Four**\ \... + ----------------------- ----------------------- ----------------------- + +Result: actions One and Two are executed if %fruit matches Apple, Action +Three is executed if %fruit matches Pear, otherwise Action Four is +executed. + +Notes: + +- you can have as many `Else If`s in a condition as you like +- if your condition is in the middle of a more complicated task, you + need to tell Tasker where the condition ends with an `End If` action + +#### Subroutines + +To call another task, use the `Perform Task` action. To use it as a +subroutine, you just need to ensure that the priority of the calling +task is less than the priority of the called task (more info: +[scheduling](#scheduling)). + +The parent can optionally pass values to the child and receive a result +back: + +*Parent Task* + + ----------------------- ----------------------- ----------------------- + 1.   **Perform Task**\ pass 5 to the child, + Child,\ expect a result in + Priority, 10\ %result + %par1, 5,\ + Result Value Variable, + %result + + 2.   **Variable Flash**\ what did we get back ? + Result: %result + ----------------------- ----------------------- ----------------------- + +*Child Task* + + ----------------------- ----------------------- ----------------------- + 1.   **Variable Set**\ add one to the value + %newval, %par1 + 1, Do that was passed + Maths + + 1.   **Return**\ set %result in the + %newval\ parent to the value of + %newval in the child + ----------------------- ----------------------- ----------------------- + +Result: the parent flashes **6** + +Notes: + +- changes made to *%par1* and *%par2* in the child task are **not** + reflected by their changing in the parent task +- receiving a return value is optional for the parent, even if the + child tries to give it one +- unlike `Return` statements in most computer languages, Tasker\'s + does not necessarily stop the child task, so if the child and parent + have the same priority they can both run together and the child + return several results over time. + +[]{#encryption.html} + +Encryption ![](icon_tasker.png) +------------------------------- + +------------------------------------------------------------------------ + +**Note:** encryption functions are not available to new customers or in +Play Store versions of Tasker due to US export restrictions. + +------------------------------------------------------------------------ + +Tasker has the ability to encrypt and decrypt files. The relevant +actions are in the *Encryption* action category. + +Since decryption can be automated, you have the possibility to keep data +files encrypted outside of certain times, locations, applications etc. + +**Warning**: make backups of your files while setting up encryption +until you understand how the system works and are sure the +encryption/decryption process does not cause any corruption. + +**Tip**: Tasker does not give progress reports while it\'s doing +encryption, if you want to know when an long decryption operation is +finished, just put a *Vibrate* action or similar after the +*Encrypt/Decrypt* action. + +#### Keys + +Tasker uses a system of named *keys*. All of the encryption actions can +specify a key name so that you can use different keys with different +files (if desired). + +If no key name is specified, **default** is used. + +Once a passphrase for a key is entered, the ciphers it generated are +stored in memory until explicitly deleted. The deletion might be +specified after an *Encrypt/ Decrypt File* action, or explicitly with +the *Clear Key* action. + +#### Setting Up Encryption + +##### General Preferences + +First thing to do is check whether the encryption preferences for +**Encryption Iterations** and **Encryption Algorithm** are as you wish. +Once you start encryping things, it\'s time consuming to start again +with new encryption preferences. + +The preferences can be found at `Menu / Prefs / Action`. Be sure to have +a look at the help text for each item. + +##### Initial Encryption + +To start with, you probably want to encrypt some files which are in a +particular directory, which you can then decrypt as they are needed. + +To do that, create a task called **Encrypt** or similar and add one or +more *Encrypt File* or *Encrypt Dir* actions to it. + +By default, the key is cleared once the file is encrypted, so click +\'Leave Key\' for all but the last action, otherwise you\'ll have to +enter your passphrase for each file. + +Next, [create a Tasker shortcut](#app_widgets.html) on the home screen, +using the *Encrypt* task. Tap the widget to encrypt your files. Notice +how you are only asked for the passphrase for the first one, because it +is stored until cleared. + +The encrypted files will all receive an extension *.tec* and the +original files are deleted. + +#### Decryption + +Once you have a set of encrypted files, you need to setup the contexts +in which they will be decrypted. + +Create another task called *Decrypt* or similar, and add *Decrypt* +actions to it to match the encrypt actions you setup previously. + +**Don\'t** click Clear Key, otherwise you\'ll have to enter your +passphrase for every file (and at the start of encryption). + +Now you can use your *Encrypt* and *Decrypt* tasks whenever you like. +For instance, you could create a profile with a Location Context and run +your *Decrypt* task when entering the location (assign Decrypt as the +Enter task) and your *Encrypt* task when leaving the location (assign +*Encrypt* as the Exit task). + +**Important**: when you use the *Decrypt* action, it recreates the +original file from the encrypted copy, but does **not** delete the +encrypted version. + +When you re-encrypt the file, if it has not changed it is simply deleted +since we already have an encrypted copy. If it **has** changed, it is +re-encrypted. + +The purpose of this method of operation is to: + +- avoid the lengthy encryption process when unnecessary +- prevent accidental double-encryption (encrypting the same file + twice) + +#### *Enter Key* Action + +It\'s not always convenient to enter the key at the point at which de- +or encryption takes place. This action allows you to specify the +passphrase for a key at a different point. + +If you don\'t wish to double-enter a key when encrypting, you can also +use this action before an Encrypt action and not select *Confirm*. + +#### *Set Key* Action + +To allow full-automation of en/decryption, the passphrase for a key can +also be set without user interaction. However, this is much less secure +tham `Enter Key` because: + +- the passphrase (as part of the action) is stored in **clear text** + in device memory and could be read by the root user if the device OS + is compromised +- although the passphrase is itself encrypted when a backup is made to + SD, the parameters for that encryption can be recovered from the + java code in the Tasker apk file + +#### Security + +##### Algorithm + +Tasker uses symmetric encryption, meaning the same passphrase is used +both to encrypt and decrypt the data. + +The default algorithm is \"PBEWithMD5And128BitAES-CBC-OpenSSL\". PBE +stands for password-based encryption, see [RFC +2898](http://www.ietf.org/rfc/rfc2898.txt). + +A salt is combined with the passphrase several hundreds of times using +the MD5 algorithm to produce a key which is used for the 128-bit +(default setting) AES algorithm. + +The number of iterations and algorithm can be set in +`Menu / Prefs / Action`. + +##### Pass Phrases + +The longer the passphrase, the more secure the data. Minimally 8 +characters of mixed alphabetic, numeric and punctuation characters is +recommended. + +##### Clearing Keys + +While a key\'s ciphers are in memory, anyone can use the key for +decryption or encryption if your device is lost or stolen, so it may be +wise to setup a *Clear Key* action e.g. when the device is turned off +(see Screen Off in the Event Context) or at a particular time (Time +Context), depending on what you are using the encryption for. + +##### Manually Encrypting/Decrypting + +You can use Tasker\'s file browser (action Browse Files) to +encrypt/decrypt files directly, via a long-click on the file. +[]{#gestures.html} + +Gestures & Shaking ![](icon_tasker.png) +--------------------------------------- + +#### General + +*Gestures* are physical movements of the phone in space, which you first +record by creating a new Event of type *Gesture* (in the *Misc* +category). + +When you later redo the gesture while using your device, Tasker will +carry out the corresponding task(s) you have attached to its profile. + +Like normal events, gestures are restricted by other contexts. For +example, if you define a profile with a Gesture (Event) and Application +context, the gesture will only be recognized while using that particular +application. + +Note: it might be a good idea to disable Tasker before setting up new +gestures, as otherwise you are likely to trigger previously defined +ones. + +#### Recording A Gesture + +##### Gesture Points + +First off, it\'s important to know that Tasker only records the +particular points (which we\'ll call *inflection points*) of a gesture +that you tell it to. For example, recording a gesture involving tilting +the phone to the left and back you would record three inflection points: +the start, the tilted left position, and the end (which is the same as +the start in this case). + +You can record as many points as you like, but in general it\'s best to +record only the points where the phone is not moving. + +##### Recognized Movements + +Tasker will only recognize changes in the **angle** of the phone i.e. +**tilting** to left or right, backwards or forwards, or rotating +vertically. Imagine three poles going through the device in the three +dimensions. + +**Moving** the phone backwards or forwards, up or down or side to side +cannot be recognized. + +##### Procedure + +1. create a new Gesture Event and give it a name (so you can + differentiate between different gestures). +2. put the phone in the position where you want the gesture to start + and **press-and-hold** the **Call**, **Camera**, **Menu**, + **Search** or **Volume** hardware buttons to record the point. The + device will buzz. +3. move to another (preferably not-moving) point on the path of your + gesture, and press the button again (not a long press). The device + will buzz. +4. on the **final** inflection point, **press-and-hold** the button to + mark the end of the gesture. The device will buzz again and the + \"Recorded.\" message should now flash up. +5. Press **Done**, and add a Vibrate action so you can hear when your + pattern matches when testing it. + +#### Activation + +##### Calibration + +Before trying to match a pattern, you probably need to calibrate the +hardware in your device. Go to `Menu / Prefs / Monitor / Gestures`. +Press the **Calibrate** button and tilt your phone around in all +directions. + +Tasker now has some idea what kind of values the *accelerometer* in your +phone produces. + +You only need to calibrate once. + +#### Matching + +Now exit Tasker and move your device through the points you previously +defined when recording. You should hear the device vibrate when it +reaches the final recorded point. + +If not, try playing with the values in the Gesture Settings screen. For +instance, you could try raising the Match Radius (but be careful not to +raise it too much or you\'ll get a lot of matches by mistake). + +#### Power Usage + +Tasker does its best to limit power usage of gesture monitoring. + +- monitoring for gestures only takes place when all the other contexts + in a profile are already active (and so the gesture might have a + chance of activating the profile). For example, if you combine an + Application and Gesture (Event) context, gesture monitoring will + only take place while using that particular application. +- Gesture monitoring is by default turned off when the display is off + unless a power source is connected to the device, unless specified + otherwise in `Menu / Prefs / Monitor / Display Off Monitoring` +- updates from the accelerometer are at the minumum rate until the + start of a gesture is detected. + +[]{#icons.html} + +Icons ![](icon_tasker.png) +-------------------------- + +Tasker can use four categories of icons: [Application](#app), +[Built-In](#builtin), [Ipack](#ipack), [User-Installed](#user). + +In some places it\'s also possible to use any image stored on local +media as an icon. + +[]{#app} + +#### Application Icons + +These are taken from applications installed on the device. + +Minor note: if the icon of the application changes, an update of +previously created widgets/shortcuts can be forced by creating a single +widget with the new icon and then rebooting. + +[]{#builtin} + +#### Built-In Icons + +These come with Tasker and are kept in the device\'s memory. []{#ipack} + +#### Ipack Icon Sets + +[Ipack](http://ipack.dinglisch.net) is a free, open format for sharing +of icon sets between Android applications. Ipack icon sets can be either +installed from [Play Store](http://market.android.com/search?q=ipack) or +from the [Ipack website](http://ipack.dinglisch.net/download.html). + +When setting an icon, you will notice an item labelled *Download More +Icons*. Clicking on it will use the appropriate source depending on +which version of Tasker you have. + +[]{#user} + +#### User-Installed Icons + +You can also install your own icons directly into Tasker\'s icon +directory `/sdcard/Tasker/.icn/`. Make sure the icons are in a +subdirectory. The subdirectory should also only be one level deep (no +subsubdirectories). + +Icons must be in PNG format. + +Example: a two-icon set called *Christmas* would have the two files in +these locations: + +> `/sdcard/Tasker/.icn/Christmas/santa.png`\ +> `/sdcard/Tasker/.icn/Christmas/snowman.png` + +[]{#intents.html} + +Intents ![](icon_tasker.png) +---------------------------- + +Intents are Android\'s main method for allowing apps to communicate with +each other and share data. Intents are for advanced users. This document +is not intended to explain how intents work, but how to use Tasker\'s +intent facilities. + +### Sending Intents + +You can find information about intents and details of several built-in +Android intents on the Android SDK [Reference +Site](#%20https://developer.android.com/reference/android/content/Intent.html). + +Tasker allows you to send arbitraty intents using the *Send Intent* +action in the *Misc* category. This allows you to provoke behaviour in +other apps, when you know the particular form of intent they are +designed to respond to. + +#### Send Intent Parameters + +Note that any parameter specified except Extras will reduce the set of +possible receivers of the intent. + +##### Action + +What the sender would like the receiver to do with the data. + +Example: `android.intent.action.VIEW` + +##### Cat + +Gives additional information about the action. + +##### Mime-Type + +From the developer reference: \"This is used to create intents that only +specify a type and not data, for example to indicate the type of data to +return.\" + +Can\'t be used together with a Data specification. + +##### Data + +The main data specification in the form of a URI. + +Can\'t be used together with a Mime-Type specification. + +##### Extras + +Any additional data to send with the intent. + +The extras must be in the form of a single **colon-separated** key and +value. + +If the value can be parsed as an integer, long (integer ending in L), +floating point number, double (float ending in D) or boolean +(true/false) it will be treated as one. + +The value can also be forced to a simple type (long etc) or `Uri` via +casting. + +The name of a Java object created via the Java Function action which is +of type `Parcelable` can also be used (e.g. a `Bundle`) + +If none of the above apply, the value will be treated as a `String`. + +Examples: + +- have\_flowers:true\ + (`boolean`) +- this.is.an.integer.example:34\ + (`int`) +- this.is.a.double.example:34D\ + (`int`) +- address: (Uri) http://a.b\ + (`Uri`) +- bunchofvalues:mybundle (where mybundle is the name of a Java object + of type Bundle)\ + (`Parcelable`) +- simple.string.example:hello there!\ + (`String`) + +##### Package, Class + +Allow specification of a particular package and/or class within the +package to restrict the broadcast to. + +##### Target + +The type of Android component which should receive the intent. + +#### Finding App Intents + +Many intents that an app listens for are declared in its package +manifest (called AndroidManifest.xml). You can view details of those +intents using the *aapt* tool that comes with the Android SDK like this: + +> ` aapt dump xmltree example.apk AndroidManifest.xml` + +Look for Intent Filter elements. + +It\'s not (easily) possible to determine which intents an app listens +for dynamically (i.e. while the app is running). + +### Receiving Intents + +Tasker allows you to receive a large range of intents, sent by apps or +the system, using the *Intent Received* event in the *System* category. + +For each event you create, Tasker sets up a corresponding [Intent +Filter](https://developer.android.com/reference/android/content/IntentFilter.html) +object. + +#### Limitations + +- Tasker can only receive intents which are sent to **broadcast + receiver** components, not to activities or services. +- some intent senders require that a corresponding intent filter is + specified statically (i.e. in an Android Manifest). Those intents + cannot be received. +- intents which are broadcast with a specification of a particular + package component to receive it cannot be received. + +#### Send Intent Parameters + +##### Action + +If specified, the received intent must have also that action specified. + +##### Cat + +Any categories specified in the received intent must also be specified +in the Tasker event. Note that this is logically different to the +situation for the Action parameter. + +##### Scheme + +If any schemes are included in the filter, then an Intent\'s data must +be either one of these schemes or a matching data type. If no schemes +are included, then an Intent will match only if it includes no data. + +##### Mime Type + +If a type is specified, then an Intent\'s data must be the same, or +match the Scheme parameter. If no Mime Type is specified, then an Intent +will only match if it specifies no Data. + +##### Priority + +If the intent is part of an *ordered broadcast*, then the priority +specified here will affect whether this event will receive the intent +before or after other listeners. + +##### Stop Event + +If the intent is part of an *ordered broadcast*, then specifying Stop +Event will prevent it being passed to other listeners after this one. + +#### Accessing Intent Data + +When an intent triggers an Intent Received event, the resulting task(s) +which are executed have access to many details of the intent via local +variables (where relevant and present): + +- *%intent\_data*: the data +- *%evtprm1*: the action +- *%evtprm2*: the first category +- *%evtprm3*: the second category +- *%evtprm4*: the URI scheme +- *%evtprm5*: the MIME type + +In addition, any *extras* attached to the intent can be accessed under +their name, with the following modifications to make them valid variable +names: + +- all letters will be converted to lower-case, then +- names of length less than 3 will have **var\_** prefixed +- non-letter-or-digit characters will be converted to \_, then +- names not starting with a letter will have **a** prefixed, then +- names not ending with a letter or digit will have **a** affixed +- if the result is the name of another extra, **\_dup** will be + affixed until that is no longer the case + +For example, an extra with key **%SOUND\_ON** will be available as +**%sound\_on**, and an extra with key **package.SOUND\_ON!**, will be +available via the local variable **%package\_sound\_on\_a** + +The following extra types are presented in Tasker as local arrays: +`String [], Integer [], ArrayList, ArrayList`. + +Example: a string array extra \`named \'fruits\' with values \'pear\' +and \'apple\' will result in the local variables %fruits1 (=pear) and +%fruits2 (=apple). + +[]{#java.html} + +Java Support ![](icon_tasker.png) +--------------------------------- + +- [Introduction](#intro) +- [The `Java Function` Action](#javafunction) + - Using The Action + - Parameters + - Return Values +- [Objects](#objects) + - Creating An Object + - Object Naming, Local And Global + - Built-in Objects + - Assigning Values + - Other Actions Supporting Objects +- [Other Topics](#other) + - Casting + - Constants + - Generic Classes + - Permissions + - Service Thread + - Static Fields + +[]{#intro} + +### Introduction + +Android has hundreds of thousands of functions which apps can use. It\'s +not possible for Tasker to present all of those to the user, so Tasker +allows the advanced user to directly call those Java functions and work +with Java objects themselves. + +It does **not** allow you to \'write Java code\'\... but the combination +of Tasker\'s logic and flow control with direct access to the Android +API is sufficient for most automation purposes. + +This page assumes you have a basic familiarity with the Java concepts of +*objects* and *classes*. + +Developer information on the Android API is available from +[Google](http://developer.google.com/develop). + +#### Example + +1. `Variable Set`, %service, wifi +2. `Java Function`, wiman = CONTEXT.getSystemService( %service ) +3. `Java Function`, %enabled = wiman.isWifiEnabled() +4. `Java Function`, wiman.setEnabled( true ), If %enabled eq false + +This example task turns wifi on if it is not already enabled. + +Action 2 demonstrates that Tasker variables can be used in Java function +calls. *wiman* is a Java object resulting from the function call which +is stored by Tasker for use in subsequent actions. *CONTEXT* is also +such a variable but is built-in and always accessible to +`Java Function`. + +Action 3 demonstrates that results of `Java Function` can also be +assigned to Tasker variables. Since all Tasker variables are strings, +some conversion needs to take place depending on what type of object the +Java function returns. In this case it\'s a boolean, and so %enabled +will be **true** or **false**. + +Action 4 demonstrates taking a decision based on the result of previous +Java function call. + +[]{#javafunction} + +### The `Java Function` Action + +#### Using The Action + +1. enter an object or class (to access static functions) into the first + parameter. + + The magnifying glass icon will show a class selector for classes + known in the latest Android API. Some may be coloured red, as not + all classes are available on all devices. + + The coffee-cup icon allows quick selection of known Java objects + + The question mark icon will attempt to link to the relevant Android + reference page for the object or class. + +2. click the magnifying class next to the `Function` parameter to + select a function to execute appropriate to the object or class from + step 1. + + In most cases, Tasker will be able to guess which class an object + is, and hence which functions are available, if not, see + [casting](#casting) below. + + Functions listed in red are private, meaning they can be used, but + the author didn\'t intend them to be. + +3. if the function returns a value, you can enter a Java [object + name](#names) to assign it to, or a Tasker variable, see + [below](#return). +4. enter any parameters required for the function, see + [below](#params). The type of object the function expects for the + parameter is displayed above the text entry field. The magnifying + glass will list any fields associated with the current entry in the + text box, where possible. + +[]{#params} + +#### Parameters + +If you don\'t enter a value for a parameter, `null` will be used for +that parameter when the function is called. + +If you enter the name of a variable array, Tasker will attempt to +convert the array values into the type of object (an array or +collection) which the function expects. + +Other Tasker variables will be replaced in the usual way. + +Here can also be entered Java objects, or their fields, either built-in +or created by previous calls to `Java Function` (e.g. `wiman` or +`arr[0].length`) + +[]{#return} + +#### Return Values + +When a Java function returns a value, it can be placed in either a +Tasker variable or a Java object (or ignored). + +If it\'s placed into a Tasker variable, it\'s converted to a piece of +text and the object itself is lost and can no longer be accessed. Note +that if the Java object is an array or list, it will be assigned to +multiple Tasker variables in the usual way e.g. %val1, %val2\... + +When the returned value is placed into a Java object, you can access the +object at a later time in another `Java Function` and some other (see +later) actions. + +Note that return value classes are inferred from the function, so object +names can refer to different classes at different times. It\'s not +recommended to reuse names in this way however! + +[]{#objects} + +### Objects + +#### Creating An Object + +New objects of most types can be created by filling in the class name, +hitting the function selector and selecting a function called `new`. + +It\'s worth noting that many classes in the Android API have special +static functions for getting a new object of that class called e.g. +`getInstance` or similar. + +Arrays (also multidimensional) can be created by adding `[]` to the +class name (or e.g. `[][]`). + +Here\'s an example of creating a 3x5 string array: + +1. `Java Function`, arr = new String\[\]\[\]( 3 ) +2. `For`, %rowno, 0:2 +3.    `Java Function`, arr\[%rowno\] = new String\[\]( 5 ) + +Creating an array is also possible natively via the `newInstance` +function in the the class `Array`. + +Array components can be accessed as in normal Java (`arr[0][1]`) +wherever Java objects are [supported](#support). + +[]{#names} + +#### Object Naming, Local and Global + +Object names can consist of any any combination of upper or lower case +letters and underscore and, unlike Tasker variable names, may start with +underscore. The first letter may not be upper-case, as this is a +convention used to distinguish objects from classes. + +Analogous to Tasker variables, Java objects are either local to the +current task if their name is all lower case, or global (available to +any other task) if there are any upper-case characters in the name. +All-upper-case names represent final (fixed) global objects which cannot +be modified. + +There are three important things to remember about global Java objects: + +- it\'s important to delete them once they are no longer needed, + because they can take up a lot of memory. +- unlike global Tasker variables, they are lost when Tasker is killed + e.g. because the device was restarted +- their names can only contain upper- or lower-case letters or + underscore. + +#### Built-in Objects + +- **Android Context** (class `Context`)\ + *CONTEXT*\ + Many funtions in Android require a context object. In tasks running + **directly** as a result of a scene element event, this is the + Activity object which is displaying the scene, otherwise it\'s + Tasker\'s Application context. +- **Image Buffer** (class `Bitmap`)\ + *IBUFFER* The object manipulated by functions in Tasker\'s *Image* + action category.\ + +#### Assigning Values + +When writing Java code, to make a name refer to the same object as +another name, you would use something like: + + String a = "hello"; + String b = a; + +Now both a and b refer to the same object. + +To achieve that in Tasker, you use the special `assignTo` function after +selecting the object to assign. + + Java Function, a, "hello", assign (or a = "hello".assign()) + Java Function, b, a, assign (or b = a.assign()) + +[]{#support} + +#### Other Actions Supporting Objects + +##### If + +A Java object can be directly referenced in a condition. Null-value +objects are replaced with text representation `null`. + +Examples: + + If, arr[0][0] eq 45 + If, arr[0].length > 3 + If, lightlevel Equals null + +You cannot make function calls e.g. str.charAt( 5 ) + +##### For + +The *Value* parameter in the For action can include Java object +references as for *If*. + + For, %value, arr + +Will repeat once for each value in the array *arr*. This will also work +for string lists and simple objects (boolean etc) + +[]{#other} + +### Other Topics + +[]{#casting} + +#### Casting + +*Casting* in Tasker is used only to tell Tasker the type of a particular +object. That can be useful so that e.g. Tasker can show functions which +are appropriate to it. + +In the example at the top of the page, the `getSystemService` function +returns an Object: + + Java Function, wiman = CONTEXT.getSystemService( %service ) + +Since the object could be one of many kinds of managers, Tasker is not +able to list the WifiManager functions for easy selection when creating +the next `Java Function` action in the task. + +You can tell Tasker the actual type by adding a cast in brackets before +the name: + + Java Function, (WifiManager) wiman = CONTEXT.getSystemService( %service ) + +#### Constants + +Tasker support the usual naming conventions for Java constants. + +- **L** a long integer e.g. `300L` +- **F** a floating-point number e.g. `45.6D` +- **D** a double-length float e.g. `45.6D` +- **double quotes** indicate a string e.g. `"hello"`, though in many + cases Tasker will infer that a string was intended anyway +- **single quotes** indicate a character e.g. `'x'` + +Tasker will attempt to convert numbers without affixes to a Java type in +the following order: `int, long, float, double`. + +#### Generic Classes + +Tasker only supports fully the following generic classes: `` + +- ArrayList\ +- ArrayList\ +- ArrayList\ +- ArrayList\ +- ArrayList\ +- ArrayList\ +- ArrayList\ + +Create them by selecting their class in the class selector, clicking the +function selector and clicking *new*. + +Generic classes mixed with arrays cannot be handled by Tasker, though +you can pass such objects around from function to function. + +#### Permissions + +For some function calls, Android requires that the calling app have +declared a permission otherwise the call will fail. This means that a +Java Function call will fail if the permission is not one of the ones +pre-declared by Tasker. + +Unfortunately, Android does not allow permissions to be added +dynamically, so if you wish to use a function requiring a permission +that Tasker does not already have, the only option is to generate a +child app to run the function (see [App Creation](#appcreation.html)). +In the child configuration screen you can add any permissions which your +Java Function call needs to the child app. + +#### Service Thread + +Java code is executed with a non-UI thread by a service. + +Some implications are: + +- things which require an activity will not work e.g. showing a dialog +- sending intents will in some cases require the flag + `Intent.FLAG_FROM_BACKGROUND` and possibly also + `Intent.FLAG_ACTIVITY_NEW_TASK` + +#### Static Fields + +Static fields (e.g. `ContentResolver.EXTRA_SIZE`) are not currently +supported by Tasker. + +A workaround is to use reflection to get (or set) the value: + + res = CONTEXT.getContentResolver(); + cls = res.getClass(); + fld = cls.getField( EXTRA_SIZE ); + %val = fld.get( null ); + +[]{#javascript.html} + +JavaScript Support ![](icon_tasker.png) +--------------------------------------- + +- [Introduction](#intro) +- [Local Variables](#localvars) +- [Global Variables](#globalvars) +- [Arrays](#array) +- [Settings](#settings) +- [Execution](#exe) +- [Working Off-Device](#offdevice) +- [Builtin Functions](#builtin)\ + [alarmVol](#alarmVol) [audioRecord](#audioRecord) + [audioRecordStop](#audioRecordStop)\ + [btVoiceVol](#btVoiceVol) [browseURL](#browseURL) [button](#button)\ + [call](#call) [callBlock](#callBlock) [callDivert](#callDivert) + [callRevert](#callRevert) [callVol](#callVol) [carMode](#carMode) + [clearKey](#clearKey) [composeEmail](#composeEmail) + [composeMMS](#composeMMS) [composeSMS](#composeSMS) + [convert](#convert) [createDir](#createDir) + [createScene](#createScene) [cropImage](#cropImage)\ + [decryptDir](#decryptDir) [decryptFile](#decryptFile) + [deleteDir](#deleteDir) [deleteFile](#deleteFile) + [destroyScene](#destroyScene) + [displayAutoBright](#displayAutoBright) + [displayAutoRotate](#displayAutoRotate) + [displayTimeout](#displayTimeout) [dpad](#dpad) [dtmfVol](#dtmfVol)\ + [elemBackColour](#elemBackColour) [elemBorder](#elemBorder) + [elemPosition](#elemPosition) [elemText](#elemText) + [elemTextColour](#elemTextColour) [elemTextSize](#elemTextSize) + [elemVisibility](#elemVisibility) [enableProfile](#enableProfile) + [encryptDir](#encryptDir) [encryptFile](#encryptFile) + [endCall](#endCall) [enterKey](#enterKey) [exit](#exit)\ + [filterImage](#filterImage) [flash](#flash) [flashLong](#flashLong) + [flipImage](#flipImage)\ + [getLocation](#getLocation) [getVoice](#getVoice) [global](#global) + [goHome](#goHome)\ + [haptics](#haptics) [hideScene](#hideScene)\ + [listFiles](#listFiles) [loadApp](#loadApp) [loadImage](#loadImage) + [local](#local) [lock](#lock)\ + [mediaControl](#mediaControl) [mediaVol](#mediaVol) + [micMute](#micMute) [mobileData](#mobileData) + [musicBack](#musicBack) [musicPlay](#musicPlay) + [musicSkip](#musicSkip) [musicStop](#musicStop)\ + [nightMode](#nightMode) [notificationVol](#notificationVol)\ + [performTask](#performTask) [popup](#popup) + [profileActive](#profileActive) [pulse](#pulse)\ + [readFile](#readFile) [reboot](#reboot) [resizeImage](#resizeImage) + [ringerVol](#ringerVol) [rotateImage](#rotateImage)\ + [saveImage](#saveImage) [say](#say) [scanCard](#scanCard) + [sendIntent](#sendIntent) [sendSMS](#sendSMS) + [setAirplaneMode](#setAirplaneMode) + [setAirplaneRadios](#setAirplaneRadios) [setAlarm](#setAlarm) + [setAutoSync](#setAutoSync) [setBT](#setBT) [setBTID](#setBTID) + [setClip](#setClip) [setGlobal](#setGlobal) [setKey](#setKey) + [setLocal](#setLocal) [settings](#settings) + [setWallpaper](#setWallpaper) [setWifi](#setWifi) [shell](#shell) + [showScene](#showScene) [shutdown](#shutdown) + [silentMode](#silentMode) [sl4a](#sl4a) + [soundEffects](#soundEffects) [speakerphone](#speakerphone) + [statusBar](#statusBar) [stayOn](#stayOn) + [stopLocation](#stopLocation) [systemLock](#systemLock) + [systemVol](#systemVol)\ + [takeCall](#takeCall) [takePhoto](#takePhoto) + [taskRunning](#taskRunning) [type](#type)\ + [usbTether](#usbTether) [unzip](#unzip)\ + [vibrate](#vibrate) [vibratePattern](#vibratePattern)\ + [wait](#wait) [wifiTether](#wifiTether) [writeFile](#writeFile)\ + [zip](#zip) +- [Function Notes](#notes) + +[]{#intro} + +### Introduction + +Tasker supports running JavaScript code in tasks or +[WebView](#element_web.html) scene elements. Most Tasker actions can be +accessed direct from the JavaScript. JSON and XMLHTTPRequest are also +directly available from the JavaScript code. + +#### JavaScript in Tasks + +JavaScript can be embedded inline in tasks via the *JavaScriptlet* +(direct specification of JavaScript to run) or *JavaScript* (load script +from file) actions. + +In both cases, the JavaScript executes in sequence with the other +actions in the task and variables are transparently converted so pieces +of JavaScript can be interwoven throughout the task. + +#### Embedded in HTML + +WebView elements allow specification of mixed HTML and JS for the +element content. + +> `

ClickMeToTurnOffWifi

` + +This allows a single WebView to present a complete user-interface. + +[]{#localvars} + +### Local Variables + +In `JavaScript(let)` actions, local variables (all lower case, e.g. +**%myvar**) are directly accessible in the JavaScript without the % sign +(e.g. **myvar**). If the script changes the value, the new value is +transparently used by subsequent actions in the task. + +The values of new (all lower case) variables declared in JavaScript +(with the `var` keyword) are also available to subsequent actions, with +the exception of those which are chain-declared e.g. +`var one = 'aval', two = 'bval';` + +In JavaScript embedded in HTML, the functions [local](#local) and +[setLocal](#setLocal) must be used to access variables local to the +scene hosting the WebView. + +[]{#globalvars} + +### Global Variables + +Tasker global variables need to be accessed via [global()](#global) and +set via [setGlobal()](#setGlobal). Global arrays are not supported due +to an Android limitation. []{#array} + +### Arrays + +Local Tasker arrays are transparently available in *Javascript(let)*s +and vice-versa. They are not available in WebViews. + +Arrays which are not existing Tasker arrays must be declared in the JS +as such i.e. in this case *arr* will not be visible to the remainder of +the task: + + var arr = getSomeArray(); + +Whereas in this case it will: + + var arr = []; + arr = getSomeArray(); + +Note that: + +- JavaScript array indices start at 0, whereas Tasker array indices + start at 1 +- JavaScript uses `[]` while Tasker uses `()` + +So, for example, `%arr(1)` (Tasker) is equivalent to `arr[0]` +(JavaScript). + +[]{#settings} + +### Settings + +Unlike normal Tasker actions, settings which are changed in JavaScript +as part of a profile\'s enter task are **not** restored when the profile +exits. []{#exe} + +### Execution + +#### Execution Instances + +Only one script can execute at one time. Once a piece of JavaScript is +executing, it cannot be interrupted by another piece. []{#offdevice} + +#### Working Off-Device + +You might wish to develop long and/or complicated tasks off-device e.g. +on a PC. There are two strategies for that: + +#### 1. `JavaScript` action + +For off-device testing, use +`Menu / More / Developer / Save JS Library Template` to get dummy +definitions for the built in functions. Include that file when +developing on your PC. + +To test in your JavaScript code whether you\'re on-device or not, use + +> ` var onAndroid = ( global( 'sdk' ) > 0 );` + +By using the `JavaScript` action rather than `JavaScriptlet` you can +easily access a file synced from PC to a file on the Android device. + +#### 2. Using WebView + +If you specify a website URL as the content for your WebView, then +testing the code on the target device is a simple matter of pushing the +new version to your webserver and reloading the WebView on the device +(see action [Element Web +Control](#help/ah_scene_element_web_control.html)) + +#### Builtin Function Execution + +Calls to most Tasker builtin functions (see below) are executed as +normal single-action tasks and thus may be blocked by other executing +tasks. + +They execute at the priority of the task that executed the JavaScript +**plus two**. + +#### JavaScript(let): Alert,Confirm,Prompt + +Scripts using these functions require a \'user-interface\' and may cause +interference with the currently running app (though in most cases they +will not). + +#### JavaScript(let): Auto Exit + +By default, the `JavaScript(let)` action will end when the main +execution sequence is finished. + +If you are using asynchronous code e.g. via *setTimeout()* or other +callbacks, you should deselect *Auto Exit*. You are then responsible +yourself for telling Tasker to continue the task by calling *exit()*. + +In any case, execution will stop when the timeout configured for the +action is reached. + +#### JavaScript(let): Libraries + +You can specify as many libraries as you want in the *Libraries* +parameter, separated by newlines. + +Several popular libraries are pre-selectable. + +You may wish to download them manually to your local storage and change +the *http* URL to a *file* URL so that Internet is not required to run +your script. + +Warning: library code will have access to local files, data providers +etc. on the device + +Important: if you are using your own libraries developed on Windows, you +may need to convert CRLF style line endings to Unix style LF. + +[]{#builtin} + +### Builtin Functions + +Tasker makes most of it\'s actions available via functions which can be +called directly via name in `JavaScript(let)` actions and WebView +elements. + +Exceptions: + +- in WebView content where mode is set to **URL**, the functions must + be prefixed by **tk** e.g. `tk.flash('Woo!')` +- when executing code via *eval* the functions must be prefixed by + **tk.** + +[]{#alarmVol} []{#btVoiceVol} []{#callVol} []{#dtmfVol} []{#mediaVol} +[]{#notificationVol} []{#systemVol} []{#ringerVol} + +##### alarmVol / btVoiceVol / callVol / dtmfVol / mediaVol / notificationVol / systemVol / ringerVol + +`var ok = alarmVol( int level, bool display, bool sound )` + +Set the relevant system volume to *level*. + +If *display* is true, the new level will be flashed up on-screen. + +If *sound* is true, a tone will sound at the new level. + +[]{#audioRecord} + +##### audioRecord + +`var ok = audioRecord( str destPath, str source, str codec, str format )` + +- *destPath*: where to put the recording. Note that a file extension + is not necessary, it will correspond to the selected *format*. +- *source*: **def, mic, call, callout** or **callin** +- *codec*: **amrn, amrw** or **aac** +- *format*: **mp4, 3gpp, amrn** or **amrw** + +The JavaScript does **not** wait for the audio recording to complete. + +See also: [audioRecordStop()](#audioRecordStop). + +[]{#audioRecordStop} + +##### audioRecordStop + +`var ok = audioRecordStop()` + +Stop recording previously initiated by [audioRecord()](#audioRecord). + +[]{#browseURL} + +##### browseURL + +`var ok = browseURL( str URL )` + +Open the default browser at the specifed URL. + +[]{#button} + +##### button + +`var ok = button( str name )` + +Simulate a press of the named button. + +*name* must be one of **back, call, camera, endcall, menu, volup, +voldown** or **search**. + +This function requires a rooted device. + +[]{#call} + +##### call + +`var ok = call( str num, bool autoDial )` + +Make a phone call. + +If *autoDial* is **false**, the phone app will be brought up with the +number pre-inserted, if **true** the number will also be dialed. + +[]{#callBlock} + +##### callBlock + +`var ok = callBlock( str numMatch, bool showInfo )` + +Block **outgoing** calls [matching](#matching.html) *numMatch*. + +If *showInfo* is set, Tasker will flash a message when a call is +blocked. + +[]{#callDivert} + +##### callDivert + +`var ok = callDivert( str fromMatch, str to, bool showInfo )` + +Divert **outgoing** calls [matching](#matching.html) *fromMatch* to the +number *to*. + +If *showInfo* is set, Tasker will flash a message when a call is +diverted. + +[]{#callRevert} + +##### callRevert + +`var ok = callRevert( str numMatch )` + +Stop blocking or diverting outgoing calls previously specified with +[callBlock](#callBlock) or [callDivert](#callDivert). + +[]{#carMode} + +##### carMode + +`var ok = carMode( bool onFlag )` + +Turn on or off Android Car Mode. + +[]{#clearKey} + +##### clearKey + +`var ok = clearKey( str keyName )` + +Clear the passphrase for the specified *keyName*. + +See Also: [Encryption](#encryption.html) in the Userguide. + +[]{#composeEmail} + +##### composeEmail + +`var ok = composeEmail( str to, str subject, str message )` + +Show an email composition dialog with any specified fields pre-filled. + +The JavaScript does **not** wait for the email to be sent before +continuing. + +[]{#composeMMS} + +##### composeMMS + +`var ok = composeMMS( str to, str subject, str message, str attachmentPath )` + +Show an MMS composition dialog with any specified fields pre-filled. + +The JavaScript does **not** wait for the MMS to be sent before +continuing. + +[]{#composeSMS} + +##### composeSMS + +`var ok = composeSMS( str to, str message )` + +Show an SMS composition dialog with any specified fields pre-filled. + +The JavaScript does **not** wait for the SMS to be sent before +continuing. + +[]{#convert} + +##### convert + +`var result = convert( str val, str conversionType )` + +Convert from one type of value to another. + +*conversionType* must be one of the string constants: **byteToKbyte, +byteToMbyte, byteToGbyte, datetimeToSec, secToDatetime, secToDatetimeM, +secToDatetimeL, htmlToText, celsToFahr, fahrToCels, inchToCent, +metreToFeet, feetToMetre, kgToPound, poundToKg, kmToMile, mileToKm, +urlDecode, urlEncode, binToDec, decToBin, hexToDec, decToHex, +base64encode base64decode, toMd5, toSha1, toLowerCase, toUpperCase, +toUpperCaseFirst**. + +See also: action [Variable Convert](#help/ah_convert_variable.html). + +[]{#createDir} + +##### createDir + +`var ok = createDir( str dirPath, bool createParent, bool useRoot )` + +Create the named *dirPath*. If *createParent* is specified and any +parent directory does not exist, it will also be created. + +If *useRoot* is specified, the operation will be performed as the root +user (where available). + +[]{#createScene} + +##### createScene + +`var ok = createScene( str sceneName )` + +Create the named [scene](#scenes.html) without displaying it. + +[]{#cropImage} + +##### cropImage + +`var ok = cropImage( int fromLeftPercent, int fromRightPercent, int fromTopPercent, int fromBottomPercent )` + +Crop an image in Tasker\'s image buffer previously loaded via +[loadImage](#loadImage). + +[]{#decryptDir} + +##### decryptDir + +`var ok = decryptDir( str path, str key, bool removeKey )` + +As [decryptFile()](#decryptFile), but decrypts each file in the +specified directory in turn. + +[]{#decryptFile} + +##### decryptFile + +`var ok = decryptFile( str path, str key, bool removeKey )` + +Decrypt the specified file using the encryption parameters specified in +`Menu / Prefs / Action`. + +If *removeKey* is not set, the entered passphrase will be reapplied +automatically to the next encryption/decryption operation with the +specified *keyName*. + +See Also: [Encryption](#encryption.html) in the Userguide, [Decrypt +File](#help/ah_decrypt_file.html) action. + +[]{#deleteDir} + +##### deleteDir + +`var ok = deleteDir( str dirPath, bool recurse, bool useRoot )` + +Delete the named *dirPath*. *recurse* must be specified if the directory +is not empty. + +If *useRoot* is specified, the operation will be performed as the root +user (where available). + +[]{#deleteFile} + +##### deleteFile + +`var ok = deleteFile( str filePath, int shredTimes, bool useRoot )` + +Delete the named *filePath*. + +*shredTimes* has range 0-10. + +If *useRoot* is specified, the operation will be performed as the root +user (where available). + +See also: action [Delete File](#help/ah_delete_file.html) + +[]{#destroyScene} + +##### destroyScene + +`var ok = destroyScene( str sceneName )` + +Hide the named [scene](#scenes.html) if it\'s visible, then destroy it. + +[]{#displayAutoBright} + +##### displayAutoBright + +`var ok = displayAutoBright( bool onFlag )` + +Whether the display brightness should automatically adjust to the +ambient light or not. + +[]{#displayAutoRotate} + +##### displayAutoRotate + +`var ok = displayRotate( bool onFlag )` + +Whether the display orientation should change based on the physical +orientation of the device. + +[]{#displayTimeout} + +##### displayTimeout + +`var ok = displayTimeout( int hours, int minutes, int seconds )` + +How long the period of no-activity should be before the display is +turned off. + +[]{#dpad} + +##### dpad + +`var ok = dpad( str direction, int noRepeats )` + +Simulate a movement or press of the hardware dpad (or trackball). + +*direction* must be one of **up, down, left, right** or **press**. + +This function requires a rooted device. + +[]{#enableProfile} + +##### enableProfile + +`var ok = enableProfile( str name, boolean enable )` + +Enable or disable the named Tasker profile. + +[]{#encryptDir} + +##### encryptDir + +`var ok = encryptDir( str path, str keyName, bool rememberKey, bool shredOriginal )` + +As [encryptFile()](#encryptFile), but encrypts each file in the +specified directory in turn. + +[]{#elemBackColour} + +##### elemBackColour + +`var ok = elemBackColour( str scene, str element, str startColour, str endColour )` + +Set the background [colour](#colour) of the specified +[scene](#scenes.html) element. + +See also: action [Element Back +Colour](#help/ah_scene_element_background_colour.html). + +[]{#elemBorder} + +##### elemBorder + +`var ok = elemBorder( str scene, str element, int width, str colour )` + +Set the border [colour](#colour) and width of the specified +[scene](#scenes.html) element. + +[]{#elemPosition} + +##### elemPosition + +`var ok = elemPosition( str scene, str element, str orientation, int x, int y, int animMS )` + +Move an element within it\'s scene. + +*orientation* must be one of **port** or **land**. *animMS* indicates +the duration of the corresponding animation in MS. A zero-value +indicates no animation. + +See also: action [Element +Position](#help/ah_scene_element_position.html). + +[]{#elemText} + +##### elemText + +`var ok = elemText( str scene, str element, str position, str text )` + +Set the text of the specified [scene](#scenes.html) element. + +*pos* must be one of **repl** (replace existing text completely), +**start** (insert before existing text) or **end** (append after +existing text). + +See also: action [Element Text](#help/ah_scene_element_text.html). + +[]{#elemTextColour} + +##### elemTextColour + +`var ok = elemTextColour( str scene, str element, str colour )` + +Set the text [colour](#colour) of the specified [scene](#scenes.html) +element. + +See also: action [Element Text +Colour](#help/ah_scene_element_text_colour.html). + +[]{#elemTextSize} + +##### elemTextSize + +`var ok = elemTextSize( str scene, str element, int size )` + +Set the text size of the specified [scene](#scenes.html) element. + +See also: action [Element Text +Size](#help/scene_element_text_size.html). + +[]{#elemVisibility} + +##### elemVisibility + +`var ok = elemVisibility( str scene, str element, boolean visible, int animationTimeMS )` + +Make the specified [scene](#scenes.html) element visible or invisible. + +See also: action [Element +Visibility](#help/ah_scene_element_visibility.html). + +[]{#endCall} + +##### endCall + +`var ok = endCall()` + +Terminate the current call (if there is one). + +[]{#encryptFile} + +##### encryptFile + +`var ok = encryptFile( str path, str keyName, bool rememberKey, bool shredOriginal )` + +Encrypt the specified file using the encryption parameters specified in +`Menu / Prefs / Action`. + +If *rememberKey* is set, the entered passphrase will be reapplied +automatically to the next encryption/decryption operation with the +specified *keyName*. + +If *shredOriginal* is specified, the original file will be overwritten +several times with random bits if encryption is successful. + +See Also: [Encryption](#encryption.html) in the Userguide, [Encrypt +File](#help/ah_encrypt_file.html) action. + +[]{#enterKey} + +##### enterKey + +`var ok = enterKey( str title, str keyName, bool showOverKeyguard, bool confirm, str background, str layout, int timeoutSecs )` + +Show a dialog to enter the passphrase for the specified *keyName*. The +JavaScript waits until the dialog has been dismissed or the timeout +reached. + +- *confirm*: if set, the passphrase must be entered twice to ensure it + is correct. +- *background*: \[optional\] a file path or file URI to a background + image. +- *layout*: the name of a user-created [scene](#scenes.html) to use in + place of the built-in scene. + +See Also: [Encryption](#encryption.html) in the Userguide + +[]{#filterImage} + +##### filterImage + +`bool ok = filterImage( str mode, int value )` + +Filter an image previously loaded into Tasker\'s image buffer via +[loadImage()](#loadImage) + +Possible values of *mode* are: + +- **bw**: convert to black & white, using *value* as a threshold +- **eblue**: enhance blue values by *value* +- **egreen**: enhance green values by *value* +- **ered**: enhance red values by *value* +- **grey**: convert to greyscale, *value* is unused +- **alpha**: set pixel alpha (opposite of transparency) to *value* + +*value* should be 1-254. + +[]{#flipImage} + +##### flipImage + +`bool ok = flipImage( bool horizontal )` + +Flip an image previously loaded into Tasker\'s image buffer via +[loadImage()](#loadImage) + +If *horizontal* is false, the image is flipped vertically. + +[]{#exit} + +##### exit + +`exit()` + +Stop execution of the JavaScript. + +[]{#flash} + +##### flash + +`flash( str message )` + +Flash a short-duration Android \'Toast\' message. []{#flashLong} + +##### flashLong + +`flashLong( str message )` + +Flash a long-duration Android \'Toast\' message. []{#getLocation} + +##### getLocation + +`var ok = getLocation( str source, bool keepTracking, int timeoutSecs )` + +Try to get a fix of the current device location. + +*source* must be one of **gps, net** or **any**. + +If *keepTracking* is set, the specified source(s) will be left tracking +with the purpose of providing a much quicker fix next time the function +is called. + +Fix coordinates are stored in the global Tasker variables **%LOC** (GPS) +and/or **%LOCN** (Net). The value can be retrieved with the +[global](#global) function. Several other parameters of the fix are also +available, see [Variables](#variables.html). + +Example + + + var lastFix = global( 'LOC' ); + if ( + getLocation( 'gps' ) && + ( global( 'LOC' ) != lastFix ) + ) { + flash( "New fix: " + global( 'LOC' ) ); + } + +See also: action [Get Location](#help/ah_get_fix.html), function +[stopLocation](#stopLocation). + +[]{#getVoice} + +##### getVoice + +`str result = getVoice( str prompt, str languageModel, int timeout )` + +Get voice input and convert to text. + +*result* is \'undefined\' if the voice acquisition failed, otherwise +it\'s an array of possible matching texts. + +*prompt* is a label for the dialog that is shown during voice +acquisition. + +*languageMode* gives the speech recognition engine a clue as to the +context of the speech. It must be one of **web** for \'web search\' or +**free** for \'free-form\'. + +[]{#goHome} + +##### goHome + +`goHome( int screenNum )` + +Go to the Android home screen. *screenNum* is not supported by all home +screens. + +[]{#haptics} + +##### haptics + +`var ok = haptics( bool onFlag )` + +Enable/disable system setting Haptic Feedback. + +[]{#hideScene} + +##### hideScene + +`var ok = hideScene( str sceneName )` + +Hide the named [scene](#scenes.html) if it\'s visible. + +[]{#global} + +##### global + +`var value = global( str varName )` + +Retrieve the value of a Tasker global variable. Prefixing the name with +% is optional. + +Example: + + flash( global( '%DogName' ) ); + +[]{#listFiles} + +##### listFiles + +`str files = listFiles( str dirPath, bool hiddenToo )` + +List all files in the specified *dirPath*. + +*files* is a newline-separated list of subfiles. + +If no files or found or an error occurs, the returned value will be +`undef`. + +If *hiddenToo* is specified, files starting with period are included, +otherwise they are not. + +Example: + + var files = listFiles( '/sdcard' ); + var arr = files.split( '\n' ); + flash( 'Found ' + arr.length + ' files' ); + +[]{#loadApp} + +##### loadApp + +`var ok = loadApp( str name, str data, bool excludeFromRecents )` + +Start up the named app. + +*Name* can be a package name or app label, it\'s tested first against +known package names. **Note**: app label could be localized to another +language if the script is used in an exported app. + +*Data* is in URI format and app-specific. + +When *excludeFromRecents* is true, the app will not appear in the home +screen \'recent applications\' list. + +[]{#loadImage} + +##### loadImage + +`var ok = loadImage( str uri )` + +Load an image into Tasker\'s internal image buffer. + +The following uri formats are currently supported: + +- *file://* followed by a local file path + +See also [Load Image](#help/ah_load_image.html) action. + +[]{#lock} + +##### lock + +`var ok = lock( str title, str code, bool allowCancel, bool rememberCode, bool fullScreen, str background, str layout )` + +Show a lock screen, preventing user interaction with the covered part of +the screen. The JavaScript waits until the code has been entered or the +lock cancelled (see below). + +- *code*: the numeric code which must be entered for unlock +- *allowCancel*: show a button to remove the lockscreen, which causes + a return to the Android home screen +- *rememberCode*: the code will be remembered and automatically + entered when the lock screen is show in future, until the display + next turns off +- *background*: \[optional\] a file path or file URI to a background + image. +- *layout*: the name of a user-created [scene](#scenes.html) to use in + place of the built-in lock scene + +[]{#local} + +##### local + +`var value = local( str varName )` + +Retrieve the value of a Tasker scene-local variable. The name should +**not** be prefixed with *%*. + +This function is only for use by JavaScript embedded in HTML and +accessed via a WebView scene element. + +[]{#mediaControl} + +##### mediaControl + +`var ok = mediaControl( str action )` + +Control media via simulation of hardware buttons. + +Possible *action*s are **next, pause, prev, toggle, stop** or **play**. + +[]{#micMute} + +##### micMute + +`var ok = micMute( bool shouldMute )` + +Mute or unmute the device\'s microphone (if present), + +[]{#mobileData} + +##### mobileData + +`var ok = mobileData( bool set )` + +Enable or disable the system Mobile Data setting. + +See also: action [Mobile Data](#help/ah_mobile_data_direct.html) +[]{#musicBack} + +##### musicBack + +`var ok = musicBack( int seconds )` + +Skip back by *seconds* during playback of a music file previously +started by [musicPlay](#musicPlay). + +See also: [musicSkip](#musicSkip), [musicStop](#musicStop) + +[]{#musicPlay} + +##### musicPlay + +`var ok = musicPlay( str path, int offsetSecs, bool loop, str stream )` + +Play a music file via Tasker\'s internal music player. + +*stream* to which [audio stream](#streams) the music should be played + +This function does **not** not wait for completion. + +The last 3 arguments may be ommitted, in which case they default to +**0**, **false** and **media** respectively. + +See also: [musicStop](#musicStop), [musicBack](#musicBack), +[musicSkip](#musicSkip) + +[]{#musicSkip} + +##### musicSkip + +`var ok = musicSkip( int seconds )` + +Skip forwards by *seconds* during playback of a music file previously +started by [musicPlay](#musicPlay). + +See also: [musicBack](#musicBack), [musicStop](#musicStop) + +[]{#musicStop} + +##### musicStop + +`var ok = musicStop()` + +Stop playback of a music file previously started by +[musicPlay](#musicPlay). + +See also: [musicBack](#musicBack), [musicSkip](#musicSkip) + +[]{#nightMode} + +##### nightMode + +`var ok = nightMode( bool onFlag )` + +Turn on or off Android Night Mode. + +[]{#popup} + +##### popup + +`var ok = popup( str title, str text, bool showOverKeyguard, str background, str layout, int timeoutSecs )` + +Show a popup dialog. The JavaScript waits until the popup has been +dismissed or the timeout reached. + +- *background*: \[optional\] a file path or file URI to a background + image. +- *layout*: the name of a user-created [scene](#scenes.html) to use in + place of the built-in popup scene. + +[]{#performTask} + +##### performTask + +`var ok = performTask( str taskName, int priority, str parameterOne, str parameterTwo )` + +Run the Tasker task *taskName*. + +Note that the JavaScript does not wait for the task to complete. + +[]{#profileActive} + +##### profileActive + +`bool active = profileActive( str profileName )` + +Whether the named Tasker profile is currently active. Returns false if +the profile name is unknown. + +[]{#pulse} + +##### pulse + +`bool ok = pulse( bool onFlag )` + +Enable or disable the Android Notification Pulse system setting. + +[]{#readFile} + +##### readFile + +`var contents = readFile( str path )` + +Read the contents of a text file. + +[]{#reboot} + +##### reboot + +`var ok = reboot( str type )` + +Reboot the device. + +*type* is one of **normal, recovery** or **bootloader**. It can be +ommitted and defaults to **normal**. + +Requires a rooted device. + +See also: function [shutdown](#shutdown) []{#resizeImage} + +##### resizeImage + +`var ok = resizeImage( int width, int height )` + +Scale the current image in Tasker\'s image buffer to the specified +dimensions. + +[]{#rotateImage} + +##### rotateImage + +`var ok = rotateImage( str dir, int degrees )` + +Rotate the current image in Tasker\'s image buffer. + +*dir* must be one of **left** or **right**. *degrees* must be one of +**45, 90, 135** or **180**. + +[]{#saveImage} + +##### saveImage + +`var ok = saveImage( str path, int qualityPercent, bool deleteFromMemoryAfter )` + +Save the current image in Tasker\'s image buffer to the specified file +*path*. + +[Save Image](#help/ah_save_image.html) action. + +[]{#say} + +##### say + +`var ok = say( str text, str engine, str voice, str stream, int pitch, int speed )` + +Cause the device to say *text* out loud. + +- *engine*: the speech engine e.g. **com.svox.classic** Defaults to + the system default (specify *undefined* for that) +- *voice*: the voice to use (must be supported by *engine*). Defaults + to the current system language (specify *undefined* for that) +- *stream*: to which [audio stream](#streams) the speech should be + made +- *pitch*: 1-10 +- *speed*: 1-10 + +The script waits for the speech to be finished. + +[]{#sendIntent} + +##### sendIntent + +`var ok = sendIntent( str action, str targetComp, str package, str class, str category, str data, str mimeType, str[] extras );` + +Send an intent. Intents are Android\'s high-level application +interaction system. + +Any parameter may be specified as undefined. + +- *targetComp*: the type of application component to target, one of + **receiver, activity** or **service**. Defaults to **receiver**. +- *package*: the application package to limt the intent to +- *class*: the application class to limit the intent to +- *category*: one of **none, alt, browsable, cardock, deskdock, home, + info, launcher, preference, selectedalt, tab** or **test**, defaults + to **none** +- *extras*: extra data to pass, in the format key:value. May be + undefined. Maximum length 2. + +See also: action [Send Intent](#help/ah_send_intent.html). + +[]{#sendSMS} + +##### sendSMS + +`var ok = sendSMS( str number, str text, boolean storeInMessagingApp );` + +Send an SMS. + +See also: action [Send SMS](#help/ah_send_sms.html) + +[]{#setAirplaneMode} + +##### setAirplaneMode + +`var ok = setAirplaneMode( bool setOn )` + +Enable or disable Airplane Mode. + +Get the current value with: + +` var enabled = global( 'AIR' );` + +See also: function [setAirplaneRadios](#setAirplaneRadios) + +[]{#setAirplaneRadios} + +##### setAirplaneRadios + +`var ok = setAirplaneRadios( str disableRadios )` + +Specify the radios which will be **disabled** when the device enters +Airplane Mode. + +*disableRadios* is a comma-separated list with radio names from the +following set: **cell, nfc, wifi, wimax, bt**. + +Get the current value with: + +` var radios = global( 'AIRR' );` + +See also: function [setAirplaneMode](#setAirplaneMode) + +[]{#setAlarm} + +##### setAlarm + +`var ok = setAlarm( int hour, int min, str message, bool confirmFlag )` + +Create an alarm in the default alarm clock app. + +*confirmFlag* specifies whether the app should confirm that the alarm +has been set. + +*message* is optional. + +Requires Android version 2.3+. + +[]{#setAutoSync} + +##### setAutoSync + +`var ok = setAutoSync( bool setOn )` + +Enable or disable the global auto-sync setting. + +[]{#scanCard} + +##### scanCard + +`var ok = scanCard( str path )` + +Force the system to scan the external storage card for new/deleted +media. + +If *path* is defined, only that will be scanned. + +See also: action [Scan Card](#help/ah_scan_card.html) + +[]{#setBT} + +##### setBT + +`var ok = setBT( bool setOn )` + +Enable or disable the Bluetooth radio (if present). + +Test BT state with: + +` if ( global( 'BLUE' ) == "on" ) { doSomething(); }` + +[]{#setBTID} + +##### setBTID + +`var ok = setBTID( str toSet )` + +Set the bluetooth adapter ID (the name as seen by other devices). + +[]{#setGlobal} + +##### setGlobal + +`setGlobal( str varName, str newValue )` + +Set the value of a Tasker global user variable. Prefixing varName with % +is optional. + +Arrays are **not** supported due to limitations of the Android JS +interface. + +[]{#setKey} + +##### setKey + +`var ok = setKey( str keyName, str passphrase )` + +Set the passphrase for the specified *keyName*. + +See Also: [Encryption](#encryption.html) in the Userguide. + +[]{#setLocal} + +##### setLocal + +`setLocal( str varName, str newValue )` + +Set the value of a Tasker **scene-local** user variable. Variable names +should **not** be prefixed with *%*. + +This function is only for use by JavaScript embedded in HTML and +accessed via a WebView scene element. + +[]{#setClip} + +##### setClip + +`var ok = setClip( str text, bool appendFlag )` + +Set the global system clipboard. + +Test the value with: + +` var clip = global( 'CLIP' );` + +[]{#settings} + +##### settings + +`var ok = settings( str screenName )` + +Show an Android System Settings screen. + +*screenName* must be one of **all, accessibility, addacount, +airplanemode, apn, app, batteryinfo, appmanage bluetooth, date, +deviceinfo, dictionary, display, inputmethod, internalstorage, locale, +location, memorycard, networkoperator, powerusage, privacy, quicklaunch, +security, mobiledata, search, sound, sync, wifi, wifiip** or +**wireless**. + +[]{#setWallpaper} + +##### setWallpaper + +`var ok = setWallpaper( str path )` + +Set the system home screen wallpaper. + +[]{#setWifi} + +##### setWifi + +`var ok = setWifi( bool setOn )` + +Enable or disable the Wifi radio (if present). + +Test wifi state with: + +` if ( global( 'WIFI' ) == "on" ) { doSomething(); }` + +[]{#shell} + +##### shell + +`var output = shell( str command, bool asRoot, int timoutSecs )` + +Run the shell command *command*. + +*asRoot* will only have effect if the device is rooted. + +*output* is \'undefined\' if the shell command failed. It\'s maximum +size is restricted to around 750K. + +[]{#showScene} + +##### showScene + +`var ok = showScene( str name, str displayAs, int hoffset, int voffset, bool showExitIcon, bool waitForExit )` + +Show the named [scene](#scenes.html), creating it first if necessary. + +- *displayAs*: options: + `Overlay, OverBlocking, OverBlockFullDisplay, Dialog, DialogBlur, DialogDim, ActivityFullWindow, ActivityFullDisplay, ActivityFullDisplayNoTitle` +- *hoffset, voffset*: percentage vertical and horizontal offset for + the scene -100% to 100% (not relevant for full screen/window display + types) +- *showExitIcon*: display a small icon in the bottom right which + destroys the scene when pressed +- *waitForExit*: whether to wait for the scene to exit before + continuing the script + +[]{#shutdown} + +##### shutdown + +`var ok = shutdown()` + +Shutdown the device. + +Requires a rooted device. + +See also: [reboot](#reboot) + +[]{#silentMode} + +##### silentMode + +`var ok = silentMode( str mode )` + +Set the system silent (\'ringer\') mode. + +*mode* must be one of **off, vibrate** or **on** + +[]{#sl4a} + +##### sl4a + +`var ok = sl4a( str scriptName, boolean inTerminal )` + +Run a previously created +[SL4A](https://code.google.com/p/android-scripting/) script. + +[]{#soundEffects} + +##### soundEffects + +`var ok = soundEffects( bool setTo )` + +Setting the system *Sound Effects* setting (sound from clicking on +buttons etc. + +[]{#speakerphone} + +##### speakerphone + +`var ok = speakerPhone( bool setFlag )` + +Enable or disable the speakerphone function. + +[]{#statusBar} + +##### statusBar + +`var ok = statusBar( bool expanded )` + +Expand or contract the system status bar. + +[]{#stayOn} + +##### stayOn + +`var ok = stayOn( str mode )` + +Specify whether the device should remain on when power is connected. + +Possible *mode*s are **never, ac, usb, any**. + +[]{#stopLocation} + +##### stopLocation + +`var ok = stopLocation()` + +Stop tracking a location provider. This is only relevant when a +[getLocation](#getLocation) function has been previously called with the +*keepTracking* parameter set. + +[]{#systemLock} + +##### systemLock + +`var ok = systemLock()` + +Turn off the display and activate the keyguard. + +Requires Tasker\'s Device Administrator to be enabled in Android +settings. + +[]{#taskRunning} + +##### taskRunning + +`bool running = taskRunning( str taskName )` + +Whether the named Tasker task is currently running. Returns false if the +task name is unknown. + +[]{#takeCall} + +##### takeCall + +`bool ok = takeCall();` + +Auto-accept an incoming call (if there is one). + +[]{#takePhoto} + +##### takePhoto + +`bool ok = takePhoto( int camera, str fileName, str resolution, bool insertGallery )` + +Take a photo with the builtin camera. + +- *camera*: 0 = rear camera, 1 = front camera +- *resolution*: format WxH e.g. 640x840 +- *insertGallery*: whether to insert the resulting picture in the + Android Gallery application + +See also: action [Take Photo](#help/ah_take_photo.html) + +[]{#type} + +##### type + +`var ok = type( str text, int repeatCount )` + +Simulate keyboard typing. + +Requires a rooted device. + +[]{#unzip} + +##### unzip + +`boolean ok = unzip( str zipPath, bool deleteZipAfter )` + +Unpack a Zip archive into the parent directory of the archive. + +*deleteZip* causes the zip archive to be deleted after successful +unpacking. + +[]{#usbTether} + +##### usbTether + +`usbTether( bool set )` + +Enable or disable USB tethering. + +See also: action [USB Tether](#help/ah_tether_usb.html) + +[]{#vibrate} + +##### vibrate + +`vibrate( int durationMilliseconds )` + +Cause the device to vibrate for the specified time. + +[]{#vibratePattern} + +##### vibratePattern + +`vibratePattern( str pattern )` + +Cause the device to vibrate following the specified *pattern*, which +consists of a sequence of off then on millisecond durations e.g. + +`500,1000,750,1000` + +wait for 500ms, vibrates 1000ms, wait for 750ms, then vibrate for +1000ms. + +[]{#wait} + +##### wait + +`wait( int durationMilliseconds )` + +Pause the script for the specified time. + +Warning: may cause some preceeding functions not to complete in some +situations. If in doubt, use JavaScript setTimeout() instead. + +[]{#wifiTether} + +##### wifiTether + +`var ok = wifiTether( bool set )` + +Enable or disable Wifi tethering. + +See also: action [Wifi Tether](#help/ah_tether_wifi.html) + +[]{#writeFile} + +##### writeFile + +`var ok = writeFile( str path, str text, bool append )` + +Write *text* to file *path*. + +If *append* is specified, the text will be attached to the end of the +existing file contents (if there are any). + +[]{#zip} + +##### zip + +`boolean ok = zip( str path, int level, bool deleteOriginalAfter )` + +Zip a file or directory. + +*level* is the desired compression level from 1-9, with 9 resulting in +the smallest file and the longest compression time. + +*deleteOriginal* causes *path* to be deleted if the zip operation is +successful. + +[]{#notes} + +### Notes + +[]{#streams} + +#### Audio Streams + +Must be one of **call, system, ringer, media, alarm** or +**notification** []{#colour} + +#### Colours + +Colours are specified in *AARRGGBB* hexadecimal format, with solid white +being **FFFFFFFF**. []{#paths} + +#### File Paths + +File paths can be specified as either absolute (start with **/**) or +relative (don\'t start with **/**). + +Relative file paths are relative to the root of the internal storage +media. So, for example, `pics/me.jpg` might resolve to +`/sdcard/pics/me.jpg`. + +[]{#loctears.html} + +Location Without Tears ![](icon_tasker.png) +------------------------------------------- + +This is an overview guide to choosing a method for fixing your location +with Tasker. At the end are some [advanced power-saving +strategies](#adv). + +Power / Accuracy Comparison +--------------------------- + + Method Power Usage Acc Network Wifi BT + ---------------------------------- ------------- --------------- --------- ------ ---- + [State: Cell Near](#cell) \* \* + [State: BT Near](#btnear) \*\* \*\*\*\*\* Y + [Location: Net](#net) \*\* \*\* Y + [Location: Net & Wifi](#netwifi) \*\*\* \*/\*\*\*\*\* Y Y + [State: Wifi Near](#near) \*\*\*\* \*\*\*\*\* Y + [Location: GPS](#gps) \*\*\*\*\* \*\*\*\*\* Y + +More stars mean higher power usage or higher accuracy (Acc). + +Detail Comparison +----------------- + +[]{#cell} + +### State: Cell Near + +##### Setup + +Create a **state context**, select **Phone** then **Cell Near**. Click +Update and walk around a bit to scan for cell towers nearby. + +##### About + +Uses information about the cell towers the phone uses for telephony to +record and match a location. + +When the display is off, frequency of checks is controlled by +`Prefs / Monitor / Display Off All Checks`. + +If your profile keeps deactivating, go back to the Cell Near state and +click the magnifying glass icon to check for cells you may have missed +in your scan. + +##### Plus / Minus + +- (+) virtually no extra power on top of power needed for normal phone + service +- (+) when the display is on, context updates as soon as the tower is + visible +- (+) when the display is off, only one check period is needed to + determine context exit +- (-) highly inaccurate +- (-) must be physically at the location in order to record it + +##### Other Settings + +- `Monitor / General Monitoring / Use New Cell API`: if you\'re not + seeing any cells at all when scanning on a modern device, try + checking this +- `Monitor / Display Off Monitoring / Cell Workaround`: if things + aren\'t working when the display is off +- `Monitor / Display Off Monitoring / Cell Wake Screen`: second + possible workaround when the display is off + +[]{#btnear} + +### State: BT Near + +##### Setup + +Create a **State context**, click **BT Near** (in the Net category), +fill in the name or address of a bluetooth device near the location you +want to identify. + +##### About + +BT Near does regular bluetooth Scans and will activate when it +recognizes a device you have configured is nearby. Note: you don\'t have +to connect to the device, so it doesn\'t have to be a device you own. + +Frequency of checks is controlled by `Prefs / Monitor / BT Scan Seconds` +(screen on) and `Prefs / Monitor / Display Off All Checks` (screen off). + +Check the **BT Toggle** box if you don\'t want bluetooth enabled all the +time. It will then be toggled when Tasker needs to do a scan. + +If your target device is a low-energy device, deselect **Standard +Devices** to reduce energy usage. If you can pair with the target +device, you can have a major reduction in power usage and scan times by +not selecting **Non-Paired Devices**. + +##### Plus / Minus + +- (+) very good accuracy, reliability +- (+) modest power usage, especially for paired devices +- (+) works indoors too +- (-) need a known device nearby + +##### Other Settings + +- `Prefs / Monitor / Display Off Monitoring / Motion Detection`: if + available on your device, will need to be disabled if you wish to + detect a nearby BT device that may move or turn off or on + +[]{#net} + +### Location: Net + +##### Setup + +Create a location context, and deselect GPS. + +##### About + +Net location accuracy varies greatly. It\'s **very important** that you +create a **large radius** around the spot you wish to detect. + +Frequency of checks is controlled by +`Prefs / Monitor / Network Location Check` (screen on) and +`Prefs / Monitor / Display Off All Checks`. + +[More Info](#loccontext.html). + +##### Plus / Minus + +- (+) extremely low (extra) power (IF network is available anyway) +- (-) requires network and phone service +- (-) highly inaccurate and variable fixes + +[]{#netwifi} + +### Location: Net & Wifi + +##### Setup + +Create a location context and deselect GPS. Make sure your device\'s +Wifi is turned on when you want a more accurate location fix. + +##### About + +Net location can be assisted by nearby access points when Wifi is turned +on (Google has a map of APs for many areas). + +Turn Wifi off when not needed to conserve power e.g. use a Time context +to turn wifi off at night. + +##### Plus / Minus + +- (+) very good accuracy in built-up areas for relatively low power + usage +- (-) must be physically at the location in order to record it + +[]{#near} + +### State: Wifi Near + +##### Setup + +Create a **State context**, click **Wifi Near** (in the Net category), +fill in the SSID of an Access Point (AP) with the best signal near where +you want to identify. + +##### About + +Wifi Near does regular Wifi Scans and will activate when it recognizes +an AP you have configured is nearby. Note: you don\'t have to connect to +the AP. You could configure e.g. the neighbours AP if the signal is +strong enough. + +Frequency of checks is controlled by +`Prefs / Monitor / Wifi Scan Seconds` (screen on) and +`Prefs / Monitor / Display Off All Checks` (screen off). + +Check the **Wifi Toggle** box if you don\'t want wifi on all the time. +It will then be toggled when Tasker needs to do a scan. This isn\'t +needed in In Android 4.4+ if you select `Scanning Always Available` in +Advanced Wifi Settings and will save power. + +##### Plus / Minus + +- (+) very good accuracy and reliability +- (+) less power than GPS +- (+) works indoors too +- (-) need an AP nearby + +##### Other Settings + +- `Prefs / Monitor / Display Off Monitoring / Motion Detection`: if + available on your device, will need to be disabled if you wish to + detect an AP that may turn off and on. + +[]{#gps} + +##### Location: GPS + +##### Setup + +Create a location context, and deselect Net. + +##### About + +Frequency of GPS checks is controlled by `Prefs / Monitor / GPS Check` +(screen on) and `Prefs / Monitor / Display Off All Checks`. Higher +frequencies mean more battery usage but that location changes will be +noticed more quickly. + +When indoors, GPS will try a long time to get a signal, using a lot of +battery. Adjust it at `Prefs / Monitor / GPS Timeout`. Make the timeout +as low as you can until you start losing effectiveness. + +[More Info](#loccontext.html). + +##### Plus / Minus + +- (+) highly accurate in the open air +- (-) functions very poorly or not at all indoors. A bad side effect + is that if you enter a building e.g. office while between the check + times, it may never detect your new location until you leave. +- (-) extreme power usage +- (-) needs network to get a first fix + +##### Other Settings + +- `Prefs / Monitor / Display Off Monitoring / Motion Detection`: if + available on your device, will need to be disabled if you wish to + detect changes of location on the order of a few meters. + +[]{#adv} + +### Advanced Strategies + +##### Motion Detection + +Some devices have a low-power accelerometer that can be active while the +rest of the device is sleeping. + +For such devices, Tasker will not do location checks with the display +off unless it detects that significant movement has taken place since +the last check, resulting in lower power usage and faster response times +when the device does eventually move. + +##### Multiple Contexts + +Tasker does not check high-power contexts until all lower-power contexts +in the same profile are active. You can use this to reduce power +consumption. For instance, if you use the Wifi Near state to detect +coming home, you could add a Location: Net context to the same profile, +so that wifi scanning will only take place when you are in the right +neighbourhood. + +##### Location Control + +Disable GPS/Net location when they\'re not needed by creating a separate +profile with e.g. a Time context which disables GPS during the night. + +This works because Location contexts assume you are in the same location +until there is a fix which says otherwise. + +[]{#matching.html} + +Pattern Matching ![](icon_tasker.png) +------------------------------------- + +### What\'s Pattern Matching ? + +With Pattern Matching, you specify a *pattern* which tells Tasker what +text you wish to match. For instance, if you want to match any telephone +number starting with **0135**, you can specify the simple match +**0135\***. **\*** is a special character which *matches* any number of +any character. + +Tasker has two type of matching, [Simple Matching](#simple) and more +advanced [Regex Matching](#regex). []{#simple} + +### Simple Matching + +Simple matching is designed to be easy for non-technical people to use. + +#### Where\'s It Used ? + +Simple Matching is used in the following places: + +- in the **If** condition of an action, when the **\~** (match) or + **!\~** (not match) operators are specified. +- in text paremeters of State and Event contexts +- some other places :-) + +#### Matching Rules + +- if a pattern is left blank, it will match against anything +- if it is not blank it must match the whole target text +- **/** means \'or\', it divides up multiple possible matches +- a **\*** will match any number of any character. It\'s not possible + to specifically match a **\*** character. +- a **+** will match one or more of any character. It\'s not possible + to specifically match a **+** character.\ + Beware: the condition \'%var matches +\' will be **true** if %var + has not been assigned a value, because Tasker does not replace + variables which do not have a value. +- matching is case-insensitive (*magic* will match with *MagiC*) + **unless** the pattern contains an upper-case letter e.g. *Magic\** + will not match against *magically*, but it will match against *Magic + Roundabout* +- a **!** at the very start of a match means **not** e.g. + *!\*Magic\*/\*Yellow\** matches anything **not** containing the + words *Magic* or *Yellow* +- it is not possible to specifically match a **!** character at the + start of a target (but you could use **\*!** + +Examples + +- *help* matches *help* but not *helper*. +- *help\** matches *helper* +- *\*the\** matches *the* (anywhere) +- *123+* matches *123* and minimally one more character +- *+* matches anything with at least one character (non-empty) +- *the\*way* matches *the other way* and *the first way*, amongst + others +- *Help/\*shell* matchs *Help* or anything ending with *shell*, + case-sensitively + +[]{#caller} + +#### Caller Matching + +Caller matching (some events and states e.g. *Call*) is handled slightly +differently. + +- *C:ANY* matches the telephone number of any contact +- *C:FAV* matches the telephone number of any favourite (starred) + contact +- *CG:`groupmatch`* matches the telephone number of a contact in a + group which matches `groupmatch` +- *Otherwise:* otherwise a match is attempted using the general + matching rules against **both** the caller phone number and the + associated contact\'s name (if there is one). + +Examples: + +- *!C:ANY* matches a number **not** belonging to a contact +- *077\*/Geoff\** matches a number starting with *077* or belonging to + a contact whose names starts with *Geoff* +- *C:FAV/0123456789* matches any favourite contact or the telephone + number *0123456789* +- *CG:\*Family\*/CG:Business* matches any contact in the contact + groups *Family Members*, *My Family* or *Business* + +[]{#regex} + +### Regular Expression Matching + +Regular expressions are similar to simple matching patterns but have +many more features and are much harder for non-technical people. + +#### Where\'s It Used ? + +Regex Matching is available: + +- in the **If** condition of an action, when the **\~R** or **!\~R** + operators are specified. +- in the *Variable Search Replace* action +- in the condition of a *Variable Value* state +- wherever a Simple Match is possible, by preceding the regex with + **\~R** or **!\~R** + +#### Matching Rules + +Standard Java regular expression matching is applied. The Android +Developer site has a [reference +page](http://developer.android.com/reference/java/util/regex/Pattern.html). +[]{#maths.html} + +Maths ![](icon_tasker.png) +-------------------------- + +#### Where Is Maths Used ? + +- When you do `Variable Set` and click the *Do Maths* checkbox +- With the `If` action, if you select a mathematical comparison like + **\<** or **=** +- With individual action conditions when a mathematical comparison is + selected + +#### What\'s Available + +Tasker uses the [MathEval](http://www.softwaremonkey.org/Code/MathEval) +library by Lawrence PC Dol. + +#### Operators + +- **+ - \* /** - the basic operators +- **%** - modulus +- **\^** - power + +##### Constants + +- **E** - the base of the natural logarithms +- **EUL** - Euler\'s Constant +- **LN2** - log of 2 base e +- **LN10** - log of 10 base e +- **LOG2E** - log of e base 2 +- **LOG10E** - log of e base 10 +- **PHI** - the golden ratio +- **PI** - the ratio of the circumference of a circle to its diameter + +##### Functions + +Trigonometric functions expect a value in radians. + +Functions take their argument in parenthesis e.g. sin(torad((90)) + +- **abs** - absolute value +- **acos** - arc cosine; the returned angle is in the range 0.0 + through pi +- **asin** - arc sine; the returned angle is in the range -pi/2 + through pi/2 +- **atan** - arc tangent; the returned angle is in the range -pi/2 + through pi/2 +- **cbrt** - cube root +- **ceil** - smallest value that is greater than or equal to the + argument and is an integer +- **cos** - trigonometric cosine +- **cosh** - hyperbolic cosine +- **exp** - Euler\'s number e raised to the power of the value +- **expm1** - *e*x-1 +- **floor** - largest value that is less than or equal to the argument + and is an integer +- **getExp** - unbiased exponent used in the representation of val +- **log** - natural logarithm (base e) +- **log10** - base 10 logarithm +- **log1p** - natural logarithm of (val+1) +- **nextup** - floating-point value adjacent to val in the direction + of positive infinity +- **round** - closest 64 bit integer to the argument +- **roundhe** - double value that is closest in value to the argument + and is equal to a mathematical integer, using the half-even rounding + method. +- **signum** - signum function of the argument; zero if the argument + is zero, 1.0 if the argument is greater than zero, -1.0 if the + argument is less than zero +- **sin** - trigonometric sine +- **sinh** - hyperbolic sine +- **sqrt** - correctly rounded positive square root +- **tan** - trigonometric tangent +- **tanh** - hyperbolic tangent +- **todeg** - converts an angle measured in radians to an + approximately equivalent angle measured in degrees +- **torad** - converts an angle measured in degrees to an + approximately equivalent angle measured in radians +- **ulp** - size of an ulp of the argument + +[]{#power.html} + +Power ![](icon_tasker.png) +-------------------------- + +Internally, Tasker does its best to keep power usage down. Following are +some macro-strategies to achieve this. + +#### Context Monitoring + +When a profile contains multiple contexts, power is saved by only +monitoring for changes in order of the least-power-hungry first. For +example, in a profile with a Time and App context, Tasker will not +decide that it needs to monitor for a changing application unless the +Time context is active (because the profile cannot become active until +both contexts are active). + +Tasker rates contexts for power-hungriness in the following (ascending) +order: + +- Other State +- Day / Time +- Calendar Entry State +- Cell Near State +- App +- BT Near State +- Network Location +- Wifi Near State +- GPS Location +- Temperature / Humidity / Proximity / Pressure / Magnetic Field / + Light Sensor / Gesture Event / Orientation State (accelerometer + activation) + +Items at the bottom of the list won\'t become eligible for monitoring +until all items further up the list are active. + +#### Display-Off Checks + +When the display is off, all necessary \'active\' checks (GPS/Net +Location, Wifi Near, App) are done at the same time so that the device +is awake for as short a time as possible. See *Display Off Timings* in +`Menu / Prefs / Monitor` for the frequency and maximum duration of these +checks. []{#settings.html} + +Settings ![](icon_tasker.png) +----------------------------- + +#### What\'s A Setting ? + +Settings are actions like *Display Brightness* and *Ringer Volume* whose +effects are reversed by Tasker when the profile(s) which applied them +are no longer active. + +Settings have a cog icon next to them. Normal actions have a lightning +bolt. + +#### Single Profile + +When a setting is applied by the profile\'s Enter Task, its value is +restored after the profile becomes inactive again. For example, if the +ringer volume is at 7 and is set to 0 in the Enter Task, when the +profile becomes inactive it is automatically set back to 7. + +In other words, settings are only valid for the lifetime of their +profiles. + +#### Multiple Profiles + +When multiple profiles that affect a setting are active simultaneously: + +1. the setting has the value from the **most recently activated** + profile +2. when **all** profiles are inactive, the setting has the value from + before **any** profile was active + +#### Special Cases + +- if a setting is changed by the Exit Task the profile will never save + the setting\'s initial value. +- settings changed in an *instant profile* (one with an event context + or repeating/non-ranged time context) remain changed after the + event. The reasoning is that there is no point in changing the + setting for the half-second that the event lasts. + +#### Notes + +- settings are not *actively* maintained. If something else changes + the setting once the Enter task has run, it\'s not the case that + this is detected and the Enter task value automatically reapplied. + +Complicated, huh ? []{#variables.html} + +Variables ![](icon_tasker.png) +------------------------------ + +#### General + +A variable is a named value which changes over time e.g. the level of +the battery, the time of day. + +When Tasker encounters a variable name in a text, it replaces the name +with the current value of the relevant variable before carrying out the +action. + +The main purposes of variables are: + +- *dynamic binding*: doing something with an action with data which + is unknown when the task is created e.g. respond to an SMS; the + sender is not known until the SMS is received. +- allow [flow control](#flowcontrol.html) within and between tasks +- record data for some future use e.g. passing data between tasks + +#### Global vs. Local Variables + +Variables which have an **all-lower-case** name (e.g. %fruit\_bar) are +*local*, meaning that their value is specific to the task or scene in +which they are used. + +Variables which have one or more capital letters in their name (e.g. +%Car, %WIFI) are *global*, meaning that wherever they are accessed from +the same value is returned. + +#### Built-In Variables + +The values of built-In variables are updated automatically by Tasker. + +##### Local Built-In Variables + +- **Action Error**\ + *%err*\ + Is set to an integer if an error occurred when running the last + action. The actual number can signify the error which occurred, but + is usually 1 for most Tasker actions (notable exception: `Run Shell` + and plugins). +- **Action Error Description**\ + *%errmsg*\ + A description of the error which **last resulted in %err being + set**. Currently never set by Tasker but possibly by some plugin + actions. +- **Task Priority**\ + *%priority*\ + The priority of the running task. The priority determines which task + executes its next action when several tasks are running together.\ + See also: [Task Scheduling](#scheduling) +- **Task Queue Time**\ + *%qtime*\ + How long (seconds) the running task has been running.\ + Note that tasks can be interrupted by higher priority tasks, so this + number is not necessarily the total run-time of the task.\ +- **Task Caller**\ + *%caller*\ + A variable array tracing the origin of the current running task. + *%caller1* gives the origin of the current task, *%caller2* the + origin of *%caller1* etc. + + Example: if task A uses action `Perform Task` to start task B, then + when task A is run by pressing the Play button in the task edit + screen, *%caller1* in task B will show **task=A**, *%caller2* will + show **ui**. + + The format of each entry in the array is + *callertype*(**=***callername*(**:***subcallername*)) + + Caller types ares detailed below: + + - **profile**\ + a profile (when it\'s state changes). *callername* is either + **enter** or **exit** depending on whether the profile activated + or deactivated. *subcallername* is the name of the profile, if + it has one, otherwise **anon** + - **scene**\ + a scene event, with *callername* being the scene name. For + element events, *subcallername* is the element name. For action + bar button presses, *subcallername* is the label if one was + given. For scene-global events (e.g. Key), *subcallername* is + event type + - **ui**\ + the Play button in the task edit screen in the Tasker UI + - **launch**\ + clicking a child application icon in the launcher + - **nbutton**\ + a notification action button, either from Tasker\'s permanent + notification or one created with one of the Notify actions. + *callername* specifies the label of the button if present. + - **external**\ + an external application + - **qstile**\ + a Quick Settings tile. *callername* specifies the label of the + tile. + - **appshort**\ + an app shortcut (accessed via long-click on the Tasker icon). + *callername* specifies the label of the tile. + - **task**\ + another task, from a Perform Task action. *subcallername* is the + task name, if it has one, otherwise **anon** + +##### Global Built-In Variables + +- **Airplane Mode Status**\ + `(dynamic)`\ + *%AIR*\ + Whether Airplane Mode is **on** or **off** +- **Airplane Radios**\ + *%AIRR*\ + A comma-separated list of the radios which will be **disabled** when + entering Airplane Mode.\ + Common radio names are: *bluetooth, cell, nfc, wifi, wimax*. +- **Battery Level**\ + *%BATT*\ + Current device battery level from 0-100. +- **Bluetooth Status** `(dynamic)`\ + *%BLUE* Whether Bluetooth is **on** or in some other state + (**off**).\ +- **Calendar List**\ + *%CALS*\ + Newline-separated list of calendars available on the device.\ + Each entry is in the format *calendarprovider:calendarname*.\ + Example usage: + + Variable Set, %newline, \n + Variable Split, %CALS, %newline + Flash, %CALS(#) calendars, first one is %CALS(1) + + For the sign *\\n*, press carriage-return on the keyboard. + +- **Calendar Event Title / Descr / Location** *%CALTITLE / %CALDESCR / + %CALLOC*\ + The title, description and location of the **current** calendar + event, if there is one. If there are multiple current calendar + events the variables refer to the **shortest**.\ + Tip: find other details about the current event(s) using the + `Misc / Test` action, specifying %TIMES for the data. +- **Call Name / Number/ Date / Time (In)** `(dynamic, monitored)`\ + *%CNAME / %CNUM / %CDATE / %CTIME*\ + The caller name, number, date and time of the current (if a call is + in progress) or last call received.\ + Caller number is **0** if it\'s unknown.\ + Caller name is **?** if it\'s unknown (probably because the caller + number was blocked) and set to the caller number if the contact + couldn\'t be looked up. It\'s unavailable on Android versions prior + to 2.0. +- **Call Name / Number/ Date / Time / Duration + (Out)**`(dynamic, monitored)`\ + *%CONAME / %CONUM / %CODATE / %COTIME / %CODUR*\ + The called name, number, date and time of the last (**not** the + current) outgoing call made.\ + Called Name is set to the called number if the contact couldn\'t be + looked up. It\'s unavailable on Android versions prior to 2.0. +- **Cell ID** `(dynamic,monitored)`\ + *%CELLID*\ + The current cell tower ID if known.\ + If you are using a Cell Near state, note that sometimes the Cell + Near state will stay active even though %CELLID reports that the + tower ID is unknown or invalid; that is because Cell Near only + responds to valid IDs to prevent the state becoming inactive e.g. + due to a service interruption.\ + For backwards compatibility, UMTS cells are reported with a GSM + prefix.\ + From Android 4.2, Tasker version 4.3+, cells could be found from 2 + different network types simultaneously. In that case, the value is + reported with preference for the network type leftmost on the list: + GSM, CDMA, UMTS, LTE. +- **Cell Signal Strength** `(dynamic,monitored)`\ + *%CELLSIG*\ + The current phone signal level from 0-8 inclusive on a rougly linear + scale. On some phones, the level will rise in steps of 2 + (0,2,4,6,8). The value is -1 if the value is unknown or there is + e.g. no service.\ + From Android 4.2, Tasker version 4.3+, cells could be found from 2 + different network types simultaneously. In that case, the value is + reported with preference for the network type leftmost on the list: + GSM, CDMA, UMTS, LTE.\ + There is a bug with some Android versions that the reported signal + strength is not updated until the device is turned off and on. +- **Cell Service State** `(dynamic,monitored)`\ + *%CELLSRV*\ + The current phone service state. One of *unknown, service, + noservice, emergency, nopower*. +- **Clipboard Contents**\ + `(dynamic,monitored)` *%CLIP*\ + The current contents of the system clipboard. +- **CPU Frequency**\ + *%CPUFREQ*\ + The current frequency CPU 0 is running at. See also: [CPU + Control](#cpu.html). +- **CPU Governor**\ + *%CPUGOV*\ + The current governor controlling the frequency of CPU 0. See also: + [CPU Control](#cpu.html). +- **Date**\ + *%DATE*\ + Current human-readable date. +- **Day of the Month**\ + *%DAYM*\ + Current Day of the Month, starting at 1. +- **Day of the Week**\ + *%DAYW*\ + Current Day of the Week starting with Sunday. +- **Device ID / Manufacturer / Model / Product**\ + *%DEVID / %DEVMAN / %DEVMOD / %DEVPROD*\ + The ID, manufacturer, model and product name of the device.\ + Note: ID is **not** a unique identifier for the device, but rather + for the hardware of the device. See also: %DEVTID. +- **Device Telephony ID**\ + *%DEVTID*\ + Returns the unique telephony-based ID for the device (e.g. for GSM + the IMEI, for CDMA the MEID or ESN).\ + Not available on all devices. +- **Display Brightness** *%BRIGHT* Current screen brightness, 0-255. + On some devices, if the Android setting Auto Brightness is enabled, + the value will always be 255. +- **Display Timeout** *%DTOUT* Current system screen timeout + (seconds). +- **Email From / Cc / Subject / Date / Time** `(dynamic)`\ + *%EFROM / %ECC / %ESUBJ / %EDATE / %ETIME*\ + The From, Cc, Subject, Received Date and Received Time of the last + email received by the K9 email agent. +- **Free Memory**\ + *%MEMF*\ + System free memory remaining in MB. +- **GPS Status**\ + (monitored,dynamic Gingerbread+) *%GPS*\ + Whether the system GPS receiver is **on** or **off**. +- **Heart Rate** `(monitored,dynamic)`\ + *%HEART*\ + The current detected heart rate in beats per minute.\ + See also: state *Heart Rate*.\ + The value will be negative for no contact (-1), accuracy unreliable + (-2) or some other problem (-3) +- **HTTP Response Code / Data / Content Length**\ + `(dynamic)`) *%HTTPR / %HTTPD / %HTTPL*\ + Values from the last HTTP POST/GET action.\ + If the server doesn\'t return a content length, %HTTPL will be + calculated from the returned data where possible. +- **Input Method**\ + *%IMETHOD*\ + The current active input method. Consists of 4 parts separated by + commas: Method Name, SubType Name, Mode, Locale.\ + To access particular parts, use the *Variable Split* action. +- **Interrupt Mode** `(dynamic)`\ + *%INTERRUPT*\ + Only available on Android 5.0+, **requires Tasker\'s notification + access service to be enabled**, see Android\'s Sound & Notification + settings.\ + \ + Android 5.0+: the current state of interruptions mode on the device: + **none**, **priority** or **all**\ + See Also: action *Interrupt Mode*\ + \ + Android 6.0+: the current state of Do Not Disturb mode on the + device: **none**, **priority**, **all** or **alarms**\ + See Also: action *Do Not Disturb* +- **Keyguard Status**\ + *%KEYG*\ + Whether the Keyguard is **on** or **off** +- **Last Application**\ + *%LAPP*\ + The name of the application that was in the foreground before the + current one e.g. Maps. +- **Last Photo**\ + *%FOTO*\ + The filesystem path to the last photo taken by Tasker or the + standard system camera application. +- **Light Level** `(dynamic,monitored)`\ + *%LIGHT*\ + The last recorded light level in lux.\ + Note that Android does not return a value until the light level + changes, so to test the sensor is working you should put it near a + bright light initially.\ + May not change when the device display is off, see + `Menu / Prefs / More / Display Off Monitoring / Light Sensor`. +- **Location** `(dynamic)`\ + *%LOC*\ + The latitude and longitude of the last GPS fix.\ + [See note](#locnote). +- **Location Accuracy** `(dynamic)`\ + *%LOCACC*\ + The accuracy in metres of the last GPS fix.\ + [See note](#locnote). +- **Location Altitude** `(dynamic)`\ + *%LOCALT*\ + The altitude in metres of the last GPS fix, or 0 if unavailable.\ + [See note](#locnote). +- **Location Speed** `(dynamic)`\ + *%LOCSPD*\ + The speed in metres/second at the last GPS position fix or 0 if + unavailable.\ + [See note](#locnote). +- **Location Fix Time Seconds** `(dynamic)`\ + *%LOCTMS*\ + The time in seconds of the last GPS fix. To get age of fix, take + this away from %TIMES.\ + This value is not set until an offset of the GPS time from the fixed + time has been calculated (should be after the first GPS fix) because + the value is meaningless until that point.\ + [See note](#locnote). +- **Location (Net)** `(dynamic)`\ + *%LOCN*\ + The latitude and longitude of the last network location fix.\ + [See note](#locnote). +- **Location Accuracy (Net)** `(dynamic)`\ + *%LOCNACC*\ + The accuracy in metres of the last network location fix.\ + [See note](#locnote). +- **Location Fix Time (Net)** `(dynamic)`\ + *%LOCNTMS*\ + The time in seconds of the last net location fix. To get age of fix, + take this away from %TIMES.\ + [See note](#locnote). +- **Magnetic Field Strength** `(monitored,dynamic)`\ + *%MFIELD*\ + The total magnitudes in micro-Teslas of the magnetic fields acting + on all three axis of the devices sensor.\ + Updated once per second.\ + See Also: state `Magnetic Field`. +- **Music Track** `(dynamic,monitored))`)\ + *%MTRACK*\ + The current playing music track, supported for: + - Tasker actions *Music Play* and *Music Play Dir* + - Built-in Android music-player, probably not on all devices + however + - Power AMP + - BeyondPod (Tasker v1.2.1+) + - Phantom Music Control Pro + - Media Utilities + + Priority: if both Tasker and one of the other supported apps are + playing simultaneously, the non-Tasker track will be shown. If more + than one of the other supported apps is playing simultaneuosly, + behaviour is unspecified.\ + Notes: + - if you don\'t have a supported player, you could try Phantom + Music Control Pro or Media Utilities, which support a lot of + players and should pass the info on to Tasker + - pausing a track clears the variable, unpausing sets it again + - your music player may need an option enabled in order to + broadcast the track information, or the broadcast may only be + available in a \'pro\' version + +- **Muted**\ + *%MUTED*\ + Whether the microphone is currently muted (**on**) or not (**off**). +- **Night Mode**\ + *%NIGHT*\ + The current Android Night Mode.\ + One of **on**, **off** or **auto**.\ + If **auto**, Android will decide whether it should be in Night Mode + itself. +- **Notification Title** `(monitored, dynamic)`\ + *%NTITLE*\ + The title of the last notification shown in the status bar. Prior to + KitKat, requires Tasker\'s accessibility server to be running (see + Android Accessibility Settings). From KitKat, requires Tasker\'s + Notification Listener service to be running instead.\ + In a task running as a result of a `Notification` or + `Notification Removed` event, use variable %evtprm2 instead of + %NTITLE. This is much more reliable and you have access to other + parts of the notification (%evtprm3 etc)\ + Notifications generated by Tasker are not shown. +- **Phone Number**\ + *%PNUM*\ + The current phone number of the device, if it\'s in service.\ + On some phones it doesn\'t work (Android limitation), seems related + to the type of SIM. +- **Pressure** `(monitored,dynamic)`\ + *%PRESSURE*\ + The current air pressure on the device in millibars.\ + May not change when the device display is off, see + `Menu / Prefs / Monitor / Display Off Monitoring / Pressure Sensor`. +- **Profiles Active** `(dynamic)`\ + *%PACTIVE*\ + A comma-separated list of the currently active, named profiles in + activation order. Duplicate names will appear on the list only once. + The list always starts and ends with a comma to make matching + easier, if it\'s not empty. +- **Profiles Enabled** `(dynamic)`\ + *%PENABLED*\ + A comma-separated list of the currently enabled, named profiles in + creation order. Duplicate names will appear on the list only once. + The list always starts and ends with a comma to make matching + easier, if it\'s not empty. +- **Roaming**\ + *%ROAM*\ + **on** if device is roaming on the current telephone network, + otherwise **off**. +- **Root Available**\ + *%ROOT*\ + **yes** if root functions are available on this device, otherwise + **no**. +- **Screen** `(dynamic)`\ + *%SCREEN*\ + Whether the screen is on (value **on**) or off (value **off**). +- **SDK Version**\ + *%SDK*\ + The numeric Android [SDK + version](http://developer.android.com/reference/android/os/Build.VERSION_CODES.html) + of the device. +- **Silent Mode** `(dynamic)`\ + *%SILENT*\ + The current state of silent mode: **off**, **vibrate** or **on**.\ + From Android 5.0+ this variable is intended to only reflect whether + the device is in vibrate mode (**vibrate**) or not (any other + value), but the **on** value is included for backwards compatibility + and set when the device is not in vibrate mode and the interrupt + mode is **none** or **priority**.\ + See Also: variable *%INTERRUPT*, actions *Silent Mode* and + *Interrupt Mode*. +- **SIM Serial Number**\ + *%SIMNUM*\ + The serial number of the SIM card, if one is present and + accessible.\ + If the SIM has not been unlocked it will not be available. +- **SIM State**\ + *%SIMSTATE*\ + The current state of the SIM card.\ + One of **unknown**, **absent**, **pinrequired**, **pukrequired**, + **netlocked** or **ready**. +- **Speakerphone**\ + *%SPHONE*\ + Whether the speakerphone is **on** or **off** +- **Speech** `(dynamic)`\ + *%SPEECH*\ + The current utterance as a result of a *Say* or *Say File* action, + if applicable. +- **Tasks Running** `(dynamic)`\ + *%TRUN*\ + A comma-separated list of any named tasks which are currently + running. The list always starts and ends with a comma to make + matching easier, if it\'s not empty. +- **Telephone Network** `(dynamic, monitored)`\ + *%TNET*\ + The current telephony network operator the device is using.\ + May be unreliable on CDMA networks +- **Temperature** `(monitored,dynamic)`\ + *%TEMP*\ + The current ambient temperature in degrees Celsius.\ + May not change when the device display is off, see + `Menu / Prefs / Monitor / Display Off Monitoring / Temp. Sensor`.\ + See also: state *Temperature*. +- **Text From/Date/Subject/Time** `(monitored)`\ + *%SMSRF / %SMSRN / %SMSRB / %MMSRS / %SMSRD / %SMSRT*\ + The sender address, name, body, subject, date and time of the last + text (SMS or MMS) received.\ + These variables will be empty until the first time a text is + received after they have been referenced because Tasker does not + monitor texts unless it\'s needed.\ + *Name* is set to sender address of no contact could be looked up. + It\'s unavailable on Android versions prior to 2.0.\ + *Body* (%SMSRB) is only set for SMSs.\ + *Subject* (%MMSRS) is only set for MMSs. +- **Time**\ + *%TIME*\ + Current human-readable time separated by a period e.g. 10.59 +- **Tether** (dynamic)\ + *%TETHER*\ + A comma-separated list of enabled tethering forms i.e. connections + over which another device can connect to this one in order to use + its internet connection.\ + The possible forms are **wifi**, **usb** or **bt**.\ + BT will only be present when an actual client is connected via BT + for using the devices network connection, whereas the others will be + present as soon as the functionality is enabled (Android + bug/limitation). +- **Time MilliSeconds**\ + *%TIMEMS*\ + The current time in milliseconds.\ + (milliseconds since some time in January, 1970, if you must know). +- **Time Seconds**\ + *%TIMES*\ + The current time in seconds.\ + (seconds since some time in January, 1970, if you must know). +- **UI Mode** `(dynamic,monitored)`\ + *%UIMODE*\ + The current Android UI mode.\ + One of **car**, **desk**, **appliance**, **tv** (television), + **watch**, **undef** (undefined) or **normal**. +- **Uptime Seconds**\ + *%UPS*\ + The number of seconds since the device last booted. +- **Volume - Alarm/Call/DTMF/Media/Notification/Ringer/System** + `(dynamic)`\ + *%VOLA / %VOLC / %VOLD / %VOLM / %VOLN / %VOLR / %VOLS*\ + Current audio channel volume level.\ + On some devices, volume changes are not picked up dynamically, on + others not when using the phone app. +- **WiFi Info**\ + *%WIFII*\ + When connected to an Access Point (AP), shows human-readable data + about the AP. When not connected, show details of the most recent + Wifi scan results for nearby APs. +- **WiFi Status** `(dynamic)`\ + *%WIFI*\ + Whether WiFi is **on** or **off**. Note: if WiFi is enabling or + disabled, in fact anything but enabled, it\'s classed as off. +- **Wimax Status**\ + *%WIMAX*\ + Whether Wimax is **on** or **off**. Note: if Wimax is enabling or + disabled, in fact anything but enabled, it\'s classed as off. +- **Window Label** `(monitored)`\ + *%WIN*\ + The label of the current window, which could be a full-screen + activity or a dialog.\ + Not set if the label is unknown.\ + For some windows, the label might be that of the first item in the + window e.g. a menu entry or even a button. + +##### General Notes + +Variables marked `dynamic` in the list above trigger changes in +*Variable Value* states and *Variable Set* events whenever their value +changes. + +Variables marked `monitored` will cause the relevant monitor to startup +to track their state when they are used in contexts or tasks which are +used by widgets or **enabled** profiles. For instance, %CELLID used in a +Flash action will cause cell location to be tracked. + +Limitation: monitored variables cannot be detected in anonymous +shortcuts. + +[]{#locnote} + +##### Note On Location Variables + +When the relevant provider (Net or GPS) of a location context is active, +these variables report the values from the provider, which may be more +recent than Tasker has seen if other applications are asking for +location. + +When the relevant provider is **not** active, these variables report the +last values **seen by Tasker**, which could be the result of a +`Get Location` action or of monitoring for a `Location Context`. + +That means the the reported fix times could **go backwards**, if you +turn off the location provider between two uses of the variables. + +Location variables can also be manually updated by running the +`Get Location` action. + +#### User Variables + +The action *Variable Set* (and several others) can be used to create new +variables. Variable names have the following restrictions: + +- they must start with the **%** character +- they are case-sensitive +- then must at least a further **3** alphanumeric characters +- they can also contain the underscore character (\_) but not start or + end with it + +In general, it\'s best to use local variables wherever possible because: + +- you know they won\'t be interfered with by other tasks or scenes +- they are more efficient in several ways + +Note: multiple copies of the same task running at the same time each +have their own separate copy of their local variables. + +###### Scene-Local Variables + +Each scene has its own set of local variables which it shares with the +task that created it; both the scene and task see changes to the +variables made by either. + +Any task which starts as a result of a scene event (e.g. a tap on an +element) also shares the variables of the scene (and thus of the +original task which created the scene). + +As a consequence, a task started by a scene event (e.g. Tap on an +element) which shows a new scene e.g. via the *Show Scene* action, will +result in the second scene sharing the variables of the first scene. + +When a task shows a scene that was created by a different task (or a +different copy of the same task) and subsequently hidden, the task\'s +variables are **copied** to the scene variables (overriding values of +variables which already exist) but the task does **not share** the scene +variables and cannot see changes to them. + +##### Escaping Variable Names + +If you want to prevent a variable name being replaced, put a **\\** in +front of it e.g. + +> `Variable Set, %new, \%old` + +Will set the value of *%new* to *%old*, **not** the **value** of *%old*. + +In order to precede a variable name with a **\\** you can escape the +backslash e.g. + +> `Variable Set, %new, \\%old` + +Will set the value of *%new* to **\\** followed by the **value** of +*%old*. + +##### Variable References + +It\'s possible to indirectly refer to variables by preceeding one or +more extra **%** signs to the start of the variable name. For example: + +> ` Variable Set, %colour, red Variable Set, %varname, colour Flash %%varname` + +\... will flash **red**. + +Using this notation it\'s possible to assign variables whose name is not +known beforehand: + +> ` Read File, variablename.txt, To Var, %varname Variable Set, %%varname, red` + +This will set the variable whose name is stored in the file +`variablename.txt` to **red**. + +You can nest references as deeply as you like (e.g. `%%%%var`) but +mental stress and bugs are sure to follow. + +If any part of the chain has an invalid variable name then the original +reference will be returned. In the first example, if `%varname` is set +to `!!!`, then **%%varname** will be flashed instead of **red**. + +##### Variable Lifetime + +The value a **global** variable holds lasts until Tasker is uninstalled +if it is not changed by any task. + +**Local** variables are lost at the end of the task they were created +in, or when the parent scene is destroyed in the case of tasks called +from scenes. + +##### Uninitialized Variables + +User-variables which have not had a value assigned do not have +replacements carried out e.g. in the expression *I love %fruit*, if +%fruit is uninitialized, the expression remains as it is, otherwise +%fruit is replaced with the value. + +Exception: uninitialized variables used in mathematical expressions are +replaced with 0. + +#### Variables In Plugins + +Plugin developers can tell Tasker to replace variables it finds in +plugin strings with their current Tasker value. If you have a plugin +which doesn\'t support this, send the developer this URL + +> + +which has the relevant details. + +[]{#arrays} + +#### Variable Arrays + +Tasker supports pseudo-arrays. + +They are especially useful when used with the `For` action, since you +can perform a set of actions on each element in turn e.g. list a set of +files then test each one. + +##### Examples + +If the four variables **%arr1, %arr2, %arr3, %arr4** hold respectively +**a, b, c** and **d** then we have an array with 4 *elements*. These +variables can be used just like any other, however it is also possible +to access them in special ways. Here are some examples: + +- **%arr(\#)**\ + The number of defined array elements (**4** in this case) +- **%arr(\#\>)**\ + The index of the first defined array element, or **0** if none are + defined (**1**). +- **%arr(\#\<)**\ + The index of the last defined array element, or **0** if none are + defined (**4**) +- **%arr(\#?b/c)**\ + A comma-separated list of the array indices (lowest to highest) with + matching values, or **0** if none match (**2,3** in the example) +- **%arr(\>)**\ + The contents of the first defined array element (**a**) +- **%arr(\<)**\ + The contents of the last defined array element (**d**) +- **%arr()** or **%arr(:)**\ + All of the array elements separated by commas (**a,b,c,d**) +- **%arr(2)** or just **%arr2**\ + The content of the element with index 2 (**b**) +- **%arr(2:4)**\ + Contents of defined elements with indices 2 to 4 (**b,c,d**) +- **%arr(:3)**\ + All the defined elements with indices up to 3 (**a,b,c**) +- **%arr(3:)**\ + All the defined elements with indices starting from 3 (**c,d**) +- **%arr(1:2)**\ + All the defined elements with indices from 1 to 2 (**a,b**) + +Notes: + +- arrays will virtually always have all their elements defined so e.g. + %arr(\>) will be the same as %arr(1), %arr(\#) will be the same as + %arr(\#\<) +- index specifiers can themselves be variables (e.g. %arr(1:%MAX) or + %arr(\#?%FINDME)) but **not** variable arrays + +##### Creating An Array + +1. using `Array Set`:\ + **Array Set, %arr, a b c d** +2. using `Variable Split` on an existing (simple) variable:\ + **Variable Set %arr a b c d**\ + **Variable Split %arr**\ +3. by assigning individual elements with `Variable Set`:\ + **Variable Set, %arr3, c**. +4. using `Array Push` to add an initial element +5. some other actions also create arrays for their results e.g. + `List Files`. + +##### Inserting Elements + +Use the `Array Push` action. + +The *Fill Spaces* parameter might need more explanation. It is only +relevant if one or more of the array elements are undefined. As an +example, if we have the array elements %arr1 and %arr3 containing +**apple** and **banana**: + +- **Array Push %arr1, 1, pear**\ + leaves %arr1, %arr2 and %arr4 containing **pear**, **apple** and + **banana**.\ +- but **Array Push %arr2, 1, pear, Fill Spaces**\ + leaves %arr1, %arr2 and %arr3 containing **pear**, **apple** and + **banana**. + +##### Removing Elements + +Use the `Array Pop` action. Note the difference between `Array Pop` and +`Variable Clear`: `Pop` reduces the number of elements in the array, +while `Clear` merely changes elements to undefined. + +Example: if we have the array elements %arr1, %arr2, %arr3 containing +**apple**,**pear** and **banana**: + +- **Variable Clear %arr2**\ + leaves %arr1 and %arr3 containing **apple** and **banana**.\ +- but **Array Pop %arr2**\ + leaves %arr1 and %arr2 containing **apple** and **banana**. + +##### Deleting An Array + +Use `Array Clear`. + +In most cases you could also use **Variable Clear %arr\*** with Pattern +Matching checked, but that would also delete variables called e.g. +%arrTOODEETOO so `Array Clear` is safer. + +##### Sorting + +The `Array Process` action offers various sorting options, amongst other +things. + +##### Array Efficiency + +Arrays are intended for convenience when processing high-level data, not +for e.g. processing astronomical data. Doing thousands of array actions +will likely take several seconds (although mostly due to the +housekeeping work done by Tasker in-between each action rather than due +to the array operations themselves). + +In terms of storage efficiency, they are also fairly hopeless. You +probably do not want to store tens of thousands of items in an array. + +FAQ: How Do I\... / Can I\... ? ![](androidlogo.png) ![](icon_tasker.png) +------------------------------------------------------------------------- + +- How can I contact the developer ? +- How can I send the developer a bug report ? +- How can I send the developer a long-term log ? +- [Can I change an app\'s settings / press it\'s buttons ?](#a) +- [Can I control / respond to events in application X with Tasker + ?](#o) +- [How can I stop Tasker restoring a setting ?](#cx) +- [Can Tasker detect volume button presses ?](#c) +- [Can Tasker be used from an external SD card ?](#d) +- [Can I use Tasker to turn the screen on and off ?](#e) +- [How do I create my default settings ?](#f) +- [How can I run more than one task when a profile goes active ?](#g) +- [Can I hide the notification list entry when Tasker is running + ?](#h) +- [Can I change or remove the status bar icon when Tasker is running + ?](#h2) +- [What if I want a repeating time context, but I need to do something + that takes a while ?](#i) +- [How can I do something every minute ?](#j) +- [How do I specify *9:30AM on Monday* and *10AM on Tuesday* with the + same profile ?](#k) +- [How do I specify weekend night-times ?](#k2) +- [How do I stop the screen dimming when I have the display Stay On + set to e.g. \'With AC\' ?](#l) +- [How can I stop Wifi Near toggling wifi on-off when the phone is in + Airplane Mode ?](#m) +- [Can I divert incoming calls ?](#n) +- [How can I detect if Wifi is connected (not just enabled) ?](#p) +- [How can I import/export individual profiles, tasks or scenes ?](#q) +- [How do I turn off the flashing notification LED ?](#s) +- [How do I put my phone in Silent or Vibrate mode ?](#t) +- [Can I automate sending of an SMS / Call through Google Voice ?](#u) +- [Can I change/remove the notification sounds for particular apps + ?](#v) +- Can I silence all notifications except from particular applications + ? +- [Can I change the input method ?](#w) +- [How do I test whether I can reach the Internet (ping) ?](#y) +- [How can I use whitespace (newline, tab etc) in action parameters + ?](#y2) +- [How can I run a task from a terminal login ?](#y3) +- [How can I silence the camera shutter sound ?](#y4) + +------------------------------------------------------------------------ + +[]{#z} + +#### How can I contact the developer ? + +There is a contact email given at **Menu / Info / Support**. In general, +this is intended for order and validation help, which is often +confidential, and other private issues. + +Please post Tasker usage queries/problems in the [Tasker +Forum](http://groups.google.com/group/tasker) where the developer is +very active. + +Advantages: + +- the user community has more experience than the developer with using + Tasker +- other people can benefit if your problem is solved +- the developer has more time for fixing bugs and adding features, + which benefits everyone + +[]{#x} + +#### How can I send the developer a bug report ? + +- go to *Android Settings* then **About Phone** +- tap 10 or more times on the **Build Version** entry +- go back one screen +- select **Developer Options** +- check the **USB Debugging** option if it\'s not already checked +- do whatever it is that causes the problem +- go back to **Developer Options** and tap **Take Bug Report** (the + first entry) +- wait a short while until the bug report is ready (a notification + will appear) +- share using an email application +- the destination email address is listed in **Menu / Info / Support** + in Tasker +- include at the top of the email a brief description of the problem + that the email concerns +- disable **USB Debugging** and **Developer Options** (switch at top) + +Try to make the log as soon as possible after the problem occurs. + +[]{#x2} + +#### How can I send the developer a long-term log ? + +If your problem covers a longer time-frame, you\'ll need an SD card log +because the system log fills up very quickly: + +- you\'ll need an SD card inserted +- deselect **Menu / Prefs / UI / Beginner Mode** in Tasker +- enable **Menu / Prefs / Misc / Debug to SD Card** in Tasker +- when the problem has occured, email the file + */sdcard/Tasker/log/tasker.txt* to the developer email listed at + **Menu / Info / Support** +- include at the top a brief description of the problem that the log + concerns + +[]{#a} + +#### Can I change an app\'s settings / press it\'s buttons ? + +Standard Android doesn\'t allow an app to change, poke, prod or peek at +anything within another app, including simulating keypresses and screen +taps. + +On a rooted device, you can use some of the actions in the `Input` +category to navigate around an app, click on UI elements and enter text +automatically. + +[]{#o} + +#### Can I control / respond to events in application X with Tasker ? + +If a Tasker user wants to automate some aspect of another program they +use, they just need to point the developer of the other app at the +[Tasker Developer Page](#/developers.html) and nag at him/her a bit. + +[]{#cx} + +#### How can I stop Tasker restoring a setting ? + +Tasker will restore any setting which is changed in the Enter task of a +profile. There are four ways to prevent this: + +1. deselect the *Restore Settings* in the Profile Properties of the + relevant profile. +2. if you set the same setting in the Exit task of the profile Tasker + will take that as a hint that the previous value shouldn\'t be + restored. +3. create a separate task to run the settings actions and in the Enter + task of the profile do a Perform Task action (from the category + *Tasker*) on that separate task. This trick is known as Stefan\'s + Setting Sidestep. +4. you can use the corresponding Javascriptlet function instead of the + setting action. Settings made in Javascriptlets are not restored. + +[]{#c} + +#### Can Tasker detect volume button presses ? + +No, sorry, that\'s not possible ATM. + +The closest you can get is to detect changes in a volume variable (e.g. +%VOLR for the ringer volume) via event Variable Set. + +[]{#d} + +#### Can Tasker be used from an external SD card ? + +Prior to Android 6.0, that is not possible, even using apps2SD. + +With Android 6.0+ if the external SD is being used as \'adoptable\', +\'flex\' or \'internal\' (the wording varies) storage, there should be +no issue. + +[]{#e} + +#### Can I use Tasker to turn the screen on and off ? + +Turning on, use the Display / Turn On action. Unfortunately, that action +is inaccessible with Android 2.3+. + +For turning off, you can use the Display / System Lock action with +Android 2.0+. + +For Android 1.6, you can set the Display Timeout to it\'s minimum +(around 7 seconds) and then set it back to normal in response to a +Display Off event. + +[]{#f} + +#### How do I create my default settings ? + +You don\'t have to configure \'default\' settings in Tasker. The +\'default\' settings are how your device is configured before any Tasker +profile becomes active. This \'default\' is automatically restored as +profiles become inactive. + +Exception: changes to settings made in *Exit* tasks are not restored. + +[]{#g} + +#### How can I run more than one task when a profile goes active ? + +Add an action *Perform Task* from the category *Tasker* for each task +that you want to run (don\'t click the Stop button). + +**Warning:**: settings in the called tasks will not be restored by +Tasker, only settings changed directly within the Enter task. + +[]{#h} + +#### Can I hide the notification list entry when Tasker is running ? + +If the notification is very annoying, it can be removed on many devices +by setting the icon transparent at **Menu / Prefs / Monitor / +Notification Icon**. + +If that doesn\'t work, disable the Run In Foreground setting which can +be found at **Menu / Prefs / Monitor / Run In Foreground** + +Please read the help text associated with this option first. + +[]{#h2} + +#### Can I change or remove the status bar icon when Tasker is running ? + +You can change it with **Menu / Prefs / Monitor / Notification Icon**. + +You can remove it with **Menu / Prefs / Monitor / Show Notification +Icon**. + +[]{#i} + +#### What if I want a repeating time context, but I need to do something that takes a while ? + +- GPS On +- Wait 3 minutes +- GPS Off + +[]{#j} + +#### How can I do something every minute ? + +Set a repeat period of 2 minutes (the minumum allowed) and specify a +task like this: + +- Perform Task, TaDa +- Wait 1 Minute +- Perform Task, TaDa + +[]{#k} + +#### How do I specify 9:30AM on Monday and 10AM on Tuesday with the same profile ? + +You can\'t, because the Time and Day subcontexts operate completely +independent of each other. You have to specify two profiles and run the +same Task(s) with each of them (by giving the task a name). + +[]{#k2} + +#### How do I specify weekend night-times ? + +It\'s tempting to say: + +> ` Time: 23 - 09 Day: Friday or Saturday` + +But that won\'t work, because on Sunday at e.g. 3am the Day context (and +hence the whole profile) won\'t be active. + +For this kind of situation, you need to specify a profile for which +morning you want to be active and another for which evenings. In the +example, you want Friday and Saturday night plus Saturday or Sunday +morning: + +> ` Time: 23 - 24 Day: Friday or Saturday` + +> ` Time: 00 - 09 Day: Saturday or Sunday` + +[]{#l} + +#### How do I stop the screen dimming when I have the display Stay On set to e.g. \'With AC\' ? + +The screen dims around 10 seconds before the current Screen Off Timeout +value is reached. You can set Screen Timeout (for the relevant context +e.g. \'while docked\') to **Never** (set all sliders to maximum) if you +don\'t like that behaviour. []{#m} + +#### How can I stop Wifi Near toggling wifi on-off when the phone is in Airplane Mode ? + +Add a state **Airplane Mode** to your profile and click the **Invert** +button, which means *if Airplane Mode is off*. []{#n} + +#### Can I divert incoming calls ? + +It\'s not possible to divert incoming calls via Android, but most Mobile +Carriers accept special dialled sequences to do it before the call +reaches your phone. + +You can then use Tasker\'s *Phone / Call* action (with *Auto Dial* +checked) to setup and cancel incoming call diversions. + +The [Wikipedia page on Call +Forwarding](http://en.wikipedia.org/wiki/Call_forwarding) is a good +starting point. + +[]{#p} + +#### How can I detect if Wifi is connected (not just enabled) ? + +The \'standard\' way is to use State *Wifi Connected* to set and clear +your own variable with an enter and exit task respectively. + +An alternative trick is to match the word `connected` or `connection` in +the %WIFII variable (the actual word and lower/upper case changes with +Android version). + +[]{#q} + +#### How can I import/export individual profiles, tasks or scenes ? + +Import: + +Go to the main screen, long click on the tab for the type of thing you +want to import. + +Export: + +- ensure that `Menu / Prefs / UI / Beginner Mode` is **un**checked +- go to the main screen +- long-click on the thing you want to export + +[]{#s} + +#### How do I turn off the flashing notification LED ? + +Use the Audio / Notification Pulse action. + +If you\'re wondering what a flashing light is doing in the Audio +section: ask Google, that\'s where they put it in Android Settings. + +[]{#t} + +#### \>How do I put my phone in Silent or Vibrate mode ? + +Use action *Audio / Silent Mode*. + +Do not try to do it with *Volume Ringer* or *Vibrate on Ringer*. + +[]{#u} + +#### Can I automate sending of an SMS / Call through Google Voice ? + +Not directly through Tasker. However, [Steelgirder +Developments](http://sites.google.com/site/steelgirderdevelopmentsite/home) +have (non-free) plugins which you can easily use with Tasker to +accomplish this. + +Steelgirder and the author of Tasker are agreed on working together +wherever further integration of these plugins and Tasker is needed e.g. +support for Tasker variables. + +[]{#v} + +#### Can I change/remove the notification sounds for particular apps ? + +Yes, but it\'s a little complicated, please see the [relevant forum +post](http://groups.google.com/group/tasker/browse_thread/thread/4a6b6ea8b4e4cc86). +[]{#v2} + +#### Can I silence all notifications except from particular applications ? + +With Tasker versions from 1.0.10, you can try turning off all +notifications (e.g. via Silent Mode or setting the Notification Volume +to 0) and then using Tasker to do alerts for particular app +notifications using the `Notification` event in the UI category. []{#w} + +#### Can I change the input method ? + +On a rooted phone, yes, using the free Secure Settings plugin. + +Consider also starring this [feature +request](http://code.google.com/p/android/issues/detail?id=11677) with +Google. + +[]{#y} + +#### How do I test whether I can reach the Internet (ping) ? + + + HTTP Get URL (a known webpage), Continue Task On Error + If [ %HTTPR = 200 ] + ... + Endif + +[]{#y2} + +#### How can I use whitespace (newline, tab etc) in action parameters ? + +Tasker trims the start and end of all parameters to prevent whitespace +causing problems. The only exception is the `Variable Set` action. + +Therefore, if you want to use whitespace you should first assign it to a +variable and then use the variable where you want the whitespace to +appear: + +> ` Variable Set, %white, THISISANEWLINE Flash, Here's a newline: %white` + +[]{#y3} + +#### How can I run a task from a terminal login ? + + am broadcast -a net.dinglisch.android.tasker.ACTION_TASK -e task_name YOUR_TASK_NAME + +That\'s only possible on a rooted phone because otherwise there will be +a permission problem. + +[]{#y4} + +#### How can I silence the camera shutter sound ? + +This varies per device. + +Try creating a new profile with an **App** context and select the Camera +app. When asked to create a task, add the following actions: + +1. *Task / Wait*, **2 seconds** +2. *Audio / Sound Effects*, **off** +3. *Audio / Media Volume*, **0** +4. *Audio / System Volume*, **0** +5. *Audio / Notification Volume*, **0** +6. *Audio / Silent Mode*, **on** + +Then go to the Camera app, wait a couple of seconds and try taking a +picture. + +If you still hear the shutter sound, go back to the Tasker UI, click on +the task that you created and hit the **Play** button bottom-left to run +the task manually. Then go back to the Camera app. If you still hear the +shutter sound, then it\'s not going to be possible for Tasker to disable +it on your device. + +Some manufacturers deliberately prevent disabling of the shutter sound, +perhaps for legal reasons. + +Addendum + +A user has reported that setting DTMF volume to 0 removes the **focus** +sound in the camera app. + +  + +  + +  + +  + +  + +  + +  + +  + +  + +  + +  + +  + +  + +  + +  + +  + +  + +FAQ: Usage Problems ![](androidlogo.png) ![](icon_tasker.png) +------------------------------------------------------------- + +- [Why won\'t Android let me uninstall Tasker ?](#0) +- [Why doesn\'t the Kill App action work in Android 2.2 like it used + to ?](#a) +- [Why isn\'t GPS coming on for my profile with Time And GPS Location + contexts ?](#c) +- [Why can\'t I select Tasker for an application context ?](#d) +- [Why does it take my Wifi Near state so long to exit ?](#e) +- [Why isn\'t Tasker detecting when my Location Context changes ?](#f) +- [Why does Tasker mess up the app launching when I have an + Application Context for it ?](#g) +- [Why does my profile not do anything ?](#h) +- [Why aren\'t my settings restored ?](#w) +- Why does nothing happen when I click a Tasker widget ? +- [Why does Tasker crash when I try to create a Location Context + ?](#j) +- [Why can\'t I see any Tasker widgets in the home screen widget + selector ?](#k) +- [Why doesn\'t my repeating Time Context work ?](#l) +- [Why aren\'t my exit tasks run / settings restored before the device + shuts down ?](#m) +- [Why does my location exit task fire multiple times ?](#n) +- [Why does my Cell Near state keep going inactive ?](#o) +- [Why doesn\'t Notify LED work ?](#p) +- [Why do Tasker widgets disappear after a reboot on my Wildfire + ?](#q) +- [Why isn\'t my docking station detected ?](#r) +- [Why aren\'t I getting any cell data for the Cell Near state ?](#s) +- [Why isn\'t there a green light for the On/Off radio button on the + main screen ?](#t) +- [Why does the action Display Brightness cause my keyboard or + application to close ?](#u) +- [Why is the date in Tasker\'s notification list completely wrong + ?](#v) +- [Why won\'t Tasker install on my custom ROM ?](#w) +- [Why doesn\'t my `Perform Task` action work when I Test it ?](#x) +- [Why doesn\'t my App Context work ?](#app) +- [Why doesn\'t the Keyguard action work properly ?](#keyguard) +- [Why doesn\'t Tasker think my device is rooted ?](#root) + +------------------------------------------------------------------------ + +[]{#0} + +#### Why won\'t Android let me uninstall Tasker ? + +It\'s probably because you\'re using an action which needs Tasker\'s +device administrator function (e.g. `Display / System Lock`). + +You can disable it by going to +`Android Settings / Location & Security / Device Administration`. + +[]{#a} + +#### Why doesn\'t the Kill App action work in Android 2.2 like it used to ? + +Google decided that the feature was being abused and causing more +problems than it solved and it was therefore watered down. + +From Tasker version 1.0.21 it\'s more effective again if you have a +rooted device. + +[]{#c} + +#### Why isn\'t GPS coming on for my profile with Time And GPS Location contexts ? + +In order to save power, Tasker only activates context detection as it is +needed. Therefore it will not attempt to fix your GPS location unless +the Time context is active. + +See the [Power Usage](#userguide/en/power.html) section of the userguide +for more details. + +[]{#d} + +#### Why can\'t I select Tasker for an application context ? + +This is considered too dangerous. A mistake could easily result in being +unable to enter Tasker and therefore being unable to rectify the +mistake. []{#e} + +#### Why does it take my Wifi Near state so long to exit ? + +Wifi Near requires **two** check periods to pass without seeing the +Access Point before the profile exits. This is intended to avoid the +context activating and deactivating if the AP is briefly not visible. + +Note also that there are different check periods for when the device is +on or off, and by default the off-period is much longer than the +on-period. See Menu / Preferences / Monitor/ Display On/Off Timings. + +[]{#f} + +#### Why isn\'t Tasker detecting when my Location Context changes ? + +Your radius is probably too small. + +As an example, if you are not using GPS the accuracy of your fixes is +probably around += 2km, so your radius should be also minimally 2km. + +If you \*are\* using GPS, the accuracy may still be only +-400m in +built-up areas. + +Here\'s a good way to create a location context: + +- go to the geographical location you want a context for +- make a new location context +- deselect GPS if you don\'t want to use it +- press Grab Fix, and wait till it\'s done + +This will set your radius appropriate to the accuracy of the location +providers at that spot. + +If there\'s still nothing happening: + +- check GPS is on in Android Settings, if you\'re using GPS. +- check your device has a view of the sky, if you\'re using GPS +- network connectivity is often needed to get GPS started, and always + needed for a Net location context. +- realize that location is only checked every 10 minutes by default + when the Display is off (to save power). You can check more often by + changing `Menu / Prefs / Monitor / Display Off Timings / All Checks` +- try the [general \'nothing happens\'](#h) tips +- look at [other possibilities for detecting your + location](#userguide/en/loctears.html) + +[]{#g} + +#### Why does Tasker mess up the app launching when I have an Application Context for it ? + +Some applications are sensitive like this. Probably all you have to do +is put as the first action in the **Enter** task the action *Wait* and +give as a parameter e.g. 300ms. If that doesn\'t work keep increasing +the value until it does. + +That gives the application time to finish initializing before messing +around with the screen brightness etc. + +[]{#w} + +#### Why aren\'t my settings restored ? + +Some possibilities: + +- if your profile sets setting x to *on*, then if x is already *on* + when the profile goes active, it will be left at *1* when the + profile exits. Test for this by putting an Alert / Notify action in + the enter task to see what the original value was. +- some other apps installed on the system can cause Tasker to be + killed and therefore the original settings being forgotten e.g. this + has been reported to be a problem with Titanium Backup. +- similarly, if the system is rebooted suddenly, some devices aren\'t + fast enough to save all the settings before the system turns off. + +[]{#h} + +#### Why does my profile not do anything ? + +Firstly, if are you using any of these other apps which have been +reported as interfering try disabling or temporarily uninstalling them: + +- \'Task Killers\' +- Quick System Info +- Autostarts + +After that: + +- is the profile enabled ? It should have a green tick next to it. +- have you clicked the *On* button in the [Profile List + screen](#userguide/en/activity_summary.html) before leaving Tasker ? + It should be showing a **green light**. +- is the profile shown as active in the status bar pulldown ? If so, + it\'s probably your task that\'s not working. +- make sure the Monitor service running in the foreground (see + `Menu / Prefs / Monitor`) +- how\'s your available memory, see + `Android Settings / Application / Running Services / Available Memory`. + Are you maybe getting Tasker\'s low-memory notifications ? + +If your profile is activating but the task doesn\'t seem to do anything: + +- perhaps you are running a pirated version of Tasker ? +- try enabling **Menu / Prefs / More / Popup Warning/Errors** to see + if any errors are occuring (they may not be shown till you go back + to the Tasker UI) +- look in **Menu / More / Run Log** to see if the task is being + carried out. +- try a simple task like *Alert / Vibrate* or *Alert / Flash* +- perhaps another profile is interfering: do **Menu / Data / Backup**, + then delete all other profiles except the one that\'s not working + +[]{#i} + +#### Why does nothing happen when I click a Tasker widget ? + +Usually this is due to Tasker not being enabled, see the *On/Off* button +in the first UI screen. []{#j} + +#### Why does Tasker crash when I try to create a Location Context ? + +The likely cause is that you are running a non-standard Android ROM +which doesn\'t contain the correct (or maybe any) Google Maps library. +[]{#k} + +#### Why can\'t I see any Tasker widgets in the home screen widget selector ? + +This is almost always because you have Tasker installed on the SD card, +which is just not possible due to several reasons related to how Tasker +works. []{#l} + +#### Why doesn\'t my repeating Time Context work ? + +It\'s important to understand that a repeating time context is a +**series of instant events**. + +Trying to combine a repeating time context with another context that +does active monitoring usually won\'t work e.g. + +> ` Time: Repeating Every 5 Minutes Task: Enable Wifi (no toggle)` + +> ` State: Wifi Near Task: XXX` + +Wifi Near is checked on a static schedule. You currently can\'t change +the schedule dynamically, so the above two profiles will only do XXX +when the 5 minute repeat happens to coincide with when Tasker is doing +it\'s Wifi Near check. + +[]{#m} + +#### Why aren\'t my exit tasks run / settings restored before the device shuts down ? + +Android gives an app very little time to perform cleanup during +shutdown, this is especially a problem on slow devices. + +Therefore (as of 1.0.9), Tasker only attempts to run *Variable Set, +Clear, Add* and *Subtract* actions when the device shuts down, since +they take relatively little time. + +In the future, Tasker will have some concept of default values which +will then be restored when it starts after the device has booted again. + +On Android 1.5 devices, Tasker cannot do anything at shutdown because +the system does not send a notification. + +[]{#n} + +#### Why does my location exit task fire multiple times ? + +Probably the location Android reports is *bouncing* between a point +inside your location radius and one outside. This is relatively unusual +because Tasker has some built-in mechanisms to try and prevent it. + +A quick fix is to add a *Cooldown* to your profile. Click on a context, +select Profile then Properties and slide the Cooldown Time to 30 +minutes. + +The profile is then prevented from going active more than once every 30 +minutes. + +[]{#o} + +#### Why does my Cell Near state keep going inactive ? + +Even when your phone is motionless, it will probably still often switch +between different cell towers. Going to a different room in your house +may involve a whole different set of cell towers. + +When you notice your Cell Near state going inactive at your location +(and assuming you still have a signal), launch Tasker, click on the Cell +Near context and edit it. Click **Scan** and you should immediately see +a new Cell added to the list. Click **Done** and then **Apply** and your +context should go active again. + +Sometimes the new cell will only be visible for a few seconds and will +not appear when you press scan. In that case, press the **Recent** +button and select it manually from the list. + +[]{#p} + +#### Why doesn\'t Notify LED work ? + +From the action help (hint hint): + +- not all devices support all colours. Many devices will only support + red and green. In general, colours near the top of the list are more + likely to be supported. +- some devices will only flash the LED when the device is off at the + time the notification is received. + +[]{#q} + +#### Why do Tasker widgets disappear after a reboot on my Wildfire ? + +This is a bug on some Wildfire firmware version. + +It\'s not possible for the Tasker developer to work around, but is +reported as fixed in version 1.25.405.1 of the firmware. + +[]{#r} + +#### Why isn\'t my docking station detected ? + +Some docking stations just aren\'t recognized as such (Android doesn\'t +indicate that a docking station has been connected). + +Depending on other things you connect your device to, you might be able +to use one of the following as a workaround: + +- State: USB connected +- State: Power +- State: BT Connected (if it\'s a BT dock) + +[]{#s} + +#### Why aren\'t I getting any cell data for the Cell Near state ? + +A user reports being able to fix this issue as follows: + + I was able to fix this issue by going into the EPST menues using + ##DATA# on the keypad and changing the EVDO Preferred mode from HDR to + Automatic. + +It\'s possible that you will only be able to receive, not make, phone +calls as another symptom of this problem. + +[]{#t} + +#### Why isn\'t there a green light for the On/Off radio button on the main screen ? + +A user discovered that this happens when the DPI value of the Android +build is set to particulart values (e.g. 200,240 is OK, 220 the light +disappears). []{#u} + +#### Why does the action Display Brightness cause my keyboard or application to close ? + +Normally Android does not effect changes to brightness immediately, so +Tasker has to use a trick to make it happen. That trick can sometimes +have the side effect that e.g. some dialogs like the soft keyboard may +close. + +To avoid that, you can deselect the Immediate Effect checkbox in the +Display Brightness action. + +[]{#v} + +#### Why is the date in Tasker\'s notification list completely wrong ? + +This occurs if you select a transparent *Notification Icon* at +`Menu / Prefs / Monitor`, but don\'t specify a *Custom Notification +Layout*. + +Changing to a non-transparent icon or a custom layout will fix the +problem. + +[]{#w} + +#### Why won\'t Tasker install on my custom ROM ? + +The most likely reason is that you don\'t have Google Maps installed on +the device. With several custom ROMs that comes as a separate package. +[]{#x} + +#### Why doesn\'t my `Perform Task` action work when I Test it ? + +When task (a) runs a `Perform Task` action to start task (b), the order +in which the two tasks are executed depends on their relative +priorities. + +A feature of the Test button is that the tested task (a) runs at +extremely high priority to ensure that the task runs even if other tasks +are running in the background. + +So testing `Perform Task` with the Test button will only work as +expected if in actual usage task (a) will always have higher priority +than task (b) or the `Perform Task` action has **Stop** specified. + +[]{#app} + +#### Why doesn\'t my App Context work ? + +If you are using Android 5.0+, make sure Tasker\'s Accessibility Service +is enabled in Android Settings (Accessibility section). + +If you are using Nova Launcher, set +`Settings / App & Widget Drawer / Advanced / Automatically Close` to +**off**. + +Some apps (very few) aren\'t detected by Tasker, usually due to their +internal structure. + +Some custom Android ROMs also have special configurations which prevent +Tasker\'s app detection working. + +For the latter problem, there are a few things you can try: + +- look for special settings in your ROM that relate to \'keeping the + launcher in memory\'. They should be **disabled**. +- change the build properties file. Look in `/system/build.prop` (or + possibly `/system/local.prop` or `/data/local.prop`) for a line + like: + + > ro.HOME\_APP\_ADJ=-17 + + Change it in a terminal program to look like this: + + > ro.HOME\_APP\_ADJ=1 + + If you didn\'t find an existing line, just add the new line as + above. + + Note: you will first need to make `/system` writeable. You can do + that e.g. with Tasker\'s `Remount` action. Remember to make it + not-writeable again after making the change. + +- try detecting apps with a state using the **%WIN** (*window title*) + variable; create a new state + + > `Variable Value, %WIN, Matches, TITLE` + + where TITLE is the title of the window of the app you are interested + in. For this solution to work, you also need to enable Tasker\'s + *Accessibility Service* in Android Settings. + + You can check what %WIN shows for the app you are interested in with + this profile: + + > Event: Variable Set, %WIN\ + > Alert / Flash, Win is now %WIN + +[]{#keyguard} + +#### Why doesn\'t the Keyguard action work properly ? + +Android does not officially support toggling of the Keyguard by an app. +The Keyguard action was introduced in an early version of Tasker when a +reliable workaround was possible. + +In more recent Android versions, the workaround is no longer so reliable +due to internal changes made within Android. If Keyguard works at all, +there may be disturbing side-effects. + +The Keyguard action will likely be most reliablewhen the display is on +and and the Keyguard is already unlocked. + +Some people have more luck with the same functionality provided by the +[Secure Settings +plugin](https://play.google.com/store/apps/details?id=com.intangibleobject.securesettings.plugin). +After install, you can find the Secure Settings plugin in the **Plugin** +action category. Note that a rooted device is **not** needed to use this +part of Secure Settings. + +[]{#root} + +#### Why doesn\'t Tasker think my device is rooted ? + +Tasker requires two things before root functionality is enabled: + +1. the `su` program must be in your path +2. **one** of the following must be found: + - a superuser package + - the word *modversion* somewhere in the file `/system/build.prop` + +If root is not being detected on your device but you are sure that root +can be used by Tasker, you can therefore probably fix that by adding a +line like: + +> `# modversion this line enables Tasker root support` + +to the top of the file `/system/build.prop`. + +  + +  + +  + +  + +  + +  + +  + +  + +  + +  + +  + +  + +  + +  + +  + +  + +  + +FAQ: Why\... ? ![](androidlogo.png) ![](icon_tasker.png) +-------------------------------------------------------- + +- [Why am I an idiot if I use a pirated copy of Tasker ?](#f) +- [Why is GPS often scanning when I unlock my device ?](#a) +- [Why does Tasker need so many permissions ?](#b) +- [Why does Tasker need the INTERNET permission ?](#c) +- [Why isn\'t Tasker shown in the Application Context list ?](#d) +- [Why does Tasker have it\'s own music player **and** controls for + the system music player ?](#e) +- [Why does a Cell Near context not become inactive when I turn on + Airplane Mode ?](#g) +- [Why can\'t I use a downloaded icon for my shortcut task / Notify + action ?](#h) +- [Why does my profile have 2 enter tasks ? Why can\'t I add an exit + task ?](#i) + +------------------------------------------------------------------------ + +[]{#f} + +#### Why am I an idiot if I use a pirated copy of Tasker ? + +The hacker can do virtually anything with your phone. Record your calls +and upload them to a website, SMS your location and all your contacts, +make calls automatically, wipe your SD card, secretely record from your +microphone any time etc etc []{#a} + +#### Why is GPS often scanning when I unlock my device ? + +When the device wakes up, Tasker switches from a low-frequency GPS check +schedule to a higher-frequency one. Android\'s GPS software always does +an immediate scan when switching the check frequency. + +It\'s not because Tasker is constantly scanning while the device is off + +You can change the frequency in Menu / Prefs / Monitor. + +[]{#b} + +#### Why does Tasker need so many permissions ? + +Because it can do so much! + +Unfortunately, Android requires that an app specify it\'s permissions +even if they are never used, which means that permissions for all of the +things which the user could **potentially** ask Tasker to do need to be +specified. + +If you are still concerned, consider that Tasker has over 25,000 +downloads at the time of writing and any abuse taking place would +quickly be discovered. + +[]{#c} + +#### Why does Tasker need the INTERNET permission ? + +The INTERNET permission is used solely for: + +- google maps downloading map data, only for setting up a Location + context +- to carry out HTTP Post/Get actions and other actions that require an + Internet connection by their nature +- to verify the order number, and only until it has been successfully + verified +- to check whether a new Tasker version is available, if configured in + Preferences + +Tasker never directly uses Internet access for **anything** else. + +[]{#d} + +#### Why isn\'t Tasker shown in the Application Context list ? + +Because it\'s easy to get into trouble firing tasks in Tasker. For +example, if a profile is setup with a Tasker Application Context and a +task with Load App Calculator, it will not be possible to enter Tasker +anymore. []{#e} + +#### Why does Tasker have it\'s own music player **and** controls for the system music player ? + +- the system music player is not guaranteed to be present or the same + on all systems. +- finer control can be exercised over the Tasker player e.g. starting + the track from a preset seek point +- Tasker\'s player is more discrete, there is no notification bar + icon. +- by having two players available you can do things like alternating + audio from different music sources or even playing simiultaneously. + +[]{#g} + +#### Why does a Cell Near context not become inactive when I turn on Airplane Mode ? + +Cell Near is *sticky*. That means that once active it stays active until +a non-matching Cell ID is seen. In Airplane Mode no Cell IDs are seen +and so the context stays active. + +Many people use Airplane Mode at night e.g. to save battery. If you also +have a Cell Near profile that detects when you are home, it would become +inactive at night if Cell Near wasn\'t sticky. + +A couple of points: + +- the Cell radio isn\'t being turned on by Tasker in Airplane Mode. +- if you want a profile to become inactive for Airplane Mode, just add + an Inverted state Airplane Mode to it. + +[]{#h} + +#### Why can\'t I use a downloaded icon for my shortcut task / `Notify` action ? + +Some things just weren\'t meant to be (i.e. Android doesn\'t allow it). + +To solve the shortcut problem, you can always use a widget though. + +For notifications: + +- if you would like this to be possible one day, please star this + [Android feature + request](http://code.google.com/p/android/issues/detail?id=12302) +- it would be technically possible to create \'icon pack\' APKs and + that might happen one day + +[]{#i} + +#### Why does my profile have 2 enter tasks ? Why can\'t I add an exit task ? + +That\'s because it\'s an [instant](#instant) profile. + +As a convenience, the Exit task with such profiles is replaced by an +extra Enter task in case you have a lot to do with that profile. + +Note that the tasks you specify execute in the order they are specified, +their actions do not alternate. + +  + +  + +  + +  + +  + +  + +  + +  + +  + +  + +  + +  + +  + +  + +  + +  + +  + +FAQ: App Creation ![](androidlogo.png) ![](icon_tasker.png) +----------------------------------------------------------- + +- [Does app creation support profiles and scenes ?](#c) +- [Why is the app always shown as running ?](#a) +- [How do I do initialization on the first launch ?](#b) +- [How can my task tell if it is running in Tasker or a child app + ?](#h) +- [Why isn\'t my app detecting background events ?](#d) +- [How can I send the developer a short-term App Factory log ?](#e) +- [How can I send the developer a long-term App Factory log ?](#e2) +- [Can I include Google Play\'s licencing service in my app ?](#f) +- [Can I get the java source code from my created app ?](#g) + +[]{#c} + +#### Does app creation support profiles and scenes ? + +Sure. You can export projects as apps and projects can contain profiles, +tasks and scenes. + +For help accessing projects, see `Menu / Info / Help This Screen` in the +main screen. + +[]{#a} + +#### Why is the app always shown as running ? + +Tasker tries to detect when it\'s monitor service is no longer needed +but that is not always possible. You can put a `Disable` action from the +`Tasker` category at the end of your launch task to ensure that it +happens. + +The monitor will be started again automatically each time the app is +lauched from the home screen. + +[]{#b} + +#### How do I do initialization on the first launch ? + +Setup your launch task something like this: + + If %LaunchCount = 0 + ...initialization actions... + Else + ...normal actions... + Elsif + Variable Add, %LaunchCount, 1 + +[]{#h} + +#### How can my task tell if it is running in Tasker or a child app ? + +Use the **Test App** action and select the mode **This Package**. + +The resulting variable will contain the package identifier you specified +in the App Configuration screen if the task is running in a child app, +otherwise it will contain one of *net.dinglisch.android.tasker* or +*net.dinglisch.android.taskerm*. + +[]{#d} + +#### Why isn\'t my app detecting background events ? + +One possible cause is: when an app has just been installed on Android it +is in a \'frozen\' state until there is some user interaction with it +(usually clicking the home screen icon at least once). []{#e} + +#### How can I send the developer a short-term App Factory log ? + +- download aLogcat, free from Android Market +- disable Tasker in the main screen bottom-left +- in the App Config screen, check *Advanced Properties* and then + *Debug* +- create and install the new app \*twice\* +- launch the new app from the home screen +- reproduce whatever conditions cause the problem +- go to aLogCat, click **Menu / Pause** then **Menu / Send** +- the destination email is listed in **Menu / Info / User Support** in + Tasker +- include at the top a brief description of the problem that the email + concerns + +Try to make the log as soon as possible after the problem occurs. + +[]{#e2} + +#### How can I send the developer a long-term App Factory log ? + +- disable Tasker by long-clicking the icon top-left in the main screen +- in the App Config screen, check *Advanced Properties* and then + *Debug* +- create and install the new app \*twice\* +- enable the **Storage** permission for the app in Android Settings if + necessary +- launch the new app from the home screen +- reproduce whatever conditions cause the problem +- send the developer the log files in the directory NAMEOFAPP in the + root directory of the SD card +- the destination email is listed in **Menu / Info / User Support** in + Tasker +- include at the top a brief description of the problem that the email + concerns + +Try to make the log as soon as possible after the problem occurs. + +[]{#f} + +#### Can I include Google Play\'s licencing service in my app ? + +No, this is not possible. + +Tasker\'s code does not include the licencing service because of +continual problems it caused. In any case, the licensing service is +ineffectual for preventing unauthorized code distribution. + +If you really want to include licensing in your app, you could e.g. +require the user to enter their order code and check via the *HTTP Get* +action on your server if that is a valid number. + +Setting up such a server to download Google order details and accept +verification requests is a lot of effort and requires some technical +knowledge, however. + +[]{#g} + +#### Can I get the java source code from my created app ? + +Short answer: no. + +Long answer: when a new app is created, Tasker doesn\'t create new java +code to implement the things in your task or project configuration. +Instead, the existing Tasker code is used with the new app and executed +similarly to how it\'s executed in Tasker, but in the shell of a new +APK. + +  + +  + +  + +  + +  + +  + +  + +  + +  + +  + +  + +  + +  + +  + +  + +  + +  + +FAQ: Other ![](androidlogo.png) ![](icon_tasker.png) +---------------------------------------------------- + +- [Do you plan to include feature X ?](#a) +- [Should I worry about using Tasker\'s Accessibility service ?](#b) +- [What\'s the difference between a Widget and a Shortcut ?](#diff) +- [What\'s an *Instant Profile* ?](#instant) + +[]{#a} + +#### Do you plan to include feature X ? + +The developer has a large list of potential features and works through +it according to a mystical method based on star configurations. It\'s +difficult to say what will be done in advance, sorry. []{#b} + +#### Should I worry about using Tasker\'s Accessibility service ? + +Not at all. + +Although the Android warning says Tasker might read passwords, in fact: + +- Android doesn\'t allow apps to see the contents of fields labelled + *Password* +- Tasker doesn\'t even ask Android for data about text fields, only + buttons, windows and notifications + +[]{#instant} + +#### What\'s an *Instant Profile* ? + +Most profiles have a duration. Their enter task fires, they are active +for a while, then they go inactive and settings may be restored or an +exit task fired. However, profiles with + +- an Event context, **or** +- a Time context where the From parameter is the same as the To + parameter, **or** +- a Time context with a repeat value specified + +are only active for an instant and hence it does not make sense to talk +about an exit task and restoration of settings. + +There\'s no point setting brightness from 200 to 30, and then a +millisecond later back to 200, therefore settings made by an instant +profile stay at whatever value is specified.