Saturday 29 December 2012

And we're back.... for now

If you have a system volume defined in one of your profiles Llama will now set it before doing anything else. This means the system volume is likely* to get changed by your ringer volume if you have one defined in a profile. It also means that when Llama asks for silence, it won't then be forced into vibrate mode by the system volume setting.

* ringer and system volume are now linked for some versions of Android and some ROMs

If you have problems, email me. If lots of you have problems Llama's going to hibernate again until everyone and their phone is happy :)

Llama.1.2012.12.29.1412 is on the Play Store (in about 30 mins to 1 hour.)

Llama's having a quick break

Llama's off the market for now while I investigate a pain-in-the-butt problem involving silent mode, vibrate mode and the dreaded System Volume level.

Changing the system volume in Jelly Bean now changes the ringer volume. I can't find anywhere in the Android SDK that documents this, which is rather infuriating. Feel free to look through here and see if you can spot it.

Changing the ringer volume (or the system volume since they are now related) will flick a silent phone to vibrate, even if the new ringer volume is zero. So everyone that previously had a fairly sensible 'set system volumes to silent' may now find your phone will vibrate.

Fun fun fun.

Why were previous versions of Llama behaving? Because it was naive, and literally dumped out the values from a profile to the AudioManager. Now Llama tries to be slightly smarter about setting the values... e.g. if you choose a Silent ringer mode, it will set the volumes to zero, rather than the values you picked from the profile. However, this exacerbates the problem described above.


I think it's fixed in this version, but no doubt there's some manufacturer out there that has tweaked their version of Android to have a system volume. Ideally, I'd want to hide the system volume from the profile editor if you're running Jelly Bean, but since there's now no way of knowing if a device supports system volumes or not it will have to stay :'(

I'll put this version on the market tomorrow morning, when I can fire-fight any more stupid that may arise.



It'd be awesome if you could let me know if the above version works for you... ideally activating a loud, silent and vibrating profile, and letting me know if the volume icons changes to the correct one. Cheers!

Friday 28 December 2012

It's market release day!

I've just pushed the most recent version of Llama to the Play store.


  • Japanese translation
  • Vibrate mode in ICS/Jelly Bean now handled as a special case, so that it changes more reliably
  • Warning about using system volume in ICS/Jelly Bean... it seems to affect ringer volume :(

Head to the Google Play store to pick it up! (That last sentence is a bit optimisitic though... it takes about half hour for the update to appear in the Play store :)

Monday 24 December 2012

Just a couple o' tweaks

Just a couple o' tweaks


  • Tweaked how profiles are changed for ICS/Jelly Bean. These Android versions are slightly weird in that they set the phone to 'vibrate mode' if Llama sets the ringer volume to zero.
  • 2G/3G action now CM10.1 friendly
  • 'Ongoing notification without icon' setting now uses the nice 'minimum priority notification' available in Android 4.2

As usual, backup your settings before running test versions, just in case things are broke.


Monday 17 December 2012

Nearly market time again

A few small changes before a market release which I hope to do soon. The good thing about Christmas time is I have lots of time off real-work, so I can do stuff like this :)


  • Fixed cryptography issue with Android 4.2 and screen lock password action
  • Updated German translation
  • Time-between timepicker container now scrolls horizontally if there's not enough vertical space. On Jelly Bean the timepickers themselves are vertically scrollable, which causes problems when they are placed in a vertically scrollable container
  • A little bit of work done to multithreading Llama. It's still disabled by default, but when enabled it'll pop up a 'thinking' dialog when Llama's service is busy, rather than freezing the UI and showing a horrible ANR dialog. Not all parts of Llama run on the right threads at the mo, so this will still be crashy when enabled.
  • No longer spams the crap out of logcat... which isn't much use any more since it requires root to grab every log message in the system
  • Fixed background colour of some list dialogs when you have a weird system colour theme

As usual, backup your settings before running test versions, just in case things are broke.

Download (link fixed, it was pointing to the English-only version, rather than the multilingual version)

Thursday 6 December 2012

Llama bean point one one

Not much exciting... a few bug fixes and a tweak


  • Notification is now low priority for Jelly Beaners
  • Fixed a stupid that was stopping call-state from working. (I turned it off and forgot to turn it on again)
  • Dodgy shortcuts/intents no longer crash Llama when it tries to run them

Export settings before installing, etc etc etc :)


Monday 3 December 2012

Llama Bean point one

This version mostly contains some more bugfixes for Jelly Bean 4.2+. Here's some detail for my fellow nerds.

  • Android now reports WifiInfo.getBSSID as 00:00:00:00:00:00 when there is no WiFi network connected. Previous versions of Android return null.
  • Accessibility services now require android.permission.BIND_DEVICE_ADMIN permission (thanks for the tip Patrick C!).
  • The following broadcast intents now required an 'exported' BroadcastReceiver: android.bluetooth.device.action.ACL_CONNECTED, android.bluetooth.device.action.ACL_DISCONNECTED, android.bluetooth.device.action.FOUND, android.bluetooth.adapter.action.DISCOVERY_STARTED and android.bluetooth.adapter.action.DISCOVERY_FINISHED.

In addition to that stuff, Llama now also lets you increment, decrement and toggle variables as part of the 'set Llama variable' action. Another user mentioned that Samsung phones now moan whenever an app tries to use a http:// intent. This was causing problems for Llama's NFC functionality, since it was listening for NFC tags tagged with http://llama.location.profiles/nfc. Llama will now format tags as the rather nonsensical llamaloc://llama.location.profiles/nfc. Any existing tags will still work.


  • Variable increment/decrement/toggle
  • NFC now writes as llamaloc:// rather than http://
  • Play sound action can now optionally store sounds are direct path, rather than content URIs with flakey Media database IDs which change between ROMs/factory-resets
  • Fixed wifi network connection check for Wifi Off (if not connected) action
  • LlamaAccessibilityService permission added for 4.2
  • Bluetooth ACL intents now directed at an exported BroadcastReceiver, so it behaves in 4.2. This fixes Bluetooth conditions, and experimental the Bluetooth locations

As usual, backup your settings before installing. If anyone still has an Android 2.3 device lying about I'd be interested to hear if the changes to the BroadcastReceiver affected anything. Ta!