I’ve decided to dust off the Runr code and have started working on it again. Let me say, that the current implementation is pretty bad and has some fairly nasty edge cases that sorely need to be taken care of.
One bug I didn’t notice was that when you set your running time to 10 minutes the application won’t actually ring when it hits the 10 minute mark. A tad annoying when you are out for a run and are really looking forward to that 1 minute walking break.
Because of these problems, I’ve decided to do a complete overhaul of the Runr state machine that manages when you should be walking and running. I’m also going to be adding in some new features that I’ve thought would be nice to have.
My first step in updating the state machine was to remove it from the timers themselves since this did make testing very complicated, error prone and susceptible to timing issues during debugging. So, now that it’s out of that code I can actually test the damn thing. This is being done using JUnit of course and the Android testing instrumentation.
The instrumentation is pretty nice; when it works. There are times (at least on my machine) where it works and others when I need to press Run several times. It’s hit or miss on what to do to actually get the testing suite to start on the first shot, but if you have suggestions on what I may be doing wrong that would be great. If I could simply run the tests through a terminal, that would be even more preferable though I’d rather get the next version of the application out.
I’m also going to be experimenting in the world of Ad-driven revenue to see how well it works. I wouldn’t be surprised if users complain about the advertising, but unless Google Checkout vendor accounts come to Canada this will have to do. I may look into some kind of in house licensing system in the future, but for the time being this will have to do.