Skip to content

LaszloLajosT/Udacity-Project-MusicalApp

Repository files navigation

MusicalApp

Version 1.0

Basic level

Project Overview

This project is a chance for you to combine and practice everything you learned so far in this section of the Nanodegree program. You will be making the structure of a music app using Intents, New Activities, Arraylists, Loops and Custom Classes.

The goal is to design and layout the flow for the structure of a Music Player app. Note that for this project, the app does not actually need to play music.

There are many music player apps, and they employ a wide variety of design choices. It will be your job to decide on the kind of structure that you would like your music app to have and build that structure using intents. Will you build an app to play music from the user’s library of music? Will you build an app to stream random songs from a database? Will you build a musical suggestion engine? Those choices are up to you!

Why this project?

In the last portion of the Nanodegree program, you learned how to think about the structure of an app and how to use OnClickListeners and explicit Intents to link between different activities within your own app. You also learned how to loop through an ArrayList to retrieve and display information to a ListView. Practicing these skills will drastically improve the quality of the apps you build down the road.

What will I learn?

This project is about combining various ideas and skills we’ve been practicing throughout the course. They include:

  • Designing an app experience to achieve a certain goal
  • Creating new activities
  • Using explicit Intents to link between activities in your app
  • Using OnClickListeners to add behavior to buttons using Java code.
  • Creating your own Custom Class
  • Looping through an ArrayList
  • Populating a ListView or GridView with an ArrayAdapter

Build Your Project

Remember - For this project, you won't need to implement the actual music playing functionality.

The goal of this project is to design and layout a music playing app that displays the list of available songs in a ListView or a GridView, navigates to a details screen of the currently playing song, and uses explicit intents to navigate around the app.

Data about each song should be stored in a custom class that is retrieved and displayed via a Loop and Adapter.

Getting Started

First, take a look at different kinds of music player apps on the market - check out the Play Music app, the Pandora Radio app, and the Spotify app to start with.

What type of user flow do you envision your app to have?

Design Planning

Once you've made a decision regarding the kind of app you would like to build, write out a couple of ways you could structure your app. Think about where a user will start and what the most common use cases of the app will be.

At minimum, your app should have 2 screens (a Main screen displaying the list of available songs using a list or grid & a Details screen of the currently playing song). There should be no more than 6 screens.

Some ideas for Activities would be:

  • "Now playing" screen

  • List artists, albums, playlists, or podcasts

  • Detail screen or screens for individual artists, albums, or podcasts

  • Store screen for buying music online

  • Search screen

If your app include buttons, use OnClickListener objects. Each activity should have a TextView that displays the purpose of the activity, as well as buttons that will let you navigate to other activities.

If you need help generating bitmaps for your project, refer back to the Generating Your Own Bitmaps concept.

The required components for this project are:

2 to 6 Activities that are linked via explicit intents A custom class storing information about each song. Each instance of the custom class must contain at least 2 states (e.g. Song Name, Artist Name). Images (e.g. Album Art) are not required but allowed.

A data structure, such as an ArrayList that would store Instances of the custom class. These instances should be retrieved and displayed in a ListView or GridView via an Adapter.

GitHub Logo

GitHub Logo

Releases

No releases published

Packages

No packages published

Languages