I recently needed to share my location in real-time with my wife using my Android phone. Most of the existing location tracking services were disgusting and difficult to set up, and none of the free ones were real time*, plus I needed an excuse to get started with Android development. So I set out to make a better, free-er alternative; and Track That Thing was born.
* I've since discovered glympse, which really is exactly the kind of thing I was hoping to find in the first place... But now TTT is done and I still think it's worth sharing :)


I need to give credit to a few people. Ben Zurcher, for helping me make this site less disgusting than the alternatives. Mark Murphy, for his wonderful CWAC Location Poller module, without which I would still be debugging Android IntentServices. Joseph Wain, for his awesome glyphish icon set.


First of all, Track That Thing is open source. You can get the source at the Track That Thing github page. If you're looking for an Android or Google App Engine example application (or project to contribute to :) ), then there ya go.
Saving to Track That Thing
Track That Thing uses a pseudo-RESTful API to store users' locations. You can store locations yourself by making an HTTP GET* request with the following parameters: lat, lon, acc, speed and secret. Something like:
would save a data point associated with the secret "rain bend 9a5". If you have a set of tennis shoes with a GPS module and network, feel free track those things using the Track That Thing "API" :).
* Yeah, a GET request to save. That's why I say "pseudo-RESTful"...
Retrieving from Track That Thing
You can pull Track That Thing data by making an HTTP GET request with the following parameters: secret, n (optional) and last (optional). n limits how many data points you'd like to pull. last sets a bound on how far back in time you'd like to pull data. Something like:
would grab the last 30 data points, going no further back in time than that garbledy date (which was gleaned from the response of an earlier request), and would result in a JSON object of the following format:
{"msg": "Success!", "data": {"locations": [{"longitude": "-117.339096665", "latitude": "33.9890491962", "user": "", "date": "2011-02-02 05:00:08.409676", "speed": "0.0", "id": 406, "accuracy": "48.0"}]}, "success": true}