For the last far too long period of time I have been developing a project for university. The goal of which was to evaluate the new Google Android mobile device platform for its suitability to the development of location-based services.
A location-based service - besides sounding remarkably cool - is made up of a program or set of programs which supply the user with information and actions depending on his or her location. It is a comparatively easy to achieve kind of context-awareness. The idea being that if we supply our assistant devices with information about our current environment they ought to be able to filter the information we might want to access and present us with actions we are more likely to take than they would otherwise be. The research community has high hopes for location-based services. Projecting that it will allow major gains in usability, going so far as to make ideas practical, which have so far never come to fruition.
With a whole new player (Android) with powerful backing (Google) entering the mobile arena the question of whether it might be able to stir things up in the location-based service space was intriguing. So I set out to build a location-based service to evaluate the Android platform.
The project
The resulting application is this: A friend of yours sends you a message. She knows she stands a better chance of you getting back to her if you receive the message when you are in the mood and have the opportunity to act upon it. So she annotates the message with a time and place she thinks you might be willing to receive it. Say an invitation for dinner is likely to be interesting to you beginning around 5 in the evening and only if you are at home (ie not working or commuting).
The finished application works. With a little huge problem beyond my control, which I will get to.
Developing on Android
Android requires that developers design applications differently from traditional environments. And in my opinion (hey, that's what blogs are for) it was a good decision that it does. Android applications are split into a number of comparatively loosely coupled components, which act in concert to produce the "experience" of the product. Saving of data is one component's responsibility, showing one particular view is another, reacting to changes in the environment is a third. Together these components create an application, which is capable of storing data, interacting with the user and reacting to changes in the environment. (If this sounds interesting to you, you should really read the paper.)
Follow the Android
Unfortunately, when I started developing the project the current version of Android was a pre-release. For one this meant that I had to port the project a number of times as the API changed. For another there were a number of bugs, which were not documented, requiring me to debug the project without actually turning up any bugs.
But in hindsight worst of all was that the Google decided to remove built-in XMPP capabilities in one of the last pre-releases. At the beginning of the project it looked as though tight XMPP integration would become a major selling point. So the message transfer mechanism I built the whole baby around of is all XMPP. And when Google decided to drop that technology (for dubious reasons) I was left out in the cold. So no using the application on real devices in the foreseeable future. Sucks? Yeah, big time.
Is Android the sliced bread of location-based services?
Is that enough to learn a new platform? Frankly, I don't know. Assuming most of the bugs that bothered me so much have been worked out, I think Android should be a pretty nice environment to program in. Designing my project took a few iterations to get right and I think this is probably the largest obstacle facing any newcomer to the Android platform.
The Location-Based Services on the Android Platform paper can be downloaded on my website. My presentations are usually not easy to comprehend without the accompanying talk. And it is in German. But here is the Location-Based Services on Android presentation as well.
I sincerely hope this project is of value to you. If there is any information you'd like me to give you or if you have something for me, please leave a comment.
2 comments:
Why don't you make money on this by creating a tool for this company
http://bit.ly/kduJB
twitter @luffemann
Post a Comment