I'm making my way through Spycraft: The Secret History of the CIA's Spytechs, from Communism to Al-Qaeda, and in Chapter 10 there's mention of a device called BUSTER (all caps, of course). BUSTER was a sort of radio transceiver that would send out and receive a text message when covertly deployed. This apparently allowed a spy and his handler to exchange messages without either making physical contact. Because it was a low powered device, the sender and receiver still needed to be relatively close to each other. Operating at low power was a good thing, because it helped make the device harder to detect.
This notion of dropping off and picking up messages within a certain geography got me thinking: wouldn't that be a fun app to build?
So here it is, the very uncreatively named: Msg Loc. Yeah, that's a .apk file. If you're feeling especially lucky (and trustworthy?), you're welcome to download and try the app out.
As if the name weren't ugly enough, it's got UI to match:
(Remember people, we're prototyping here)
Operating the app couldn't be simpler: clicking Pickup Message, derives your current GPS location, picks up the text left at location and reads it to you. The Leave Message prompts you for text, which is then uploaded. The system uses BigHugeMap.com for storing and retrieving the text. So yeah, none of this is remotely secure. But all messages are public, so there really isn't any expectation of security.
So far, if I were you, I wouldn't really be impressed. All I've done is is figure out the user's GPS location, make a couple of HTTP requests and leverage the built in text to speech capability that comes with all Android devices. Here's the cool part: the entire app, including generating the APK was done in Tasker. That was concept to working app file in less than an hour and most of that time was spent learning about scenes (that is, building your own custom UI) and other Tasker details. It's hard to believe that you can create a truly functional little app, all without ever writing a line of code.
Incidentally, the app may be crude, but the lack of any way to browse or derive where messages may actually be found is intentional. I think there's something slightly magical about standing at a bus stop and hearing someone else's message. Or, knowing that you're leaving a message for some other stranger. Sure, it's kind of like geocaching, but not quite.
Below is the textual description of the tasker actions that power this guy.
Loc Msg Put (49) A1: Vibrate [ Time:200 ] A2: Perform Task [ Name:ApxLoc ] A3: Get Voice [ Title:Your Message ] A4: Variable Set [ Name:%value To:%VOICE ] A5: Variable Set [ Name:%key To:Loc-Msg, ] A6: Variable Set [ Name:%key To:%APXLOC Append:On ] A7: HTTP Post [ Server:Port:bighugemap.com Path:/put Data / File:key=%key value=%value] A8: Say [ Text:Got it. ] Loc Msg Get (50) A1: Vibrate [ Time:200 ] A2: Perform Task [ Name:ApxLoc Return Value Variable:%loc ] A3: Variable Set [ Name:%key To:Loc-Msg, ] A4: Variable Set [ Name:%key To:%loc Append:On ] A6: HTTP Get [ Server:Port:bighugemap.com Path:/get Attributes:key=%key ] A7: If [ %HTTPD !Set ] A8: Say [ Text:I've got nothing. ] A9: Else A10: Say [ Text:%HTTPD ] A11: End If ApxLoc (54) A1: Get Location [ Source:GPS ] A2: Variable Split [ Name:%LOC Splitter:, ] A3: Variable Set [ Name:%lat To:floor(%LOC1 * 10000) / 10000 Do Maths:On ] A4: Variable Set [ Name:%lng To:floor(%LOC2 * 10000) / 10000 Do Maths:On ] A5: Variable Set [ Name:%APXLOC To:%lat,%lng ] A6: Return [ Value:%APXLOC ] Loc Msg App (57) A1: Show Scene [ Name:Msg Loc Display As:Dialog ]