My submission for the third project in the Google/Udacity "Associate Android Developer Fast Track" course.
Meets Specifications:
- App should display recipes from provided network resource.
- App should allow navigation between individual recipes and recipe recipeSteps.
- App uses RecyclerView and can handle recipe recipeSteps that include videos or images.
- App conforms to common standards found in the Android Nanodegree General Project Guidelines.
Meets Specifications:
- Application uses Master Detail Flow to display recipe recipeSteps and navigation between them.
- Application uses Exoplayer to display videos.
- Application properly initializes and releases video assets when appropriate.
- Application should properly retrieve media assets from the provided network links. It should properly handle network requests.
- Application makes use of Espresso to test aspects of the UI.
- Application sensibly utilizes a third-party library to enhance the app's features. That could be helper library to interface with ContentProviders if you choose to store the recipes, a UI binding library to avoid writing findViewById a bunch of times, or something similar.
Meets Specifications:
- Application has a companion homescreen widget.
- Widget displays ingredient list for desired recipe.
- Picasso - Image loading and caching library for Android
The JSON for the recipes contains URLs for videos illustrating some of the steps, but no links to photos, and no recipe descriptions. I would say that in "real life" no one who went to all the trouble to make multiple videos for each of their recipes would neglect the very basic steps of taking at least one photograph and writing a short blurb/tagline for each of the finished products, so to make this app look more like an actual product as well, I wrote some blurbs, and am using the following Flickr photos, which the photographers have made available for use under the Creative Commons license:
- For Nutella Pie: "I invented this", by Lee Davenport
- For Brownies: "Chocolate-Mint Brownies", by Theryn Fleming
- For Yellow Cake: "yellow cake", by Stuart Spivack
- For Cheesecake: "Cheesecake Supreme", by Emily Carlin
-
isNetworkAvailable() method for determining whether we have network and internet connections courtesy of https://guides.codepath.com/android/Sending-and-Managing-Network-Requests
-
Some code for properly releasing and initializing ExoPlayer in lifecycle events adapted from Google's ExoPlayer demo code
-
The card drawable used in the widget is based on https://gist.github.com/MarsVard/8297976