I'm working in the Django backend of an audio guide for tourism with mobile devices. Basically, the client (Phonegap app for Android and iOS) can follow a route over a map (Leaflet client) and see images or listen audio files in certain points of the route. Now, I want to provide offline service. So, the client can choose a route and download it, meaning download all the POIs, including images an audio files.

Of course, I can send the coordinates of the POIs in a json, or a gpx file. But what concerns me is the audio files and the images. Some random thoughts:

  • The devices can store the coordinates in SQLite, and the audio files and images in the SD card
  • Store the audio files and images as BLOBs in SQLite is not an option, because some files can be really big (like 100MB)
  • My first approach is to create a JSON with the coordinate points and the name of the files related with them, and compress it along with the mp3 and images. Then, send that zipped file to the clients. Sounds... gross.

Is there any recommended way to do this? Send geolocated audio and images, basically.

  • 100mb over wifi is okay you can resample the audio files (bit rate) to reduce file size. – Mapperz Oct 30 '13 at 18:49
  • geofencing might be of interest for your project en.wikipedia.org/wiki/Geo-fence – Mapperz Oct 30 '13 at 18:53
  • You can put 100MB of data into a SQLite blob – BradHards Oct 31 '13 at 5:05
  • Ok, probably the mobile devices can handle a 100MB file as SQLite blob. My problem, as the backend guy, is that I don't want a 'dirty' solution. Currently, I create a json with relative links to mp3 and imgs, and this json, along with them, is zipped and sent to the user. It works, but I don't like it. I was thinking about an elegant format to store and retrieve img/audio/video files to a mobile client (MBTiles sounds elegant, for example) – Jorge Arévalo Oct 31 '13 at 21:56

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.