Sunshine is the companion Android app for the Udacity course Developing Android Apps: Android Fundamentals as a part of the Android Developer Nanodegree program. Sunshine is a weather app that displays the weather prediction over the next 14 days. The app confirms to the Material design guidelines using Animations for transition between activities as well as separate layouts for landscape and portrait mode for both Tablets and Smartphones.
The app has a Place Picker in the Settings Page so that user doesn't have to manually type in their locations. The weather data is queried periodically for updates using a SyncAdapter that creates a dummy account to query the server periodically. The users are notified when there is new data available and the users can choose to turn off the notification from the Settings Page to discontinue receiving the alerts. The app supports Accessibility features extending its usability to handicapped people as well.
While fetching weather data, users are conveyed the accurate error using the Annotations library, in case there is one. Sunshine has its own widgets - one, showing the current day's weather and two, showing the entire list of weather data in a list and users can tap on the list to see the weather forecast of the particular day. Also, Sunshine loads custom live wallpapers for the device according to the current weather so that the user doesn't even need to visit Sunshine to know the current weather.
Sunshine takes care of Performance issues that the user might face by handling problems like Overdraw, to ensure a smooth User Experience. Also, the app has been setup for Google Cloud Messaging so that it doesn't have to periodically check for data change and rather be notified from the server when there's new data ready to be fetched ( The server side has not been built yet ); The libraries used in Sunshine are :