WorldOfYoutube is an Android app that displays the most popular youtube videos by region and category. It uses the Youtube Data API to retrieve to the most popular videos. The user selects the region in which the videos are from, the category that the videos pertain to and the number of videos to return. When a user selects a video, they can choose to watch in the youtube app on their device or elsewhere.
I've learned a lot about threading and in particular AsyncTask. For me, this was the most difficult part of the project. I also learned how to use and integrate an API into an Android app. This includes adding it the project's dependicies and acquiring the correct API key. In order to use the Youtube Data API, you need a Browser API key and not an Android API key. The latter is required in order to use the Android Player API. This took me hours find out. Afterwards, learning how to integrate the code availabe from the API into my project was also difficult. Since this application requires Internet access, a lot of the methods used were done in an AsyncTask method. Another important thing I learned by doing this project is basic project structure. I know that currently the project isn't structure professionally but it's a step in the right directions. Overall, this project was really fun to make and I have discovered a ton of new cat videos from Japan!
There are a lot of major improvements that can be done to this app. A major thing that this app is missing is appropriate exception handling. At the moment, there are a few instances in which the app crashes when it shouldn't. Also, it doesn't check if the device is connected to the Internet and whether the device has the Youtube app installed. In addition to exception handling, testing needs to be done. Test suites needs to created in order to make sure that the basic components of the app actually work. Another major component of the app that needs to get fixed is the GUI. Currently, the GUI is very primitive and doesn't use Google's Material Design. It also doesn't take into account screen size and thus will look really different across devices. In addition to the GUI, the UX of the app needs to get fixed. Lastly, the app needs a decent app icon as opposed to the default one.
Since I have been having difficulty removing my API KEY from this repository's commit history, I have revoked the API KEY and left them in this code. Thus, if you fork this repo, you'll have to create your own Youtube Data v3 API KEY.
Some of the code in this project is not mine such as the code required to download the thumbnail for the videos and SingleFragmentActivity.