The Yfi Tops Project is a school practical project that aims to extend our skills on android app development and team work.
Table of Contents
Yfi Tops is a music player application for Android, written in Kotlin.
The music source (playlists and songs) is loaded from a remote server. We used Firestore to store music metadata and Firebase Storage to store media files.
Users can browse different thematic playlists and songs. Tapping on a song will play it through the use of ExoPlayer. The application supports background playback and notification management.
Here is a preview of the Yfi Tops music player app :
You'll need the following components to use the project, please install them beforehand :
- Java 11
- IDE of your choice, we used Android Studio, with Kotlin plugin and API level 32 installed.
Set up the Firebase media source, respecting the structure shown in section Firebase Data Structure.
- Clone the repo
git clone https://github.com/Alessandro-AP/Yfi-Tops.git
- Install dependencies with gradle.
- Add the Firebase API config file
google-services.json
into the./app folder
. - Connect your smartphone with Android Studio and run the application.
The general architecture of the application is shown below :
Our application consists of four main modules :
-
Jetpack compose : it constitutes the entire graphical interface of the application.
-
ViewModels : take care of updating the graphical interface dynamically when the livedata change. They are also used as an abstraction layer to communicate with the music service connector. In our case, our ViewModels use (wrap) the livedata contained in the firebase repository.
-
ExoPlayer: This module takes care of the media playback part, allowing our songs to be played, keeping playback in the background and offering a miniplayer in the notification bar. This component is divided into :
- Music Service Connector: provide other components/modules of the app all methods and variables to be able to manage the player.
- Music Service: takes care of initialising and preparing the multimedia playback.
- Callbacks: takes care of performing actions based on specific events.
- Converters: take care of converting our models into formats compatible and required by Exoplayer.
- Notification: takes care of managing the app in the notification.
-
Firebase: use to store our music playlists. Firebase Storage is used to save all audio files, album images and individual song images. While Firestore, which is a NoSQL database, contains all the metadata of the playlists/songs, such as the title, author, image and link to the audio file (contained in the Storage).
Below you can see the structure and description of the different folders of the Android project.
The image below shows how the data are organised into the Firestore.
Distributed under the MIT License. See LICENSE
for more information.
Alessandro Parrino - [email protected]
Daniel Sciarra - [email protected]
Wilfried Karel Ngueukam Djeuda - [email protected]