Thursday, 29 December 2011

Some more bugfixes, nearly market time again

It's nearly the end of the holidays, which means it's my last blob of free time to do a market release. This one has a few more bug fixes from the last one, and is hopefully good enough for the Market tomorrow morning.

Version 1.2011.12.29.0050

  • Event activity stuck grey colour fix
  • Better screen lock action description
  • Bluetooth and Wifi can now be set as 'at least 1 minute'
  • When watching for volume changes, Llama will now throttle its response if you've enabled 'Lock volume controls'

Wednesday, 28 December 2011

Some bugfixes

Here's a fix for the last post, as well as a whole load of other fixes. Thanks to all of you who email me rather than posting 'OMG WTF teh rubbish' 1 star comments. It makes a big difference! :) It means I can actually fix things, and make it work for everyone, rather than being left clueless as to why you aren't happy with Llama.

Version 1.2011.12.28.1225

  • Bluetooth/Wifi connected for X minutes fix
  • Recent tab crash fix
  • Events tab items less flickery
  • Screen lock on now puts lock on properly if the screen is off
  • Uppercase/lowercase name sorting
  • Ringer/vibrate fix
  • Locale action fix

Remember to export your data before installing test versions, just in case you have to go back to the market version.


A quick update before I go to sleep

I've spent most of today implementing some feedback, rather than fixing stuff. If anyone's still running Android 2.1, please get in touch. I need to know if the screen rotation action behaves for you. It wasn't working nicely in the emulator, but I've unfortunately learnt to never trust the emulator.

Here's what the next market version will contain:

Version 1.2011.12.28.0113

  • Lots of German translation updates. Cheers!
  • Reminder notification ticker-text no longer says 'Llama' in it, so that notification readers don't speak 'Llama' before every reminder.
  • Screen lock (buggy) action now be slightly less buggy. You can ask Llama not to disabled it until after you've unlocked the screen at least once. You'll need to update your events with the new setting.
  • Screen rotation condition. This might misbehave on Android 2.1 :(
  • Areas tab now shows current area in green.
  • Recent tab now shows areas in a variety of colours, or red if the cell is not added to any areas. These two follow the 'Coloured event list' setting, which I'll rename if I remember in the morning.
  • Preference screens no longer limited to 4 lines.
  • Llama Trails - a way of logging all of your movements. There's no way to view them yet, but you can start logging. I'll probably throw together a C# WinForms app, since that's the quickest way til I figure out how many people will actually use it.

As usual, export your data before installing test versions.


Monday, 26 December 2011

Yay! New market version

There's now a new version on the Market. It's basically the one from the 23rd with a few more bug fixes and a slightly modified Profiles tab. The version number is 1.2011.12.26.1212.

I updated it on the market at around 12:30pm UK time. As of 3:20pm UK time, my Android Market still isn't showing me an update, nor is the Market website showing me the updated app version and description. No matter how many times I press F5 and clear my cache it's still saying 1.2011.10.04.0750. Oh well.

That being said, some of you have installed the update and emailed me, so somewhere in Android land it has updated correctly.

Friday, 23 December 2011

Some bug fixes from the last version

Not much exciting to read about, except maybe the in-call condition. It pretty much does what you expect: let's you make events run when you are in a call or not. This can be handy if you have events that force your phone into airplane mode and what to stop that interrupting your phone calls.

Version 1.2011.12.23.1731

  • In-call condition
  • When using OR conditions, you can always use the same condition type multiple times
  • Sensitive info no longer written to logs, unless you tick a box in debug settings
  • Speak action lets you choose an audio stream
  • More details in the Speak action help
  • Speak action TTS cleanup tweak for some TTS engines that don't close properly
  • Fix for some Locale plugins that weren't working before
  • Added a warning about ICS's lack of 'link ringtone and notification volume sliders'

As usual, export your data before installing test versions, just in case you have to go back to the market version.

Download - Fixed! The resources are compiled properly now.

Sunday, 18 December 2011

Logical Slimmer Llamas

The new beta version of Llama now supports ORs of conditions. Normally, an event will only fire if all of its conditions are true, but there are some times when you'd want only some of those conditions to cause the event to fire. Previously, you could solve this by having multiple similar events, but that quickly gets messy (especially with Llama's crappy UI ;). The OR operator is implemented in Llama as a special condition that takes a list of other conditions and only requires one of them to cause the event to fire. At the same time, I've also added an AND condition. You probably won't use this much, as the default behaviour of an event is an AND, but if you need to use an AND inside an OR this is how you achieve it. Most people aren't familiar with ORs and ANDs (at least in the Boolean sense), so Llama also refers to them as 'match all' and 'match any' respectively. You can read through the previous paragraph and replace 'OR' with 'match any' if you like.

To create an event that vibrates whenever you plug in the headset or charger, you would need to create an event like this:

OR (Match any) (Headset connected, charging) -> Vibrate

If you have event colouring enabled in Llama's settings, you'll also be able to see the current status of the ORs and ANDs. Each OR and AND will have a set of square or curly brackets that show which conditions it contains, and also the state of those conditions. If any of an OR's conditions are true, then the brackets will be green, otherwise they'll be red. Similarly, if all of and AND's conditions are true, it's curly brackets will be green, otherwise red.

Another noticeable change is the naming of builds. Android lets apps have two version numbers:

  • a version code (usually just incremented from 1)
  • a version name (whatever you want, I use the compile date)

Previously, I used the version code to name the beta builds that I upload to mediafire. Since I introduced in-app billing I now need to keep the version code in-sync with the version on the market. The market uses the version code to determine whether a version of an app supports billing or not, otherwise it'll say:

'Application Error: This version of the application is not configured for Market Billing. Check the help center for more information.'

From now on, the version code won't increment until I plan to release a market version, so that the betas can still use in-app billing. Finally, I've got around to using ANT builds rather than hitting the Export signed APK button in eclipse. Llama is also getting fat and overweight with all of the languages that it has, so I've set up a tool that'll build 4 versions of Llama:

  • The usual market-style Llama you all know and love, with all the languages and no CALL_PHONE permission.
  • A version with all languages and CALL_PHONE permission, so that you can dial call-forwarding codes.
  • A thinner version of Llama with only en-gb resources, and no CALL_PHONE.
  • A thinner version of Llama with only en-gb resources, and CALL_PHONE permission.

You can find these versions in the Kebabapps Llama page on mediafire. I won't always remember to link to them.

Assuming all goes well, this version will be released to the market next week, maybe in time for Christmas, or maybe after if I'm not doing anything exciting for Boxing Day. You can also assume that me reading reddit will play some part in delaying the release :)

Version 1.2011.12.18.2207

  • OR/AND - Match any/all conditions
  • An alternative colour-blind setting for the coloured event list
  • Event list now colours events on a separate thread, so switching tabs responds faster
  • Events run through shortcuts now appear in event history
  • Fixed a forgetful Llama problem when using LlamaMap in low-memory situations
  • Now uses big red button for doing builds

[Insert the usual disclaimer about exporting Llama's data before installing test versions]


Sunday, 4 December 2011

As promised, here's a version of Llama that briefly moans at you for using MIUI ;) It'll pop up a notification when you change profiles, which you can then set to never appear again. I've also set the Llama Variable condition and action text boxes as auto-complete text boxes, so that you can use the variable names and values from your other actions and conditions.

Version 1.2011.12.04.1425

  • Framework for showing messages which can be marked as 'never show again'.
  • MIUI specific message when changing profile, which warns about permissions changes in MIUI.
  • Llama variable auto-complete text boxes

As usual, export your data before installing test versions, just in case you have to go back to the market version.


MIUI annoyance

I've just installed MIUI to tackle a bug with Llama not being able to set call volume. When Llama changes the volume, this message appears in the LogCat:

Phone Related Audio Settings Permission Denial: setStreamVolume() from pid=2266, uid=10041

This is related to a feature in MIUI which seems to automatically deny applications the call-related permissions, unless you opt-in to them (which I think is a good idea, but the implementation is not perfect). You need to do these steps to enable the permission:

  • Go to the super-user app
  • Go to Llama's app details
  • Set the misleadingly named 'monitor calls' to allow. Llama can now adjust the volume

What MIUI should be doing is notifying you that a permission was denied and offering you a way to fix it. That why you can see why an app is misbehaving. Instead, this just looks like Llama doesn't work properly, which is not very helpful for me (I get emails) and you (you have to email me).

MIUI should also split out the potentially privacy invading 'monitor your calls' permission from the more harmless 'change the volume of your ringer' permission.

I'll be adding a MIUI-specific bodge to Llama that will popup a message informing you how to fix it. Sadface .


Saturday, 3 December 2011

App start/stop condition and donations

Following on from the event-testing speed up two blog posts ago, Llama can now monitor the currently active application. You can now do interesting stuff like turning Wifi on when you open the browser, or adjusting the volume when you open a music app. Every time that you switch app, Llama will need to check if your events should fire. That's why the performance improvement was needed first, and why I've been putting it off until now :)

If you don't include an Active application condition, Llama won't waste time checking the active app. However, if you do use it, Llama will need to poll the ActivityManager for the current application. It's a shame that Android doesn't let an app receive a prod when the app changes. You can change the polling time in Llama's settings; the smaller the value, the quicker Llama will be able to respond, but it'll take more CPU time. If you set it to a high value, say 1 second, you should be fine. One second is probably good enough for most people, given that the start application animation takes about a second.

I've also implemented in-app purchases for donations. Plenty of people have wanted to donate more than 80p, so you are no longer limited to the one-off 80p Llama Donation that's in the Market. If you donate from within the app, you can finally uninstall the Llama - Donation app if you wish. The in-app purchases act as a separate marker that Llama checks to see if you've donated. (Not that there's much of a difference after donating... you just won't see the donate message ever again.)

You can donate as many times as you want, so you can add up the donations to your target value.

I've only tested this on my English, Great-Britain based phone, which shows the currency and prices in GBP. I'd be interested to hear if any you have problems looking at the donations page using a phone from a different country. Ideally, it'll show your country's currency if the Market supports it, otherwise fall-back to GBP.

Version 1.2011.12.03.2130

  • Active application start and stop condition
  • In-app donations
  • App notification icon condition now has an app-picker
  • Updated Polish and Slovenian translations, cheers guys :)

As usual, export your data before installing test versions, just in case you have to go back to the market version.