columbus-trojan

January 14, 2016 ยท View on GitHub

This is the Android app for Columbus. It lives on users' Android phones and collects data every three minutes. Data is uploaded only on Wi-Fi.

The app collects the following data:

  • Image (front-facing camera)
  • 10-second sound clip (microphone)
  • Location (mobile triangulation)

The image and sound files are uploaded to an Amazon S3 bucket. When all of the above data has been collected, the app submits a JSON string to the backend server, similar to the following:

{
    "timestamp": 12345,
    "account_id": "abc@gmail.com",
    "location": {
        "lat": 200,
        "lon": 1
    },
    "audio_url": "abc@gmail.com/12345/audio.aac",
    "image_url": "abc@gmail.com/12345/image.jpg"
}

audio_url and image_url - S3 key to the media assets

The app will only use the network if the phone is connected to Wi-Fi. If there is no Wi-Fi connection at the time of data collection, the upload job will be queued for later until Wi-Fi is available.

Libraries used:

  • loopj HTTP library
  • Google GSON library
  • AWS Android SDK