Tag Archives: Tasker

[updated: March 29th, 2015 | Aman Surana created a great youtube video on how to do this. The main difference is that he is using a plugin (comes as an app which extends Tasker) called AutoNotification. The biggest benefit is that it abstracts the application notification layer into a standard set of variables. This allows you to utilize apps other than the main SMS app (ex: now you can use things like WhatsApp, Google Hangouts, etc). It also works with the latest version of Android, which I am starting to get the feeling that my profiles bellow do NOT work with anymore. Anyway, you can find the video here: https://www.youtube.com/watch?t=37&v=c-Kp9KynlV4, and read the post here since the idea behind how to do this still holds. That and it’s an interesting way to accomplish this task – no pun ;)]

I walk outside listening to Pandora quite a lot, and today I realized that I miss about half the SMS’ that I get. Either because it’s too noisy, or maybe because the SMS’ are not loud enough and I use a single beep, or because the sound trigger gets interrupted by Pandora, but either way, it’s a bit annoying. I have been considering some sort of a solution that will play incoming SMS messages when my headphones are plugged in for quite some time, but I couldn’t think of an efficient way to do it — that is, efficient on the battery. I think I came up with one today.

The idea behind this Tasker program is the following:

There are two Profiles: ‘Detect Headphones‘ and ‘Play Text Over Headphones‘. Only one Profile has to be actually active at all times – the Detect Headphones one. When you plug in your headset (with microphone, or just regular headphones), the profile sets a variable %HEADPHONES to ‘yes’. It then turns on the second Profile – the one that monitors incoming SMS messages and plays them over the headset if your %HEADPHONES variable is set to ‘yes’.

The general idea behind this is that it utilizes my original Blackberry Sound Profiles for Android and it adds a “timer” element which can be set. Upon setting the timer, it will set a temporary task until the timer runs out. The idea came from one of my visitors who asked me how to do this. At first, I had no idea how to do it. About 30 minutes later I had a semi-working prototype. Another 3 hours later (had to figure out how Scenes worked and interacted with variables and the rest of the system) I had the final version with a working GUI.

Now unzip it and follow the same steps from the original post – grab the “Timed.tsk.xml” file and import it into the the Tasks tab, and then grab the “TimedScene.scn.xml” file and import it into the Scenes tab. Go to your home screen and create a Tasker widget of your “Timed” task. Every time you select this task, it will pop a box which will let you use a slider or directly type in a number. After this, when you hit “Set Profile”, the temporary task (by default “Sleep”) will get activated for the number of minutes you set. After that time period it will go back to the other (by default “Work”) task.

There are a couple of things that Google has drastically changed in ICS 4.0 when it comes to Sound, Vibrate, and Volume.

First of all, they have greatly simplified the Sound Settings. The Volume menu now contains: “Music,Video, Games, and other media” as one volume toggle, then “Ringtone and notifications” as another, and Alarms as a third. Something to note here is that the keyboard “clicking” sound can now be found under the keyboard settings -> under Advanced.

The Second change is the way “Vibrate” has been re-implemented. The new “Silent Mode” controls three things currently: Sound, Mute, and Vibrate. This is important as this was completely broken on 2.3. The next thing to note is the “Vibrate and Ring” option, as this has a negative effect when toggled on via Vibrate (it’s still sticky for some reason, but due to Silent Mode being fixed, we can now un-toggle it via Tasker).

Don’t let the length of this post scare you — I just wanted to provide the technical/developer details. You can get this to work in less than a couple of minutes by downloading the zip file and ONLY reading the “GETTING STARTED” section.

1.) First, if you haven’t already, install Tasker (you can use the Android Market, or the guys’ website). You can play with it for 7 days for free.
2.) It will create a “Tasker” folder on your SD card. Under that you will find “tasks” and “profiles” folders (if they don’t exist yet, create them).
3.) Download the zip to your computer, mount your phone’s SD card and go into the main “Tasker” folder under the sdcard. If the file ends in .prf, put it in the “profiles” folder. If it ends in “.tsk”, place it in the “tasks” folder. Unmount, disconnect your phone.
4.) Now that you have them, you need to load what you want/need into the program. Open up Tasker (program), hit Menu, and go to “Profile Data”. Do a “Import One Profile” or “Import One Task” select one of the “tabs” (Profiles, Tasks, Scenes), and hold it — an “Import” option will present itself, which will let you import a Profile or Task (or not relevant here – a Scene). This is because Tasker changed the way profiles and tasks (and Scenes) are imported . As soon as you select that, you will see all the files in the directory that you copied. Now you can import whatever you want.

You should import the “Volume Buttons” Profiles (note: this is a profile), at least the “Normal” and “Sleep” tasks (note: these are tasks). The volume buttons profile is honestly a life saver since any time you tap a volume button, it will actually restore to the sound-profile task you have selected.

Now to use them,

5.) Hold down on the home screen, select Widget (for ICS 4, Widgets are created by going to Applications, and shifting over to widgets), select Task. It will show you a list of your tasks. Select “Normal” for example. It will show it to you (in case you have to make any changes last minute — don’t do it this way, always make them in editor), now select the green check and you are Done! You can now use it as a “program” on your home screen. Add at least 2 this way, and select them. Wait 1-2 seconds. You will see how it select/enables each, and then after it enables it, hit the volume keys on purpose, and then wait 1-2 seconds again to see how it restores it.

END OF GETTING STARTED – THAT’S IT! You have it working!

Ahh, you’ve continued reading and you haven’t skipped this…Clearly you care about some of the theory…

One of the biggest problems with Android is the sound profiles. I will start off with the main sound profile BUG:

Try setting your Settings -> Sound -> Vibrate to “Only when in Silent”, and then hold the power key, change the “Silent mode” to ON. Now hold the power key again, and change the “Silent mode” to OFF. Check your Settings -> Sounds -> Vibrate mode — it is changed incorrectly to “Always”. This renders the built-in “sound profiles” completely useless.

UPDATE: Please note that Google “sort of” fixed this, to a point, where we can now correctly implement the functionality using Tasker at least. It’s not there by default, but the “Silent Mode” now works for on (sleep), off, and vibrate, and there’s a separate toggle-able Ring+Vibrate feature.

Pretty much, half of these are the same issue. The main problem is that the Silent and Vibrate options for android, are really one single “Silent Mode”. The problem arises because Sound -> Vibrate settings only apply for “Silent Mode”. This means that you cannot have a completely silent profile and a vibrate only profile, and a “normal” profile. This is the most evident to anyone coming from a blackberry, where the sound profiles are flawless. I’ve read thousands and thousands of questions asking “how do I get sound profiles like on the blackberry”. Personally, this was the first thing that drove me crazy when I moved away from the blackberry.

Most people default to using a program which creates “Profiles” — setting bundles which simply toggle each Sound option (In-Call volume, Media, Ring Tone, Notification, Alarm, and System). The best one I’ve seen is AudioGuru, which is great, but it does lack some customization. The one additional step that most programs lack also is some sort of a guard for the volume buttons which toggle the ringtone.

My goal when thinking about all of this was to create a solution that was simple, extendable, and complete. The main points I was going after was to have profiles that are completely stand-alone, extendable/fully customizable, and completely scriptable. The end result was what I call “Blackberry Sound Profiles for Android”.

The logic becomes part of 3 sections. The FIRST SECTION is the Tasker sound profile tasks. These are “stand alone” tasks, which simply encompass every aspect of a sound profile. Let me walk through one of them:

Let me clarify some key things:
step #9 is needed in order to clear the old Icon back to a star.
step #10 sets the global variable to the name of this profile
step #11 activates the pressed/toggled widget

I’ve also included a “Sleep” sound-profile task (toggles all down except alarm and media), a “Work” sound-profile task (same as “Normal” sound-profile task, but the notification is less and the system sound is less so the keyboard is not obnoxious), a “Loud” sound-profile task (makes everything as loud as possible basically), a “Vibrate” sound-profile task (like sleep, but has vibrate on), and a “On-Call” sound-profile task (like sleep, but ring tone is low).

I am not sure if you are already picking up what’s going on, but basically, the idea is that you have a few of these sound-profile tasks, and you create widgets on the home screen. They all show up as grey stars. When you press “Normal” or “Sleep” for example, it changes the star to the correct icon (Sound Icon, or Muted Icon), and shows it on your home screen and notify’s in your notification bar (after which, a second later, it clears the notification bar). Now, go through the other profiles to see what they do. They are all pretty much the same, except the Vibrate profile, which uses step #2 to select the official Android “Silent” mode, with a Vibrate outlet.

Now, the SECOND SECTION is a single Tasker task called “Sound Profile” which has one step:

1.) Perform Task – %PROFILE

And now you see why step #10 from section one is needed. When this task is called, it will change the current Sound profile to the global variable (%PROFILE). Please import this task too. Why is this needed you ask? Because of my clever hack in the THIRD SECTION:

Here is where you have a Tasker Profile. It is called “Volume Buttons”. The basic logic is as follows:

1.) If Variable Set %VOLR (ringer volume), then call the “Sound Profile”

This essentially achieves a volume-reset every time you accidentally hit the volume up or down keys. Now you can see why the “Wait – 2 seconds” was needed. The key part about this is that it uses your global variable, and it resets your volume to the last Sound profile that you selected. Great huh? Please make sure you import the “Volume Buttons” profile into Tasker.

At last you are Done! You now have individual Tasker tasks which you can make widgets out of. I have the 3 that I use the most – Normal, Silent, and Work (work being a bit quieter on the notification and system sound for the keyboard noise) on my main home screen. Then I have the Loud, Vibrate, and On-Call on another screen since I use them less often.

OPTIONAL FOURTH SECTION FOR EVERYONE WHO NEEDS AN ON-CALL PROFILE

For the people interested, the ‘On-Call’ task works in a super elegant way: it silences everything except the ring tone (which it lowers), the alarm, and the media volume. The media volume is the key here. Let’s say you want SMS notifications but not emails while you are on-call. They both use the “notification” system, so there’s no way to do this by default (yet another ex-blackbery annoyance). What you can do is write a Tasker profile which interprets a “Notification Messaging, *” notify, (you can check the time if you are only on-call during the night or day) and then have the action for the task for the profile call the “Music Play” action which simply plays your SMS sound as an MP3. This essentially lets you isolate one application from another, by using the fact that you can play the selected notification through the media outlet. Beautiful Eh?

I hope all of this helps people out.

UPDATE – Added “One Ring” Task and Profile Monitor

I’ve updated the zip pack with two additions: a task which will provide you with a “One-Ring” sound-profile task — it’s basically the normal profile, but it brings the Ringer Volume to 0, and it increases the Media Volume up to 11. Also, I’ve added a “One_Ring_Monitor” profile, which intercepts calls, and plays a music file (mp3, wav, ogg, others…) — giving you the ability to play a notification — thus a single beep/sound.

Let’s start with the problem – I can’t stand unlocking my phone every 10-15 minutes when I decide to look at the screen either because I heard a beep, or because I want to check for a work email/SMS. The obvious solution: get rid of the lock screen. The new problem: now my phone is not secure. I need something to toggle this functionality on a “need basis”. Solution: use Tasker to create a task which will be created into a widget.

Here’s the logic:

0.) Set a default icon (used key in this case)
1.) Keyguard – toggle
2.) Notify – KEYGUARD IS OFF, if %KEYG is off
3.) Notify – KEYGUARD IS ON, if %KEYG is on
4.) Wait – 1 second
5.) Notify Cancel – KEYGUARD IS OFF, if %KEYG is off
6.) Notify Cancel – KEYGUARD IS ON, if %KEYG is on
7.) Set Widget Icon – Unlocked Lock, if %KEYG is off
8.) Set Widget Icon – Locked Lock, if %KEYG is on

Download Takser task: Keyguard.tsk.xml.zip (md5: 0e2f2fd8cdaa5ff71a1fd5b0329bdfe6)
Please unzip it, copy it to your device, and then import it into Tasker.

Make it into a widget, press it, the icon will change to an unlocked keylock, and your lock screen goes away. Hit power, check to see that when you hit power again, your lock screen is not there. The volume keys will turn on the screen too. If you press the widget again, the icon will change to a locked keylock, and now you will have your lock screen. What I personally do is use the pin lock screen, and then toggle it this way while I am at work. As soon as I step out or anything like this, I toggle my lock back on.

My opinion of Tasker in one sentence: “This is the first app that you should install on every android phone“.

A few months ago I needed an “automation” app. I was going to default to Locale which I had used when it was still free (this was before there was an official app store for Android), but the $10 cost made me look at my options — I figured if I was going to pay that amount, I might as well get the best app to do this. My problem with Locale is that it’s simply not that powerful, it doesn’t have tons of features, and all the good pluggins, instead of being built in, are additional paid add-ons. I am really glad I looked else where because I stumbled upon Tasker (http://tasker.dinglisch.net/). The official description for Tasker states that “Tasker is an application for Android which performs Tasks (sets of Actions) based on Contexts (application, time, date, location, event, gesture) in user-defined Profiles, or in clickable or timer home screen widgets.” I am not sure that I can describe it any better, so let’s leave it at that. If you want to learn more about Tasker, start here: http://tasker.dinglisch.net/tour.html

One thing that immediately popped about Tasker was the insane amount of built-in contexts, settings, options, detections, notifications, and actions. One thing led to another, and I started using Tasker for everything. I realized it had so much potential that I went back to stock 2.3.4 and just used Tasker to gain all the cyanogenmod functionality (that I needed at least).

The reason I decided to even write this post is in order to share two “programs” that I wrote, which I think are extremely helpful. The first one is called “Keyguard”. The second one is “Blackberry Sound Profiles”. I am putting these two in their own posts so that they can easily be indexed and searched url wise. I know personally that the most sought after thing on Android is the blackberry sound profile functionality. Well, it’s finally here! See my next two posts for all the information.