It has been a year, almost to the day, when I started working on Caltroid. Caltroid is a Caltrain schedule application for Google Android-based devices. I released the 0.1 version of Caltroid 15 days later. I used SDK version m3-rc37a.
In September 2008 Google finally released the 1.0 version of the SDK. In the meanwhile I hadn’t really done any Android development. But I decided I’d update my little application to the 1.0 SDK release so that people could actually start using my application on real devices that were also just coming out.
Unfortunately it seemed the SDK had gone through huge changes. My first strategy was trying to just fix things that did not compile, but that looked hopeless. I ended up either commenting or removing nearly all of my code. I then tried to look at the “what has changed” documents, but that proved nearly useless as well, and was way too difficult. What was worse, almost all of the documentation and code samples were still stuck with some older SDK version. I finally burned out.
But just recently someone commented that they were actually using my application on a real device. I was amazed; I did not know it would work. So given that I seemed to have at least one user, I started thinking about working on the conversion again. And then I noticed that Caltrain had released new schedules on January 1, 2009, so I had to update my other schedule applications. I continued with my conversion, and was happy to note that the situation with documentation and code samples had improved a lot. Web searches also returned some usable samples, so I was able to fix the places where I had gotten stuck previously. Finally I remembered reading about Ctrl+Shift+O to automatically fix imports in Eclipse, and decided to put all the deleted code back and see what would happen. Another amazing thing: just a few minor things left broken that were easy to fix.
After the application finally was running, I noticed it looked pretty ugly compared to what it was with the old SDK. The spinner controls were functionally better, though. The old dark theme was pretty nice looking in my opinion, but the new themes are very plain. With some reading of documentation, and the new improved UI building tool included in the Eclipse plugin, I made the UI look reasonable, although I gave up on customizing buttons which looks like a huge amount of work. It is apparently just not possible to change button colors and retain the 3D look. I also figured I should add some new feature so that I could bump the version number, so I added a checkbox to the UI to toggle showing all trains or only trains that stop at the selected stations.
Some frustrations still remain:
- documentation still partially out of date
- documentation could really use code samples
- still no multicolumn list view
- parts of the new API seem more difficult to use because things became more generic
I still don’t know anyone who has an Android device, so I have been unable to test my application on real hardware. I am especially concerned about performance, since I am recreating the controls on most changes (I still haven’t figured out how to make UI controls update automatically when data changes). There is quite a bit of room for future improvements.
Next step is figuring out how to release the application so that people can actually install it on their devices. It seems like this will involve digitally signing the package. Having the application on some marketplace would be great, but I am somewhat opposed on principle to the $25 fee since at this point I don’t know if I’ll be charging for any application I might make.