My general inspiration came from geo fencing applications. I wanted to expand upon the idea of using geo-fencing applications to download/transfer files. So, for example you walk into a doctors office and fill out some paperwork, what if you could automatically get a notification requesting you to download a form and fill it out when you enter the doctors office. Another example would be of a store running a promotion in a certain area, you would automatically be notified of the latest offers containing all the details. How about a TODO list of items that reminds you of certain groceries you have to buy when you are near that location. These and many other applications can take advantage of using geo-fencing paired with a file-transfer solution like SendAnywhere.
How it works
Start by downloading the APK (http://www.droidbin.com/p19t47r8jht0q4ibvhb1vc1174g3) and installing it on your Android phone. Start the service. Once the service is started, it will send location updates to a webservice. The webservice will respond back with a boolean status to indicate whether there are files available at this location. In the event, where no files were found, the Android service would no longer send updates from that location. If files are found, a notification will pop on your phone informing you about files available at this location. When you tap the notification, it will open your browser to a webapp from where you can see a map view with pins indicating file on a location. On tapping the file icon you will get more information on a pin pop-up, from here you can choose to download the file by tapping on the pop-up.
The admin interface is used by an user to associate file(s) with a location. The administrator webapp is available at: https://young-sierra-1628.herokuapp.com/map.html (alt link: http://geodoc-tricki.rhcloud.com/map.html). The webapp is basically a map view which uses the user's current location. The user can also choose to enter a address manually or just use their current location. Once the map is loaded you will notice pins on the map indicating different businesses. This is where a user can choose to associate a location with a file. On clicking the pin, a pin pop-up allows the user to associate a file with a particular location. Currently, the following file sources are supported:
- Local file path - this is local to where the web application is hosted.
- Direct download link to file - any file that is currently available on the web can be used here
- 3rd Party File Sharing service a. Dropbox Share share links b. Google Drive share links (only PDFs are currently supported)
Challenges I ran into
Integrations with different file sharing services.
Using an async webmethod and to keep connection alive for transferring files.
Accomplishments that I'm proud of
Web application + Android integration
Use of Redis
What I learned
Use of Async webmethods
Advanced Redis operations
What's next for GeoSendAnywhere
- Support more 3rd party file sharing services
- Ability to link files using OAuth from different providers.
- Archiving downloaded files on a server
- Time based file download - only triggered at specific times
- A location based TODO list that is triggered when you are at a specific place (eg grocery store, pharmacy etc)