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.

Anyhew...

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.

Llama.1.2012.12.29.0128

Download

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.

Llama.1.2012.12.28.1222

  • 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

Llama.1.2012.12.24.1708

  • 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.

Download

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 :)

Llama.1.2012.12.17.1125

  • 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

Llama.1.2012.12.06.1244

  • 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 :)

Download

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.

Llama.1.2012.12.03.2145

  • 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!

Download

Wednesday 21 November 2012

Llama bean

This release fixes a couple of problems with airplane mode and Wifi in Jelly Bean 4.2.

First off... the Wifi one. Llama stopped being able to tell what Wifi network was connected, which also had the knock-on effect of not knowing when a specific network was disconnected. This is because the API now returns the network name in double-quotes. My phone (which is still running 4.1.2) doesn't have the network name in double-quotes. Llama's simple string comparison was failing. Another crash was caused by a wifi network being able to have an empty-string named Wifi network. Easy to fix, lets move on!

Airplane mode now requires root. Yep, you read that correctly... an API that has been really simple to use and implement since Android 1.5 (or at least 2.1 when I first started coding for Android) now requires you to use root access to change it. Who knows why? Maybe it was deemed a security risk. I can live with that. What I don't understand is why there is now no way for normal apps to change it. People like Android because they can customise and use apps to automate airplane mode. Llama didn't originally change airplane mode, but you guys asked for it. People want to change airplane mode Google!

There should be a standard Android permission that lets apps change airplane mode, however everyone knows no one bothers to read the permissions on the market, so that won't help. What should really have happened is that airplane mode should require Device Administrator access, like the lock screen or turning off the screen. That way people will be forced to confirm what apps can change airplane mode when they first use that action, rather than having to root their phones.

Oh well, mini rant over.

Llama.1.2012.11.21.2235

  • Airplane mode now uses root in Android 4.2+
  • Fixed wifi name connected/disconnected problem
  • Fixed blank-named wifi crash
  • Fixed active apps list being null rather than empty crash
  • Fixed stupid bug when delay was less than a minute
  • Llama now broadcasts com.kebab.llama.VARIABLE_CHANGED intent on changes
  • Text entry dialogs now open keyboard automatically. Yay!

As usual, backup your data before using test versions just in case you need to revert to the market version.

Download

Tuesday 23 October 2012

Half-done Holo Llama

It's been waaaaaay to long since the last blog post. But I haven't just been twiddling my thumbs. This version has a number of new features. You can now set event delays in seconds. This involved a number of fairly evil changes to Llama's internals, since before everything was aligned to the next minute. It's been running fine for a couple of days though.

Llama can now format NFC tags by stuffing a http://llama.location.profiles/nfc URL in them. This is needed so that Llama doesn't have to be the foreground app for it to grab a tag. Otherwise you may end up with Llama and another app fighting over who should be in charge. You can of course overwrite the tag once you no longer want to use it with Llama.

Llama's Android Intent action now lets you set extras, which means you can pass more nuggets of information to third party apps.

And finally, I've finally set the theme to use Holo if it's available (API level 11, or Android 3.0 for the non-developers among you). This means Llama looks a bit different, and that the positive/negative buttons on dialogs have swapped around. This may take some getting used to! There's no action bar yet, and the tabs still look like boring tabs, but I hope to make Llama all nice and Holo-y.

Llama.1.2012.10.23.2126

  • Better NFC support... NFC tags can be 'formatted' for Llama
  • Half-finished-Holo UI
  • Intent actions can have extras defined now
  • Some bug fixes related to Wifi
  • Override number of max event recursion (when variables change, Llama checks events again and has a safety switch so it doesn't get stuck in a loop)
  • Override number of saved cells and event history

As usual, export your settings before installing this version. It does have a fairly hefty change to Llama's internals regarding the time. If you rely on Llama, maybe give it a week or so just in there's any bugs.

Download

Tuesday 7 August 2012

Ooo, a social Llama

Three new things for Llama: mobile data conditions, LlamaTone rate limiting and "social" sharing. Gotta love that stupid buzzword.

LlamaTone rate limiting means that you can set the ringtone for your GTalk app (or any other app) to a LlamaTone, and then have Llama limit how often that tone gets played. e.g. if you have a LlamaTone limited to 5 minutes, and receive a message at 9:00am, your GTalk LlamaTone will play. When you receive a message every 5 seconds later until your friend finally shuts up at 9:03am it won't make a noise. Llama will prevent the tone from being played until 5 minutes after the last message in the burst of messages. That means you won't hear anything until 9.08am. Maybe 5 minutes is too long, but you can adjust the number of seconds to whatever you think is comfortable. You'll need to edit your current profile to add a LlamaTone if you aren't using any already.

The social sharing lets you copy an event's conditions and actions as a URL. You can then paste this wherever you like on the internet, and people will be able to reuse it. Tap and hold an event to start Android's sharing intent, which will let you share it to most apps. Install a handy 'share to clipboard' app to copy it to the clipboard. A Llama URL looks like:

http://llama.location.profiles/[event-group-name]/[url-encoded-event]

The format actually supports multiple events, but the UI in Llama doesn't let you create these yet. You can hack your own by sharing two events and joining the last bit together:

http://llama.location.profiles/[event-group-name]/[url-encoded-event1]/[url-encoded-event2]/[url-encoded-event3]

Llama uses http:// rather than creating its own llama:// protocol, so that the Gmail app (and probably some others) automagically create a hyperlink that you can click to start Llama. The downside to this is people that don't have Llama installed on their phone will get a server not found error, or maybe a search page. Hopefully noone ever buys the .profiles domain :D

You'll be asked to confirm the imported events, so internet-numpties don't go around setting your volume to loud, or turning your screen off, or something horrible.

Llama.1.2012.08.07.2115

  • LlamaTones can now be rate limited
  • Share Llama events as URLs and click Llama URLs to import
  • Mobile data enabled/disabled condition
  • Mobile data connected/disconnected condition

As usual, export your Llama data before installing test versions

Download

Sunday 10 June 2012

Roaming Llama

This version of Llama has a roaming condition, so you can perform events when you enter or leave roaming. Unfortunately, my phone only lets me use one network, so I can't see if it works properly in all situations. If someone could install it and let me know how it works, that'd be great.

Llama.1.2012.06.10.1501

  • Roaming condition
  • Chinese translation! Thanks athena-秋风
  • NFC bug fix... the invisible NFC activity that gets launched when you place a tag on your phone was lingering around longer than it should have
  • Ability to delete named NFC tags in Llama's settings
  • You can now disable Llama's NFC watching skills in Llama's settings, if you want to use some other NFC app

As always, export your Llama data before installing it just in case you need to go back to the market version.

Download

Monday 28 May 2012

Time for a quick post

Nothing exciting going on in Llama land at the moment. This version has these changes, mostly bugfixes.

Llama.1.2012.05.28.2218

  • Japanese translation. Thanks!
  • CyanogenMod9-friendly 'link volume and notification volume'. Now uses volume_link_notification instead of notifications_use_ring_volume in CM9.
  • Wifi disconnected condition fix... ICS now reports itself as SCANNING when not connected, and never seems to reach the disconnected state that Llama was previously looking for.
  • Fixed shutdown action incorrect message, cos I'm a numpty

As per usual, extract your Llama data just in case you have to uninstall and reinstall a previous version

Download

Sunday 15 April 2012

Llamas near fields

I've managed to borrow a phone with NFC support from my real-life job and I've been toying with it over the weekend. The Llama at the end of this blog post now has NFC support. You can place your phone near an NFC tag and get it to do stuff! Consider this a very early implementation. I'll never be able to use this in the real world, so you should let me know how it performs.

To use it, you add the 'NFC tag detected' condition to an event. Llama will then tell you that you need to place your phone over an NFC tag, such as your Oyster card if your a Londoner like me. You can then give the tag a friendly name. Then add other conditions and actions as normal.

The NFC tag detected condition is a trigger only. At all other times it will evaluate to false. This is because Android doesn't tell Llama when a tag disappears, only when it is first seen. It may be possible to periodically attempt to write to a tag to detect its presence, but I haven't had a chance to implement that yet.

Llama.1.2012.04.15.2044

  • Llama can now detect NFC tags!

This is a very early build that I haven't been able to test much, so you really really should export your Llama data before installing it. I've tested it in the emulator running Froyo (which lacks the NFC APIs) and it didn't crash, but who knows.

Download

Sunday 8 April 2012

The Llamaloc format

I've not got as far as I wanted to with the LlamaTrail reader. Someone emailed me asking about how the .llamaloc format works, so here's a brief description. I've also attached my proof-of-concept, no where near fit for human consumption app that reads them. Unfortunately, it's a Windows app written in C# rather than an Android app written in Java. Android apps are hard and fiddly to write and Java is a pig of a language, so a Windows C# app was the quickest way to check that Llama was logging stuff correctly.

The Llamaloc file format is a continuous stream of timestamped information. Each file is a separate day, so the timestamps are only the time of that day. Following the timestamp is a byte identifying the type of data that follows. After that is the data itself, whose length varies depending on the type of data. There are 3 types of data so far: Llama start, Llama shutdown and a cell change. Eventually, there will be wifi network and Bluetooth changes.

[1-byte datatype ID][4-byte milliseconds since midnight][datatype payload]

  • Datatype 0: Llama start
    • Payload length: 0
  • Datatype 1: Llama shutdown
    • Payload length: 0
  • Datatype 2: Cell change
    • Payload length: 8 bytes
    • [4-byte Cell Id][2-byte MCC][2-byte MNC]

You'll also need to open the Llama_Areas.txt. This is a geeky-human readable format, rather than binary. Each line represents an area, which is stored as a pipe-separated list. The first item in the list is the Area's name. All subsequent items on the line are the beacons (cells, wifi networks, etc). If a beacon starts with something non-numeric, then it isn't a cell*, and you should ignore it for now (it could be W=WiFi-name, M=WiFi-mac, B=Bluetooth or P=Map-point). The cells are colon-separated as CellId:MCC:MNC.

If you want to play with the app, you need to mount your phone's SD card and point the Llama Trail Reader at your Llama folder on your SD card. If you have a shiny new Galaxy Nexus, it doesn't have proper mass-storage support... I don't think Windows assigns it a drive letter. You'll have to copy the Llama folder to somewhere (e.g. your Desktop) and then point Llama Trail Reader at the copy.

As I mentioned, the app and the code is pretty horrible. If you can figure something out from it then great! Do post about it in a comment or email me. You may use the Llama Trail Reader code and app as you wish and at your own risk, but you may not sell anything derived from it. If you do, I'll get angry, but probably won't sue you because lawyers are boring and expensive. However, one day I may study law so watch out. If you want to release a free app with a donate button, then that's fine. If you have any questions or are unclear about anything, then email me.

Download Llama Trail Reader EXE and source

* - Llama was originally never meant to support anything other than cells.

Gmail Label Speaker Resurrection

Google has recently published an official Gmail API for labels, after beefing up Gmail's security about a year ago. This means that Llama's neglected, dim-witted cousin Gmail Label Speaker now works again. Whoopie!!!

Enjoy!

Download from Google Market Android Play thing

Boring market release

I've released a new Llama to roam free on the Market, or Google Play as its now called. I still can't get used to calling it that. There's not much exciting going on in this release. It's mostly the previous blog posts version, with a few different things.

One email I get all the time, and probably the most common "OMFG teh rubbish 1-star" comment, is about uninstalling Llama. When you activate Llama as a Device Administrator, you won't be able to uninstall Llama without first deactivating it as a Device Administrator. To the detriment of my sanity, Android doesn't even tell you this. It just says 'uninstall unsuccessful'.

The device admin settings can be found in the Location and Security settings on Android, but as per usual, other manufacturers will move all of the settings about. Llama now has a bigger warning before you enable it as a Device Administrator. Hopefully people will remember to untick it before uninstalling Llama, rather than emailing me ;)

The other change since the last blog post is a way to immediately accept a confirmable event from the notification that appears, which saves me one click when my Bluetooth headset connects :) hooray for laziness!

Llama.1.2012.04.08.1347

  • Big fat warning about disabling Llama as a device admin BEFORE uninstalling (when using screen off/lock password actions)
  • Instant event confirmation from notification
  • Updated German and Slovenian translations
Download from the market Google Play

Sunday 18 March 2012

Bugs begone

Another quick update for Llama. Just a couple of bug fixes this time. Real life is very busy at the moment, so I haven't had the chance to add anything fun and complicated.

Llama.1.2012.03.18.1802

  • Option to disable wifi polling when wifi-hotspot is active.
  • Choice of shutdown commands for the Turn off phone (requires root) action. Please send me more as you find ones that work for you... same for the reboot action.
  • Fixed OR conditions misbehaving with enter, leave, bluetooth and wifi conditions when 'allow retrigger' is unticked.

Remember to backup your data before installing test versions!

Download

Wednesday 7 March 2012

Quick ICS Update

Here's a quick update. I shall be very brief this time!

Llama.1.2012.03.06.2336

  • ICS repeating calendar event fix.
  • Speech action cleanup hack can say custom text, since some speech engines actually say 'dot'. Use this to change the symbol that gets spoken when using the speech cleanup hack.
  • Debug settings to never save any cells in Recent tab.

Remember to backup your data before installing test versions! Email me if you have any problems.

Download

Wednesday 22 February 2012

Time for a small update

Well, no one replied to the previous post. In total there were 58 reports in the developer console related to the issue, so I can only guess that the guys that are affected don't read this blog. Kind sucks because they won't see this post about the possible fix for it.

There's a few small changes this version, as I've been really busy with real life stuff at the mo. Enjoy!

Llama.1.2012.02.22.2242 (there's a lot of 2s in that version number, hurrah!)

  • Fixed Expandable List view crash
  • Wifi hotspot condition (does not act as a trigger!)
  • Enable, disable and rename events groups

Please export your data before installing test versions, as I may have broked somethink.

Download

Sunday 12 February 2012

A weird crash

Someone out there has a crashy Llama, but I have no idea who. I'm getting error reports in the Android developer console that look like this:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.kebab.Llama/com.kebab.Llama.LlamaUi}: java.lang.ClassCastException: android.widget.ExpandableListView$SavedState
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1659)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1675)
at android.app.ActivityThread.access$1500(ActivityThread.java:121)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:943)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:3701)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:862)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:620)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.ClassCastException: android.widget.ExpandableListView$SavedState
at android.widget.ListView.onRestoreInstanceState(ListView.java:3768)
at android.view.View.dispatchRestoreInstanceState(View.java:6366)
at android.view.ViewGroup.dispatchThawSelfOnly(ViewGroup.java:1302)
at android.widget.AdapterView.dispatchRestoreInstanceState(AdapterView.java:767)
at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:1289)
at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:1289)
at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:1289)
at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:1289)
at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:1289)
at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:1289)
at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:1289)
at android.view.View.restoreHierarchyState(View.java:6345)
at com.android.internal.policy.impl.PhoneWindow.restoreHierarchyState(PhoneWindow.java:1486)
at android.app.Activity.onRestoreInstanceState(Activity.java:844)
at android.app.TabActivity.onRestoreInstanceState(TabActivity.java:58)
at android.app.Activity.performRestoreInstanceState(Activity.java:816)
at android.app.Instrumentation.callActivityOnRestoreInstanceState(Instrumentation.java:1096)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1637)
... 11 more

It's related to this issue http://code.google.com/p/android/issues/detail?id=2732, and is a bug within the Android platform's code. I think I know a way to fudge around it, but since it doesn't affect all Android phones it makes it difficult to debug. The way to reproduce it is to open a tab with a ListView (e.g. Profiles), then open a tab with an ExpandableListView (e.g. the Events tab), and then cause the view to be recreated by rotating your phone or doing something funky. If your Llama crashes, please get in touch so I can send you a version which may fix it.

Saturday 11 February 2012

New market version

There's a new version on the market. It's exactly the same as the one in the last blog post, but feel free to update if you have OCD and have to ensure every app downloaded from the market is update to date (like I frequently check every morning. I have no idea why, but I have to see what's changed in market-land).

Version Llama.1.2012.02.11.1349

Enjoy!

Tuesday 7 February 2012

Happy Belated Birthday Llama

Llama is a year and a few weeks old now! It's come a long way since the first market release last January. Back then Llama could only change profiles, run apps, toggle Bluetooth, Wifi, mobile data and APN, and had very simple reminders. Now Llama can do over 50 actions, as well as a whole host of other stuff through third-party Locale plugins.

However, Llama existed before the Android days. Llama started as an S60 project, written in horrible Symbian C++. It used to look like this for any one that is interested.

I have been amazed at the support and love that you guys have shown for Llama. If it wasn't for that support I would have probably got bored and stopped developing it. I definitely didn't expect to receive 1000 downloads of the donation app. I guess there's a big thanks to say to reddit, which (despite my obviously self-serving post) caused a lot of traffic to go to App Brain, which in turn meant that Llama was lingering in the 'hot apps' section for a few days. Without that initial burst, I don't think Llama would be as popular. So also thanks to all of your that downloaded it, and spread the word.

During the past year, I've taught my Llama to do this:

  • The obvious STFU at night, and be quiet at work.
  • Disable mobile data at night if I'm at home
  • Kill my launcher at 6am every day to keep it nice and speedy
  • Turn my Bluetooth on at 8am at home, and 5.30pm at work ready for my commute
  • Vibrate 3 times when my Bluetooth headset connects, so I know it's connected.
  • Kill Spotify when my headset disconnects, because Spotify can't code for sh*t and leave a wake-lock active, draining my battery.
  • Set the music volume lower when the headset disconnects
  • Set the music volume to maximum when the headset connects, after showing a confirmation message.
  • Set the screen timeout to 5 minutes when charging at home (because I'm probably debugging)
  • Set the brightness to maximum whenever the Subcard barcode app is started (reflective screen+barcode laser reader usually means it has trouble reading it)
  • When I plug in my portable speakers, start Spotify
  • And also a bunch of home screen shortcuts to quickly turn off mobile data, 2g, 3g, and the screen timeout.

Some of you have emailed me about your own uses of Llama. Probably the most interesting use I've heard is to send text messages to a home-automation system, so that your heating comes on when you're nearly home, or to turn the lights off when you leave (or maybe on for the burglar-deterring ones amongst you). This uses a Locale plugin to send SMSes.

There was also a chap that said he makes Llama dial his automatic house-gate when he's nearly home so that it's open when he arrives. Of course, you'll need the call-phone Llama from the side bar to do that.

It's nearly time for another market release, since there's a few ICS problems/fixes that really need to be pushed into the wild.

Llama.1.2012.02.07.1947

  • Now warns about ICS's stupid decision to remove the ability to unlink ringer and notification volume
  • Fixed problem on ICS where Android reports the time as 1999 when the system is starting up, causing Llama to go crazy
  • Updated Russian and Slovenian. Thanks guys!

As usual, backup your data before installing this version, just in case you have to go back to a different version

Download

Monday 23 January 2012

A mini LlamaTone update

This version fixes a couple of bugs:

Llama.1.2012.01.23.2330

  • LlamaTone editor no longer shows LlamaTone picker in its ringtone-picker selection, so you can no longer create an infinite loop and blow up the universe. If you only have the default Android picker installed it'll use that without prompting.
  • LlamaTones can now be removed by setting them to 'don't change' in all profiles
  • LlamaTones can be copied between profiles
  • Fixed sound action gives up if there's an invalid sound (like a dodgy LlamaTone)
  • Fixed Android Intent action selection crash
  • Export data now lets you know if it succeeds (previously you'd only know if it failed)

As usual, backup your data before installing test versions, yada yada yada

Download

Saturday 21 January 2012

Ring ring ring ring ring ring ring LlamaTone!

Introducing LlamaTones! A way to control which notification sound other apps play when they want to notify you. Llama now lets you change the sound depending on the current profile. You can have one profile play your awesome annoying ringtone that you paid a fiver for, and have another profile play a more discrete beep. You can do this by editing your existing profiles and setting up LlamaTones.

In one of your profiles, create a LlamaTone and give it a helpful name. e.g. Gmail. You can then specify the ringtone that profile should use for Gmail notifications. Then edit your other profiles' LlamaTones and set which ringtone that profile should use for Gmail. The final step is to tell Gmail which LlamaTone to use. Do this by editing Gmail's notification settings and using the 'LlamaTone' picker that will appear.

There's also some other random fixes in this build, mostly ICS related, since ICS is a very different beast to previous versions of Android. Sometimes so different that the Android API isn't even up to date. Did you know it's no longer possible to set AudioManager to Silent? Neither did I. Some of you may have found Llama constantly trying to put your phone in silent mode forever. Instead, ICS now reports itself as vibrate but with both ringer and notification vibration turned off.

Llama.1.2012.01.21.2223

  • Autocompletes for variables and groupnames suck less. Would you believe the default Android autocomplete textboxes don't scroll vertically?!
  • Search for events by name
  • Android Intent action now has category field
  • Noisy contact can now be set higher than 7
  • User present condition, which fires after you unlock the screen
  • Call state condition lets you choose ringing, in-call or idle
  • Fixed wonky dots on ICS
  • Fixed wonky silent mode problem in ICS
  • Option to ignore volume changes while in a call, for phones that incorrectly report volumes while in a call
  • Fixed two calendar events ending and starting at the same time
  • Locale plugin fixes
  • Repeating calendar events in ICS handled better
  • Bluetooth WakeLock now gives up after a minute if Bluetooth didn't enable properly
  • LlamaTones!

Anyhew, backup your data before installing this version just in case I've been a numpty and broken something. That way, you can reinstall the market version and carry on as you were before.
Edit: I've been a numpty... battery events are working again in this version. That's why you should export your events ;)

Download

... and here's a random link that's kinda related to the post's title: http://www.albinoblacksheep.com/flash/badgerphone

Wednesday 4 January 2012

Happy new Llama!

Happy new year Llama lovers! Firstly, thanks to all of your that have used the in-app donation options, especially the guy that donated the steak. That's awesome :)

This version now lets you put your events into named groups. I've started using this already by throwing the 30 or so dev/test events I have into their own group.

Another much-requested feature is support for moving the app to the SD card. This is now possible but I don't recommend it. If you mount your SD card to your computer, Llama will be closed. Any events that occur while Llama is closed won't happen. Ever. Llama can see what's going on if it's not running. When you remount the SD card, Android doesn't broadcast anything helpful to those apps on the SD card, so it won't restart immediately either. It will start eventually though... turning your screen off then on will do the trick.

Another feature someone requested was to use the next alarm time as a condition. This proved to be a bit of a challenge, as Android doesn't actually store the alarm time somewhere handy. It does store the 'Thu 7.20' message you see on the lock screen though. Llama tries to parse this. The alarm condition's configuration says when the next alarm is due. Can you let me know if you run into any problems! The alarm condition works in two ways: either as a trigger when the next alarm is due, or a simple yes/no for whether an alarm is set. The example the guy that emailed me gave was he wanted a reminder to set an alarm if no alarm was set when he plugs in his phone. You can achieve this by doing:

When there's no alarm set, when charging between 9pm and 1am -> Reminder, play a sound, vibrate lots, etc

Version 1.2012.01.04.2244

  • Install to SD card (see comments above)
  • Android Alarm clock trigger/condition (see comments above)
  • Expandy grouped event list
  • Kill apps actions now let you select more than one app
  • Added 15% brightness which was A.W.O.L

As usual, back up your settings before installing this version, just in case you have to revert to an older version

Download - oops, just noticed I left the 'press menu to toggle between grouped and ungrouped' code in. Eventually I'll move that to its own button or an option of the filter dialog. It may get annoying depending on how often you press your menu button on the events tab.