Skip to content

Instantly share code, notes, and snippets.

@brimanning
Last active July 10, 2018 19:53
Show Gist options
  • Save brimanning/e760b846d778e94a45c6992b34985a26 to your computer and use it in GitHub Desktop.
Save brimanning/e760b846d778e94a45c6992b34985a26 to your computer and use it in GitHub Desktop.

EPIC (Earth Polychromatic Imaging Camera) Imagery

API Information

API interaction

  • Find available dates via the all endpoint. This returns a JSON array of objects containing date strings indicating the dates that have image data available. The date string is used in the URL of the next call.
  • Find images for a given date via the date endpoint. This returns a JSON array of objects. Each object has an identifier, a timestamp, and a filename fragment. You can use the timestamp and the filename fragment to derive the image URL.
  • Fetch the images for a given date via an archive URL.

App Specification

  • Day list (home screen):
    • A list that shows the dates with available data. Each row will show a date. On the left side of the row, there will be an indicator:
      • If no data is downloaded for that day, show an empty circle.
      • If data is being downloaded for that day, show a progress indicator.
      • If all data is downloaded for that day, show a checkmark.
    • Selecting a row takes you to the photo list.
  • Photo list:
    • A grid view of images for this day.
    • If an image has been downloaded, show a thumbnail of the image.
    • If the image is being downloaded, show a progress indicator similar to the one used above. A placeholder thumbnail should be shown.
    • Tapping the area of a downloaded image takes you to the photo screen.
    • In the toolbar menu at the top of the screen is a play icon. This button is disabled while this day’s downloads are in progress. Tapping this takes you to the player screen.
  • Photo screen
    • Show a downloaded photo scaled to fit the screen.
    • Allow the user to pinch to zoom, use one finger to pan the image.
    • Provide a menu icon on the toolbar to show metadata about the photo.
  • Player screen
    • Show an animated sequence of the images for the day. The animation should proceed at 24 frames per second.
    • Sliding one finger over the image should scrub forward or backward through the animation.
    • Allow the user to pinch to zoom, use two fingers to pan the image.

Skills

  • UI
    • Recycler view (ViewHolders and Adapters with both LinearLayoutManager and GridLayoutManager)
    • Animating a sequence of images
    • Controlling animation via touch gestures
  • Networking
    • Sequentially chained network calls
    • JSON parsing
    • File downloading
  • Data management
    • Image and metadata caching
  • Concurrency
    • Multiple downloads in parallel
    • Background processing of downloaded image data
    • Non-blocking UI shows data as it arrives
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment