Stage 2 of Popular Movies app required to complete Udacity Android Developer Nanodegree.
In addition to Stage 1, the Stage 2 project adds the following UI enhancements:
- Movie Details layout contains a section for displaying trailer videos and user reviews (screenshot 1)
- In the movies detail screen, a user can tap a button(for example, a star) to mark it as a Favorite (screenshot 2)
- When a trailer is selected, app uses an Intent to launch the trailer (screenshot 3)
- Tablet UI uses a Master-Detail layout implemented using fragments. The left fragment is for discovering movies. The right fragment displays the movie details view for the currently selected movie (screenshot 4)
Firebase is a cross-platform backend-as-a-service (BaaS). The popular movies (part 2) app has been extended to use several Firebase features such as Remote Config, Firebase Cloud Messaging, Analytics and Crash Reporting.
Firebase Analytics provides insight on app usage and how users are engaging with your app.
Crash Reporting is a nifty server-side tool that creates detailed reports of errors in your app. We'll use Firebase Crash Reportng to post custom log event whenever someone saves a movie as a Favorite.
Firebase remote config can be used for A/B testing. We'll use Remote Config to pull condition if we want to offer discount to users, if yes, we will also fetch the discount and show final price in Movie Details screen.
The app can receive push notifications from Firebase back-end. If the app is in background, the user sees an Android notification. However, if the app is currently running, the onMessageReceived() callback shall be triggered. See screenshots below. Note: FCM has a dependency on Google Play Services. In the MainActivity, we check for GPS support.
In order to run the app, you must create your own Movie DB API key. See here for more info. Once you have crated an API key, insert the same in stagetwo.util.Constants.java file.
public static final String MOVIE_DB_API_KEY = "YOUR_API_KEY";
This project demonstartes the use of following libraries:
- Retrofit- HTTP client library used for making network calls
- Butterknife- used for view injection
- Otto- an event bus
- Picasso- an image loading and caching library
- [Recycler View] (http://developer.android.com/training/material/lists-cards.html)- an advanced and flexible version of ListView
- [Recycler View Joiner] (https://github.com/j2esu/rv-joiner)- a library to join multiple Recycler Views
- [Stetho] (http://facebook.github.io/stetho/)- a debug bridge for Android applications
- [Firebase Cloud Messaging] (https://firebase.google.com/docs/cloud-messaging/)- a cross-platform client notification platform
If you've found an error in this project, please file an issue: