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