SMS Location Sharing
Sharing your personal location can be a sensitive topic for many. Apart from who can see your location, there is also the issue of which social networks and advertising firms have access to that data. My solution to this has been to create a client-side location sharing program, operated by SMS. The program allows the user to add trusted numbers, which they are comfortable sharing their location with. Then, when someone on that list sends a specified keyword, the user's location will be shared via a link to a map. For now, my execution uses Google Maps, but could also use OpenStreetMap or any other service the user specifies.
I use this program to share my location with people that I want, without sharing that information with advertising firms and social networks. There is no way that someone can access this data short of reading my text messages, and in that case I have bigger problems to worry about. On average, this program is used once per day on my phone. There are about 50 authorized users in my contacts who can request my location. I often find myself wishing that more people used something like this.
Design and Programming
The device that I run this program on is running on Android 4.4.2 “Kit Kat”. When a text is received from a trusted sender that matches the keyword “Where are you?”, my phone begins the task of acquiring and sharing my location. First, my phone puts the GPS in to High Accuracy mode, and waits a minimum of 30 seconds to acquire a signal. After that, it will wait for up to 15 more seconds to acquire a location within 15 Meters of accuracy. After that time period, it will raise its acceptance threshold by 10 meters every ten seconds until the location is accepted. Once the point has been acquired, it checks to see if my location is in my defined “Geo Fences”. These are pre-programmed locations that have a plain English response like “I'm at home” or “I'm in the Student Union”. If it does not fit one of these locations, it will translate my coordinates into a Google Maps link using some simply syntactical manipulation. Then it places the response in a text and sends it off to whoever requested the data.
Currently my program is only capable of sending a single location. In the future, I would like to create a web interface where people can request location updates for a period of time (15 – 20 minutes). That person would be able to see a continuously updating map for that period of time, then the link would expire. This has various drawbacks, such as battery consumption, complexity, and security.