You are on page 1of 85

Minor Project Report

A Major Project Report

Submitted by

SUMIT SINGH ADHIKARI


16MCA8048

For the Partial Fulfillment of Requirement

Of
MASTERS OF COMPUTER APPLICATIONS
SESSION (2016-2018)

In
University Institute of Computing

At

CHANDIGARH UNIVERSITY
DECLARATION

I hereby declare that the project work entitled “EXPENSE


MANAGER”
submitted to the UIC DEPARTMENT OF CHANDIGARH
UNIVERSITY, is a record of an original work done by SUMIT
SINGH ADHIKARI under the guidance of Prof. NEERAJ KHANNA
assistant Prof. Of UIC department, Chandigarh University, and this
project work is submitted in the partial fulfillment of the requirements
for the award of the degree of Master of Computer application. The
results embodied in this report have not been submitted to any other
University or Institute for the award of any degree or diploma.

Submitted To: Submitted By:


MR. NEERAJ KHANNA, SUMIT SINGH ADHIKARI
AP, (UIC), 16MCA8048
Chandigarh University

I
ACKNOWLEDGEMENT

On the occasion of presenting this project report, we wish to


express our deep and profound feelings of gratitude to a number of
persons who have contributed to the completion of this project.
First of all we express our deep gratitude to Almighty, the
supreme guide, for bestowing his blessings upon us in our entire
endeavor.
We are extremely grateful to Asst. Prof. Neeraj Khanna
lecturer-in-charge of our project for his valuable guidance and
encouragement throughout our humble endeavor.

II
CERTIFICATE

This is to certify that the project entitled “EXPENSE MANAGER”


submitted by “16MCA8048” in partial fulfillment of the requirements
for the award of the Degree Master of Computer Applications are
bonafide record of the work carried out under our guidance and
supervision at University Institute of computing of the Chandigarh
University.

Prof NEERAJ KHANNA


AP, University Inst. of Computing
Chandigarh University

III
UNIVERSITY PROFILE

Chandigarh University (CU) is an Indian institute for higher education, known traditionally
for research and education in the fields of engineering, architecture, business management,
pharmacy, sciences, hotel management and tourism, animation and multimedia,. It has been
established under ‘The Chandigarh University Act’ and is recognized by UGC under section
2(f) of UGC Act 1956. Located in Greater Mohali, Punjab, CU is the largest university in the
vicinity of Chandigarh with more than 15, 000 students from all across India and 6 countries
around the world.

IV
INDEX
Sr. No TITLE Page
No
1. Introduction to android 1
2. Introduction of Project 18
3. Idea 19
4. Objective 19
5. Existing System 19
6. Project Scope 19

7. SDLC 20
8. Feasibility Study 33

9. Team Structure 37
10. Software requirement 38

11. Diagrams 40
12. Source Code 44
13. Enhancements 77
14. Conclusion 78
15. Bibliography 79
Introduction To Android

Android is an open source and Linux-based Operating System for mobile devices such as

smartphones and tablet computers. Android was developed by the Open Handset Alliance,

led by Google, and other companies. Android offers a unified approach to application

development for mobile devices which means developers need to develop only for Android,

and their applications should be able to run on different devices powered by Android. The

first beta version of the Android Software Development Kit (SDK) was released by Google in

2007, whereas the first commercial version, Android 1.0, was released in September 2008.

On June 27, 2012, at the Google I/O conference, Google announced the next Android

version, 4.1 Jelly Bean. Jelly Bean is an incremental update, with the primary aim of

improving the user interface, both in terms of functionality and performance. The source code

for Android is available under free and open source software licenses. Google publishes most

of the code under the Apache License version 2.0 and the rest, Linux kernel changes, under

the GNU General Public License version 2.

1
Why Android?

Features of Android

Android is a powerful operating system competing with Apple 4GS and supports great
features. Few of them are listed below −

Sr.No Feature & Description

1 Beautiful UI

Android OS basic screen provides a beautiful and intuitive user


interface.

2 Connectivity

GSM/EDGE, IDEN, CDMA, EV-DO, UMTS, Bluetooth, Wi-Fi, LTE, NFC and

2
WiMAX.

3 Storage

SQLite, a lightweight relational database, is used for data storage


purposes.

4 Media support

H.263, H.264, MPEG-4 SP, AMR, AMR-WB, AAC, HE-AAC, AAC 5.1, MP3,
MIDI, Ogg Vorbis, WAV, JPEG, PNG, GIF, and BMP.

5 Messaging

SMS and MMS

6
Web browser

Based on the open-source WebKit layout engine, coupled with Chrome's


V8 JavaScript engine supporting HTML5 and CSS3.

7 Multi-touch

Android has native support for multi-touch which was initially made
available in handsets such as the HTC Hero.

8 Multi-tasking

User can jump from one task to another and same time various
application can run simultaneously.

9 Resizable widgets

Widgets are resizable, so users can expand them to show more content
or shrink them to save space.

10 Multi-Language

Supports single direction and bi-directional text.

11 GCM

3
Google Cloud Messaging (GCM) is a service that lets developers send
short message data to their users on Android devices, without needing a
proprietary sync solution.

12 Wi-Fi Direct

A technology that lets apps discover and pair directly, over a high-
bandwidth peer-to-peer connection.

13 Android Beam

A popular NFC-based technology that lets users instantly share, just by


touching two NFC-enabled phones together.

Android Applications

Android applications are usually developed in the Java language using the Android Software
Development Kit.

Once developed, Android applications can be packaged easily and sold out either through a
store such as Google Play, SlideME, Opera Mobile Store, Mobango, F-droid and
the Amazon Appstore.

Android powers hundreds of millions of mobile devices in more than 190 countries around
the world. It's the largest installed base of any mobile platform and growing fast. Every day
more than 1 million new Android devices are activated worldwide.

This tutorial has been written with an aim to teach you how to develop and package Android
application. We will start from environment setup for Android application programming and
then drill down to look into various aspects of Android applications.

Categories of Android applications

There are many android applications in the market. The top categories are −

4
History of Android
The code names of android ranges from A to N currently, such as Aestro, Blender, Cupcake,
Donut, Eclair, Froyo, Gingerbread, Honeycomb, Ice Cream Sandwitch, Jelly Bean, KitKat,
Lollipop and Marshmallow. Let's understand the android history in a sequence.

What is API level?

API Level is an integer value that uniquely identifies the framework API revision offered by
a version of the Android platform.

5
Platform API VERSION_CODE
Version Level

Android 8.0 26 Oreo

Android 7.1 25 Nougat

Android 7.0 24 Nougat

Android 6.0 23 MARSHMALLOW

Android 5.1 22 LOLLIPOP_MR1

Android 5.0 21 LOLLIPOP

Android 4.4W 20 KITKAT_WATCH KitKat for


Wearables Only

Android 4.4 19 KITKAT

Android 4.3 18 JELLY_BEAN_MR2

Android 4.2, 4.2.2 17 JELLY_BEAN_MR1

Android 4.1, 4.1.1 16 JELLY_BEAN

Android 4.0.3, 15 ICE_CREAM_SANDWICH_MR1


4.0.4

Android 4.0, 14 ICE_CREAM_SANDWICH


4.0.1, 4.0.2

Android 3.2 13 HONEYCOMB_MR2

6
Android 3.1.x 12 HONEYCOMB_MR1

Android 3.0.x 11 HONEYCOMB

10 GINGERBREAD_MR1
Android 2.3.4

Android 2.3.3

Android 2.3.2 9 GINGERBREAD

Android 2.3.1

Android 2.3

Android 2.2.x 8 FROYO

Android 2.1.x 7 ECLAIR_MR1

Android 2.0.1 6 ECLAIR_0_1

Android 2.0 5 ECLAIR

Android 1.6 4 DONUT

Android 1.5 3 CUPCAKE

Android 1.1 2 BASE_1_1

Android 1.0 1 BASE

Android IDEs
There are so many sophisticated Technologies are available to develop android applications,
the familiar technologies, which are predominantly using tools as follows

 Android Studio
 Eclipse IDE(Deprecated)

Android – Architecture

Android operating system is a stack of software components which is roughly divided into
five sections and four main layers as shown below in the architecture diagram.

7
Linux kernel

At the bottom of the layers is Linux - Linux 3.6 with approximately 115 patches. This
provides a level of abstraction between the device hardware and it contains all the essential
hardware drivers like camera, keypad, display etc. Also, the kernel handles all the things that
Linux is really good at such as networking and a vast array of device drivers, which take the
pain out of interfacing to peripheral hardware.

Libraries
On top of Linux kernel there is a set of libraries including open-source Web browser engine
WebKit, well known library libc, SQLite database which is a useful repository for storage
and sharing of application data, libraries to play and record audio and video, SSL libraries
responsible for Internet security etc.

Android Libraries
This category encompasses those Java-based libraries that are specific to Android
development. Examples of libraries in this category include the application framework
libraries in addition to those that facilitate user interface building, graphics drawing and
database access. A summary of some key core Android libraries available to the Android
developer is as follows −

8
 android.app − Provides access to the application model and is the cornerstone of all
Android applications.
 android.content − Facilitates content access, publishing and messaging between
applications and application components.
 android.database − Used to access data published by content providers and includes
SQLite database management classes.
 android.opengl − A Java interface to the OpenGL ES 3D graphics rendering API.
 android.os − Provides applications with access to standard operating system services
including messages, system services and inter-process communication.
 android.text − Used to render and manipulate text on a device display.
 android.view − The fundamental building blocks of application user interfaces.
 android.widget − A rich collection of pre-built user interface components such as
buttons, labels, list views, layout managers, radio buttons etc.
 android.webkit − A set of classes intended to allow web-browsing capabilities to be
built into applications.

Having covered the Java-based core libraries in the Android runtime, it is now time to turn
our attention to the C/C++ based libraries contained in this layer of the Android software
stack.

Android Runtime
This is the third section of the architecture and available on the second layer from the
bottom. This section provides a key component called Dalvik Virtual Machine which is a
kind of Java Virtual Machine specially designed and optimized for Android.

The Dalvik VM makes use of Linux core features like memory management and multi-
threading, which is intrinsic in the Java language. The Dalvik VM enables every Android
application to run in its own process, with its own instance of the Dalvik virtual machine.

The Android runtime also provides a set of core libraries which enable Android application
developers to write Android applications using standard Java programming language.

Application Framework
The Application Framework layer provides many higher-level services to applications in the
form of Java classes. Application developers are allowed to make use of these services in
their applications.

The Android framework includes the following key services −

 Activity Manager − Controls all aspects of the application lifecycle and


activity stack.

9
 Content Providers − Allows applications to publish and share data with
other applications.
 Resource Manager − Provides access to non-code embedded resources
such as strings, color settings and user interface layouts.
 Notifications Manager − Allows applications to display alerts and
notifications to the user.
 View System − An extensible set of views used to create application user
interfaces.

Applications
You will find all the Android application at the top layer. You will write your application to
be installed on this layer only. Examples of such applications are Contacts Books, Browser,
Games etc.

Android - Application Components


Application components are the essential building blocks of an Android application. These
components are loosely coupled by the application manifest file AndroidManifest.xml that
describes each component of the application and how they interact.

There are following four main components that can be used within an Android application −

Sr.No Components & Description

Activities
1
They dictate the UI and handle the user interaction to the smart phone
screen.

Services
2
They handle background processing associated with an application.

Broadcast Receivers
3
They handle communication between Android OS and applications.

Content Providers
4
They handle data and database management issues.

10
Activities
An activity represents a single screen with a user interface,in-short Activity performs actions
on the screen. For example, an email application might have one activity that shows a list of
new emails, another activity to compose an email, and another activity for reading emails. If
an application has more than one activity, then one of them should be marked as the activity
that is presented when the application is launched.

An activity is implemented as a subclass of Activity class as follows −

public class MainActivity extends Activity {

Services
A service is a component that runs in the background to perform long-running operations.
For example, a service might play music in the background while the user is in a different
application, or it might fetch data over the network without blocking user interaction with an
activity.

A service is implemented as a subclass of Service class as follows −

public class MyService extends Service {

Broadcast Receivers
Broadcast Receivers simply respond to broadcast messages from other applications or from
the system. For example, applications can also initiate broadcasts to let other applications
know that some data has been downloaded to the device and is available for them to use, so
this is broadcast receiver who will intercept this communication and will initiate appropriate
action.

A broadcast receiver is implemented as a subclass of BroadcastReceiverclass and each


message is broadcaster as an Intent object.

public class MyReceiver extends BroadcastReceiver {

public void onReceive(context,intent){}

Content Providers
A content provider component supplies data from one application to others on request. Such
requests are handled by the methods of the ContentResolverclass. The data may be stored in
the file system, the database or somewhere else entirely.

11
A content provider is implemented as a subclass of ContentProvider class and must
implement a standard set of APIs that enable other applications to perform transactions.

public class MyContentProvider extends ContentProvider {

public void onCreate(){}

We will go through these tags in detail while covering application components in individual
chapters.

Additional Components
There are additional components which will be used in the construction of above mentioned
entities, their logic, and wiring between them. These components are −

S.No Components & Description

Fragments
1
Represents a portion of user interface in an Activity.

Views
2
UI elements that are drawn on-screen including buttons, lists forms etc.

Layouts
3
View hierarchies that control screen format and appearance of the views.

Intents
4
Messages wiring components together.

Resources
5
External elements, such as strings, constants and drawable pictures.

Manifest
6
Configuration file for the application.

12
Sr.No Folder, File & Description
.

Java

1 This contains the .java source files for your project. By default, it
includes an MainActivity.java source file having an activity class that
runs when your app is launched using the app icon.

res/drawable-hdpi

2 This is a directory for drawable objects that are designed for high-
density screens.

res/layout
3
This is a directory for files that define your app's user interface.

res/values

4 This is a directory for other various XML files that contain a collection of
resources, such as strings and colours definitions.

AndroidManifest.xml

5 This is the manifest file which describes the fundamental characteristics


of the app and defines each of its components.

Build.gradle

This is an auto generated file which contains compileSdkVersion,


6
buildToolsVersion, applicationId, minSdkVersion, targetSdkVersion,
versionCode and versionName

Following section will give a brief overview of the important application files.

The Main Activity File


The main activity code is a Java file MainActivity.java. This is the actual application file
which ultimately gets converted to a Dalvik executable and runs your application. Following
is the default code generated by the application wizard for Hello World! application −

package com.example.helloworld;

13
import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

public class MainActivity extends AppCompatActivity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

Here, R.layout.activity_main refers to the activity_main.xml file located in


the res/layout folder. The onCreate() method is one of many methods that are figured when
an activity is loaded.

The Manifest File


Whatever component you develop as a part of your application, you must declare all its
components in a manifest.xml which resides at the root of the application project directory.
This file works as an interface between Android OS and your application, so if you do not
declare your component in this file, then it will not be considered by the OS. For example, a
default manifest file will look like as following file −

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

package="com.example.tutorialspoint7.myapplication">

<application

android:allowBackup="true"

android:icon="@mipmap/ic_launcher"

android:label="@string/app_name"

android:supportsRtl="true"

android:theme="@style/AppTheme">

14
<activity android:name=".MainActivity">

<intent-filter>

<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />

</intent-filter>

</activity>

</application>

</manifest>

Here <application>...</application> tags enclosed the components related to the application.


Attribute android:icon will point to the application icon available under res/drawable-hdpi.
The application uses the image named ic_launcher.png located in the drawable folders

The <activity> tag is used to specify an activity and android:name attribute specifies the
fully qualified class name of the Activity subclass and the android:label attributes specifies a
string to use as the label for the activity. You can specify multiple activities using <activity>
tags.

The action for the intent filter is named android.intent.action.MAIN to indicate that this
activity serves as the entry point for the application. The categoryfor the intent-filter is
named android.intent.category.LAUNCHER to indicate that the application can be launched
from the device's launcher icon.

The @string refers to the strings.xml file explained below. Hence, @string/app_name refers
to the app_name string defined in the strings.xml file, which is "HelloWorld". Similar way,
other strings get populated in the application.

Following is the list of tags which you will use in your manifest file to specify different
Android application components −

<activity>elements for activities

<service> elements for services

<receiver> elements for broadcast receivers

<provider> elements for content providers

The Strings File


The strings.xml file is located in the res/values folder and it contains all the text that your
application uses. For example, the names of buttons, labels, default text, and similar types of
15
strings go into this file. This file is responsible for their textual content. For example, a
default strings file will look like as following file −

<resources>

<string name="app_name">HelloWorld</string>

<string name="hello_world">Hello world!</string>

<string name="menu_settings">Settings</string>

<string name="title_activity_main">MainActivity</string>

</resources>

The Layout File


The activity_main.xml is a layout file available in res/layout directory, that is referenced by
your application when building its interface. You will modify this file very frequently to
change the layout of your application. For your "Hello World!" application, this file will
have following content related to default layout −

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent" >

<TextView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_centerHorizontal="true"

android:layout_centerVertical="true"

android:padding="@dimen/padding_medium"

android:text="@string/hello_world"

tools:context=".MainActivity" />

</RelativeLayout>

This is an example of simple RelativeLayout which we will study in a separate chapter.


The TextView is an Android control used to build the GUI and it have various attributes

16
like android:layout_width, android:layout_height etc which are being used to set its width
and height etc.. The @string refers to the strings.xml file located in the res/values folder.
Hence, @string/hello world refers to the hello string defined in the strings.xml file, which is
"Hello World!".

17
Introduction Of Project

Android is the world’s most popular operating system for mobile devices and tablets. It is an

open source operating system, created by Google, and available to all kinds of developers

with various expertise levels, ranging from rookie to professional. Building a simple audio

player with basic controls like play, pause, forward, backward, next, previous, playlist is done

since long. This app basically will read all audio files (.mp3) from SD card and plays selected

song.

Our project named as SG Player,In this application you will find the interactive GUI , this is

to design and implement user friendly, platform independent music player which can play

most of the audio files like MP3, WAV.

It has an ability to fetch the song lyrics and shows the lyrics of any songs which is playing at

your Device with the help of Database to fetch the lyrics from the third-party API. There are

two modules - Static and Dynamic.

In a static music user can listen from the SD card. Memory card in a store the song. And in a

dynamic module user can also listen the song as well as get the lyrics using internet (Third

Party API) in one application. In a both functionality to use in the application.

18
Idea

The aim of this project is to provide a platform where a user can Listen different type of

music. And provides you a Lyrics Enabled song player where you find the lyrics of the

current song which is playing.

Objective

1. Main objective of the proposed project is to put all possible thing to one Player.

2. The objective is to make use of android OS with more public interest and make it more

user friendly so all can use it.

Existing System
In a existing system that user we can play store the song from SD card. In a main application

to the functionality by user can listen song as well as watch lyrics of the Song which is

currently playing.

Project Scope

Vision
To create a player application describes

• working of music player,

• Working of Database,

• To make a interactive UI to the user.

Mission

To effectively enforce the Knowledge and improve the programming skills to understand the

concept of Android.

19
SOFTWARE DEVELOPMENT LIFE CYCLE

SOFTWARE DEVELOPMENT LIFE CYCLE PROCESS

The systems development life cycle (SDLC), also referred to as the application development

life-cycle, is a term used in systems engineering, information systems and software

engineering to describe a process for planning, creating, testing, and deploying an

information system. The systems development life-cycle concept applies to a range of

hardware and software configurations, as a system can be composed of hardware only,

software only, or a combination of both.

A systems development life cycle is composed of a number of clearly defined and distinct

work phases which are used by systems engineers and systems developers to plan for, design,

build, test, and deliver information systems. The systems development life cycle (SDLC), also

referred to as the application development life-cycle, is a term used in systems engineering, information

systems and software engineering to describe a process for planning, creating, testing, and deploying an

information system.[1] The systems development life-cycle concept applies to a range of hardware and

software configurations, as a system can be composed of hardware only, software only, or a combination

of both.[2] Like anything that is manufactured on an assembly line, an SDLC aims to produce

high quality systems that meet or exceed customer expectations, based on customer

requirements, by delivering systems which move through each clearly defined phase, within

scheduled time-frames and cost estimates. Computer systems are complex and often

(especially with the recent rise of service-oriented architecture) link multiple traditional

systems potentially supplied by different software vendors. To manage this level of

complexity, a number of SDLC models or methodologies have been created, such as

"waterfall"; "spiral"; "Agile software development"; "rapid prototyping"; "incremental"; and

"synchronize and stabilize.

20
SDLC can be described along a spectrum of agile to iterative to sequential. Agile
methodologies, such as XP and Scrum, focus on lightweight processes which allow for rapid
changes (without necessarily following the pattern of SDLC approach) along the
development cycle. Iterative methodologies, such as Rational Unified Process and dynamic
systems development method, focus on limited project scope and expanding or improving
products by multiple iterations. Sequential or big-design-up-front (BDUF) models, such as
waterfall, focus on complete and correct planning to guide large projects and risks to
successful and predictable results[citation needed]. Other models, such as anamorphic development,
tend to focus on a form of development that is guided by project scope and adaptive iterations
of feature development.
In project management a project can be defined both with a project life cycle (PLC) and an
SDLC, during which slightly different activities occur. According to Taylor (2004) "the
project life cycle encompasses all the activities of the project, while the systems development
life cycle focuses on realizing the product requirements".[5]
SDLC is used during the development of an IT project, it describes the different stages
involved in the project from the drawing board, through the completion of the project.

History
The product life cycle describes the process for building information systems in a very
deliberate, structured and methodical way, reiterating each stage of the product's life. The
systems development life cycle, according to Elliott & Strachan & Radford (2004),
"originated in the 1960s, to develop large scale functional business systems in an age of large
scale business conglomerates. Information systems activities revolved around heavy data
processing and number crunching routines".[6]
Several systems development frameworks have been partly based on SDLC, such as
the structured systems analysis and design method (SSADM) produced for the UK
government Office of Government Commerce in the 1980s. Ever since, according to Elliott
(2004), "the traditional life cycle approaches to systems development have been increasingly
replaced with alternative approaches and frameworks, which attempted to overcome some of
the inherent deficiencies of the traditional SDLC".[6]
The system development life cycle framework provides a sequence of activities for system
designers and developers to follow. It consists of a set of steps or phases in which each phase
of the SDLC uses the results of the previous one.
The SDLC adheres to important phases that are essential for developers, such
as planning, analysis, design, and implementation, and are explained in the section below. It
includes evaluation of present system, information gathering, and feasibility study and
request approval. A number of SDLC models have been created: waterfall, fountain, and
spiral build and fix, rapid prototyping, incremental, and synchronize and stabilize. The oldest
of these, and the best known, is the waterfall model: a sequence of stages in which the output

21
of each stage becomes the input for the next. These stages can be characterized and divided
up in different ways, including the following:

Preliminary analysis:

The objective of phase 1 is to conduct a preliminary analysis, propose alternative solutions,


describe costs and benefits and submit a preliminary plan with recommendations.
Conduct the preliminary analysis: in this step, you need to find out the organization's
objectives and the nature and scope of the problem under study. Even if a problem refers only
to a small segment of the organization itself then you need to find out what the objectives of
the organization itself are. Then you need to see how the problem being studied fits in with
them.
Propose alternative solutions: In digging into the organization's objectives and specific
problems, you may have already covered some solutions. Alternate proposals may come from
interviewing employees, clients, suppliers, and/or consultants. You can also study what
competitors are doing. With this data, you will have three choices: leave the system as is,
improve it, or develop a new system.
Describe the costs and benefits.

Systems analysis, requirements definition: Defines project goals into defined


functions and operation of the intended application. It is the process of gathering and
interpreting facts, diagnosing problems and recommending improvements to the system.
Analyzes end-user information needs and also removes any inconsistencies and
incompleteness in these requirements.
A series of steps followed by the developer are:

1. Collection of Facts: End user requirements are obtained through documentation, client
interviews, observation and questionnaires,

Scrutiny of the existing system: Identify pros and cons of the current system in-place, so as to
carry forward the pros and avoid the cons in the new system.

Analyzing the proposed system: Solutions to the shortcomings in step two are found and any
specific user proposals are used to prepare the specifications.

Systems design: Describes desired features and operations in detail, including screen
layouts, business rules, process diagrams, pseudo code and other documentation.

Development: The real code is written here.

Integration and testing: Brings all the pieces together into a special testing environment,
then checks for errors, bugs and interoperability.

22
Acceptance, installation, deployment: The final stage of initial development, where
the software is put into production and runs actual business.

Maintenance:

During the maintenance stage of the SDLC, the system is assessed to ensure it does not
become obsolete. This is also where changes are made to initial software. It involves
continuous evaluation of the system in terms of its performance.

Evaluation:

Some companies do not view this as an official stage of the SDLC, while others consider it to
be an extension of the maintenance stage, and may be referred to in some circles as post-
implementation review. This is where the system that was developed, as well as the entire
process, is evaluated. Some of the questions that need to be answered include: does the newly
implemented system meet the initial business requirements and objectives? Is the system
reliable and fault-tolerant? Does the system function according to the approved functional
requirements? In addition to evaluating the software that was released, it is important to
assess the effectiveness of the development process. If there are any aspects of the entire
process, or certain stages, that management is not satisfied with, this is the time to improve.
Evaluation and assessment is a difficult issue. However, the company must reflect on the
process and address weaknesses.

Disposal:

In this phase, plans are developed for discarding system information, hardware and software
in making the transition to a new system. The purpose here is to properly move, archive,
discard or destroy information, hardware and software that is being replaced, in a manner that
prevents any possibility of unauthorized disclosure of sensitive data. The disposal activities
ensure proper migration to a new system. Particular emphasis is given to proper preservation
and archival of data processed by the previous system. All of this should be done in
accordance with the organization's security requirements.
In the following example (see picture) these stages of the systems development life cycle are
divided in ten steps from definition to creation and modification of IT work products:

23
REQUIREMENT ANALYSIS

Requirements analysis in systems engineering and software engineering, encompasses those


tasks that go into determining the needs or conditions to meet for a new or altered product,
taking account of the possibly conflicting requirements of the various stakeholders,
analyzing, documenting, validating and managing software or system requirements.

Requirements analysis is critical to the success of a systems or software project. The


requirements should be documented, actionable, measurable, testable, traceable, related to
identified business needs or opportunities, and defined to a level of detail sufficient for
system design.

Requirements analysis involves frequent communication with system users to determine


specific feature expectations, resolution of conflict or ambiguity in requirements as demanded
by the various users or groups of users, avoidance of feature creep and documentation of all
aspects of the project development process from start to finish. Energy should be directed
towards ensuring that the final system or product conforms to client needs rather than
attempting to mold user expectations to fit the requirements.

Requirements analysis is a team effort that demands a combination of hardware, software


and human factors engineering expertise as well as skills in dealing with people.

Training, experience and common sense are required for collection of the information needed
to do the analysis. The environment in which analysis is carried out plays an important role
that is how the system analyst deals with the user requirements or demands. With the
corporation of our team and satisfaction of the user analysis part can be successfully taken. In
analysis, we design the system logically that is how the system will look like, after the
analysis part we move from logical system to physical system that is how actually the system
will be. So after analysis that is logical there is a physical part called design that is very
important stage in system development life cycle.

Once analysis is completed, the analyst has a firm understanding of what is to be done. The
next step is to decide how the problem might be solved. Thus, in system design, we move
from the logical to the physical aspects of the life cycle.

O2I's team of software development experts, technical writers and business analysts come
together and astutely analyze your requirements to help you develop an application. We can
develop a detailed requirement document which you can use to get quotes for the project or
pass on to a development team.

24
O2I has extensive software development expertise, so we understand the optimum level of
detail required to move software requirement specification to the development phase. We
have experience working across a wide range of projects, both large and small across various
verticals and industries. We have on our team professionals with expert business analysis
skills and experienced Technical writers.

Requirement analysis is very expensive, requiring huge investments in scarce resources,


systems and associated processes. Outsource2india has over 13 years of experience working
on software projects of varying scopes. We understand the nuances of capturing and scoping
software requirements, and the importance it carries in a software development lifecycle.
O2I's core team of Business Analysts has worked with clients across the globe to effectively
infer requirements leading to successful products and services.

Need of Requirements Analysis for Business


It has been determined that one of the primary reasons why software projects fail is because
requirements of the project were not captured properly. Current software applications often
operate over multiple platforms and across many locations around the globe. Often during the
project lifecycle the demands keep varying and this can also have an impact in eliciting
proper requirements.

Requirement analysis covers those tasks to determine the needs of a proposed software
solution or product, often involving requirements of various stakeholders associated with the
solution. Requirement analysis is a key component in the software development lifecycle and
is usually the initial step before the project commences.

Outsource2india's Software Requirement Analysis Process


Based on the scope and nature of a particular software project, requirement analysis is carried
out by an independent business analyst or a team of analysts to capture requirements.
Typically requirements analysis involves capturing both functional and non-functional
requirements and requires both technical and business expertise.

To ensure effective capturing of requirement we follow a holistic process involving these


broad steps:

1. Requirements Scope
The scope and boundary of the proposed software solution is drawn based on business
requirements and goals.

25
2. Stakeholder Identification
Identifying stakeholders such as customers, end-users, system administrators etc. is the next
step in requirements analysis. This is one of the most important steps in the whole process as
proper identification of stakeholders enables the business analyst to draw a road map for
gathering requirements.

3. Requirements Elicitation / Requirements Gathering


Post identification of stakeholders, the tedious process of eliciting requirements follows.
Based on the scope and nature of a particular software solution there can be multiple
stakeholders. Interaction happens with stakeholder groups using various communication
methodologies including in-person interviews, focus groups, market study, surveys and
secondary research.

4. Requirement Analysis
Once user data is gathered, structured analysis is carried out on this data to determine models.
Usually use-cases are developed to analyze the data on various parameters depending on the
larger goals of the software solution. We use requirements animation, automated reasoning,
knowledge-based critiquing, consistency checking, analogical and case-based reasoning.

5. Software Requirement Specification (SRS)


Once the captured data is analyzed these are put together in the form of a software
requirement specification document (SRS) or a system requirement specification (SYRS)
document. This document serves as a blueprint for the design or development teams to start
building the solution on. It serves as a technical compendium of all the stakeholders' needs
including user requirements, system requirements, user interface and operational
requirements.

6. Software Requirements Management


The final step of the requirements analysis process involves validating all elements of the
requirements specifications document. Errors are corrected here and it can also accommodate
minor changes to requirements of the proposed software solution.

26
Problem Analysis
Analysis is detailed study of various operation performed by the system and their relationship

within and outside the system. Outside factor also plays major role in the system like

government, vendors, customers etc. A key question is what must be done to solve the

problem? One aspect of the analysis is defining the boundaries of the system and

determining whether or not a candidate system should consider other related systems.

During analysis, data are collected on available files, decision points and transaction handled

by the present system. There are many tools, which are available to do the analysis part like

interview, quiz

The environment in which analysis is carried out plays an important role that is how the

system analyst deals with the interviewing staff. With the corporation and satisfaction of the

user staff analysis part can be successfully taken. In analysis, we design the system logically

that is how the system will look like, after the analysis part we move from logical system to

physical system that is how actually the system will be. So after analysis that is logical there

is a physical part called design that is very important stage in system development life cycle.

Although your organization may have chosen to tackle a seemingly insurmountable problem,
the process you will use to solve it is not complex. It does, however, take time, both to
formulate and to fully analyze the problem. Most people underestimate the work they need to
do here and the time they'll need to spend. But this is the legwork, the foundation on which
you'll lay effective solutions. This isn't the time to take shortcuts.

Three basic concepts make up the core of this chapter: clarifying, deciding, and analyzing.
Let's look at each in turn.

CLARIFYING THE PROBLEM

If you are having a problem-solving meeting, then you already understand that something
isn't quite right - or maybe it's bigger than that; you understand that something is very, very
wrong. This is your beginning, and of course, it makes most sense to...

Start with what you know. When group members walk through the door at the beginning of
the meeting, what do they think about the situation? There are a variety of different ways to
garner this information. People can be asked in advance to write down what they know about
27
the problem. Or the facilitator can lead a brainstorming session to try to bring out the greatest
number of ideas. Remember that a good facilitator will draw out everyone's opinions, not
only those of the more vocal participants.

Decide what information is missing. Information is the key to effective decision making. If
you are fighting child hunger, do you know which children are hungry? When are they
hungry - all the time, or especially at the end of the month, when the money has run out? If
that's the case, your problem statement might be, "Children in our community are often
hungry at the end of the month because their parents' pay checks are used up too early."

Compare this problem statement on child hunger to the one given in "The nature of
problems" above. How might solutions for the two problems be different?

Gather information on the problem. You might collect any of several types of
information available. Most commonly, what you hear or read will fall into one of the
following categories:

Facts (15% of the children in our community don't get enough to eat.)

Inference (A significant percentage of children in our community are probably


malnourished/significantly underweight.)

Speculation (Many of the hungry children probably live in the poorer neighbourhoods in
town.)

Opinion (I think the reason children go hungry is because their parents spend all of their
money on cigarettes.)

When you are gathering information, you will probably hear all four types of information,
and all can be important. Speculation and opinion can be especially important in gauging
public opinion. If public opinion on your issue is based on faulty assumptions, part of your
solution strategy will probably include some sort of informational campaign.

For example, perhaps your coalition is campaigning against the death penalty, and you find
that most people incorrectly believe that the death penalty deters violent crime. As part of
your campaign, therefore, you will probably want to make it clear to the public that it simply
isn't true.

Where and how do you find this information? It depends on what you want to know. You can
review surveys, interviews, the library and the internet.

28
Define the problem. With the information in front of you, you're ready to write down a
"problem statement" - a comprehensive definition of the problem. Before you do, remember
two general principles:

Define the problem in terms of needs, and not solutions. If you define the problem in terms of
possible solutions, you're closing the door to other, possibly more effective solutions.
"Violent crime in our neighbourhood is unacceptably high," offers space for many more
possible solutions than, "We need more police patrols," or, "More citizens should have guns
to protect themselves."

Define the problem as one everyone shares; avoid assigning blame for the problem. This is
particularly important if different people (or groups) with a history of bad relations need to be
working together to solve the problem. Teachers may be frustrated with high truancy rates,
but blaming students uniquely for problems at school is sure to alienate students from helping
to solve the problem.

You can define the problem in several ways; the facilitator can write a problem statement on
the board, and everyone can give feedback on it, until the statement has developed into
something everyone is pleased with, or you can accept someone else's definition of the
problem, or use it as a starting point, modifying it to fit your needs.

After you have defined the problem, ask if everyone understands the terminology being used.
Define the key terms of your problem statement, even if you think everyone understands
them.

System Analysis
The term system refers to an orderly grouping of interdependent components linked together
according to a plan to achieve a specific objective. The idea of system becomes most
practical and necessary in conceptualizing the interrelationship and integration of operations
especially when using computers. Thus, a system is a way of thinking of organizations and
their problems. It involves a set of techniques that helps in solving the problems. A system
has many elements these are input and output processors, control, feedback, environment,
boundary and interface. System takes input from outside and gives output to outside. So
practically system is an open system that interacts with the environment. The development of
a computer-based information system includes a systems analysis phase. This helps produce
the data model, a precursor to creating or enhancing a database (see Christopher J. Date "An
Introduction to Database Systems"). There are a number of different approaches to system
analysis. When a computer-based information system is developed, systems analysis
(according to the Waterfall model) would constitute the following steps:

 The development of a feasibility study: determining whether a project is economically,


socially, technologically and organizationally feasible
29
 Fact-finding measures, designed to ascertain the requirements of the system's end-users
(typically involving interviews, questionnaires, or visual observations of work on the
existing system)
 Gauging how the end-users would operate the system (in terms of general experience in
using computer hardware or software), what the system would be used for and so on
Another view outlines a phased approach to the process. This approach breaks systems
analysis into 5 phases:

 Scope Definition: denoting an instrument for observing, viewing, or examining


 Problem analysis: analyzing the problem that arises
 Requirements analysis: determining the conditions that need to be met
 Logical design: looking at the logical relationship among the objects
 Decision analysis: making a final decision
Use cases are widely used systems analysis modeling tools for identifying and expressing the
functional requirements of a system. Each use case is a business scenario or event for which
the system must provide a defined response. Use cases evolved from object-oriented analysis.
Although they may be familiar with a variety of programming languages, operating systems,
and computer hardware platforms, they do not normally involve themselves in the actual
hardware or software development. They may be responsible for developing cost analysis,
design considerations, staff impact amelioration, and implementation timelines.
A systems analyst is typically confined to an assigned or given system and will often work in
conjunction with a business analyst. These roles, although having some overlap, are not the
same. A business analyst will evaluate the business need and identify the appropriate solution
and, to some degree, design a solution without diving too deep into its technical components,
relying instead on a systems analyst to do so. A systems analyst will often evaluate code,
review scripting and, possibly, even modify such to some extent.
Some dedicated professionals possess practical knowledge in both areas (business and
systems analysis) and manage to successfully combine both of these occupations, effectively
blending the line between business analyst and systems analyst.

Roles
A systems analyst may:

 Identify, understand and plan for organizational and human impacts of planned systems,
and ensure that new technical requirements are properly integrated with existing
processes and skill sets.
 Plan a system flow from the ground up.

30
 Interact with internal users and customers to learn and document requirements that are
then used to produce business requirements documents.
 Write technical requirements from a critical phase.
 Interact with designers to understand software limitations.
 Help programmers during system development, e.g. provide use cases, flowcharts or
even database design.
 Perform system testing.
 Deploy the completed system.
 Document requirements or contribute to user manuals.
 Whenever a development process is conducted, the system analyst is responsible for
designing components and providing that information to the developer.

System analysis further consist of following steps

 SYSTEM STUDY AND PROBLEM DEFINITION.

 SYSTEM DESIGN AND PROGRAMMING

 IMPLEMENTATION AND DOCUMENTATIO

 Initial Investigation

INITIAL INVESTIGATION

 This is the first step in system development life cycle. For making a project, it is very

important to understand the overall working of the system. To know about the overall

working of the system initial investigation is carried out. Initial investigation helps to

identify the need.

INFORMATION GATHERING

31
After defining the problem, the next step in the system analysis is to gather information.

Information gathering is an art and science. The approach and manner in which information

is gathered require persons with sensitivity, commonsense and knowledge of what and when

to gather and what channels to use in securing information. This means that information

getting is neither easy nor routine. Much preparation, experience and training are required.

Before one determines where to go for information or what tool to use, the first requirement

is to figure out what information to gather. The approach and the manner in which the

information is gathered require a person with sensitivity, skill and common sense of the

following: -

Purpose of gathering information

There are three main purposes of gathering information

 We get familiar with the News Agency and the present system through available pro-

cedure manuals, officials documents and by knowing the flow of information.

 Knowing how information is to be accessed from the system and subsequently mak-

ing the access system simple and easy to use.

Kind of information needed

Before one determines where to go and what tool to use, first requirement is to figure out

what information to gather. The basic information required is how organization of personnel

or official contacts as well as appointment takes place.

Sources of information

 Information is gathered from two main sources namely personal and written docu-

ments within the internet who are using social network.

32
 Two main sources of information are: -

 External sources

 Internal sources.

Feasibility Study

The feasibility of the system can be judged according to its workability impact on the

organization, ability to meet user needs and the effective use of resources. One should keep in

mind the need of the user and how does a candidate system meet it.

A feasibility study aims to objectively and rationally uncover the strengths and weaknesses of

an existing business or proposed venture, opportunities and threats present in

the environment, the resources required to carry through, and ultimately the prospects for

success. In its simplest terms, the two criteria to judge feasibility are cost required and value

to be attained.

A well-designed feasibility study should provide a historical background of the business or


project, a description of the product or service, accounting statements, details of
the operations and management, marketing research and policies, financial data, legal
requirements and tax obligations.[1] Generally, feasibility studies precede technical
development andproject implementation.
A feasibility study evaluates the project's potential for success; therefore, perceived
objectivity is an important factor in the credibility of the study for potential investors and
lending institutions.[citation needed][4][5] It must therefore be conducted with an objective,
unbiased approach to provide information upon which decisions can be based.[citation
needed]

Technical Feasibility

This Information System for Project Online conference serves the requirement of the
organization and is very much technically feasible. We have technical guarantee and
reliability as it has been tested by different programmers. This project can be run on

33
computers having 6GB RAM having Windows installed on it. It is easy to use even by the
persons with little knowledge of computers.
This assessment is based on an outline design of system requirements, to determine whether
the company has the technical expertise to handle completion of the project. When writing a
feasibility report, the following should be taken to consideration:

 A brief description of the business to assess more possible factors which could affect the
study
 The part of the business being examined
 The human and economic factor
 The possible solutions to the problem
At this level, the concern is whether the proposal is both technically and legally feasible
(assuming moderate cost).
The technical feasibility assessment is focused on gaining an understanding of the present
technical resources of the organization and their applicability to the expected needs of the
proposed system. It is an evaluation of the hardware and software and how it meets the need
of the proposed system

Economic Feasibility

This system is economically feasible also as the cost of making the project is very low as
installation of ANDROID STUDIO is free and can be installed on any system. Cost in
developing the software is very low, as compared to the money spent on the existing system.
Also the money spent can be recovered only in just the duration of six months. This project
can be run on 4 GB RAM.
Operational Feasibility

The client’s requirement is also taken into consideration then the system is designed.
Operational feasibility of Information System for Project Real Estate is satisfied as the
running of this system satisfies the user and the client is also satisfied by the economic and
technical feasibility. When it will be used by the employees, no special administration, no
special training is required. Operational feasibility is a measure of how well a proposed
system solves the problems, and takes advantage of the opportunities identified during scope
definition and how it satisfies the requirements identified in the requirements analysis phase
of system development.[7]
The operational feasibility assessment focuses on the degree to which the proposed
development projects fits in with the existing business environment and objectives with

34
regard to development schedule, delivery date, corporate culture, and existing business
processes.
To ensure success, desired operational outcomes must be imparted during design and
development. These include such design-dependent parameters such as reliability,
maintainability, supportability, usability, reducibility, disposability, sustainability,
affordability and others. These parameters are required to be considered at the early stages of
design if desired operational behaviors are to be realized. A system design and development
requires appropriate and timely application of engineering and management efforts to meet
the previously mentioned parameters. A system may serve its intended purpose most
effectively when its technical and operating characteristics are engineered into the design.
Therefore, operational feasibility is a critical aspect of systems engineering that needs to be
an integral part of the early design phases.

Team Structure: -

Often a team of people is assigned a project. For team to work as a group and contribute most

to the project, the people in the team have to be organized in some manner. This structure of

Team has a direct impact on the product quality and project productivity. The structure of my

team democratic. Democratic team consists of ten or fewer. The structure allowed input from

all the members, which led to better decisions in difficult situations. Employees are the most

important asset of an organization and teams are the building blocks of its success. A

person’s quality to be a good team player and leader determines how well he or she can

contribute to achieving the company’s objectives. To compete effectively in today’s markets,

organizations have turned their focus on building self-motivated and efficient teams so as to

maximize the use of their resources and employee talents. Businesses across industry

verticals are giving increasing importance to put in place flexible teams that are more

responsive to changing environments. The importance of a team comes into play when

business processes need a coordinated and collective effort from the employees, which in turn

creates a positive impact on the entire organization. Check out this course on the theory of

team development to learn more about the impact of team structure, on an organization.

35
As a small business owner or entrepreneur, you must concentrate your efforts towards
building high-performing teams that can create a positive synergy around them. This not only
helps increase the collective achievements of your company but also gives you the perfect
platform to strategize for business development. Here in our discussion today, we will bring
to you the concepts of team structure and the other related facets of team development and
management.

Types of Team Structures

As against traditional organizational structures wherein they had different departments for
each business function, today the day-to-day activities of a firm revolve around teams.
Whether it’s a sales and marketing team or research and development team, teams are
flexible and can build products, negotiate prices and strike deals, coordinate projects and
provide services etc. There are four important kinds of teams that one would commonly find:

1. Problem-Solving Teams – This kind of team basically comprises of a few members,


ideally from 5 to 12, belonging to a particular department coming together on a
weekly basis to discuss and solve problems of their department functioning. Members
give their individual suggestions for process improvement and after enough
deliberation, present their advice to the higher management for further
implementation. For example, Merrill Lynch, in the earlier days had created a
problem-solving team to figure out a way to reduce the time taken to open a new cash
management account.

2. Self-Managed Teams – While problem-solving teams were effective in


recommending solutions, they didn’t have the power to implement them. Self-
managed teams were built to address this challenge and apart from discussing issues,
they were responsible for implementing the solutions and taking responsibilities for
their outcomes. From making operational decisions to interacting with customers,
self-managed teams are highly effective provided the members are motivated and
driven to bring about positive change.

3. Cross-Functional Teams – When employees from different business functions but


belonging to a similar hierarchical level come together to achieve a common task, the
team is called a cross-functional team. The members bring their individual expertise
from their respective work area and exchange information for a common cause.
Whether it is finding solution to a development fault or coordinating complex
projects, cross-functional teams are very effective if managed well. For example, the
Boeing Company created a cross-functional team of employees from various

36
departments like production, quality, and design engineering, tooling and information
systems to automate shims on the C-17 program. Since the members belonged to
diverse backgrounds, they were able to give different perspectives to arrive at the best
solution. The team’s suggestions helped reduce the cycle time and cost, as well as
greatly improved the quality of the program. While cross-functional teams are highly
effective, they need good management skills to build trust and teamwork amongst the
members and manage the diverse nature of the team.

4. Virtual Teams – In today’s world of internet and mobile technologies, it’s easier to
manage physically dispersed members with the concept of building virtual teams.
Members collaborate online, participate in video-conferences and discuss in real-time
to realize a common objective. While virtual teams are easily manageable, the
members sometime lack the motivation to find solutions or fail to trust each other due
to absence of any direct interaction. These challenges must be addressed by
monitoring the efforts of the members and recognizing their individual
contributions. Learn more about managing and hiring virtual teams with this course.

5. Bureaucratic – Teams are built around highly routine tasks with formalized rules and
regulations. Decision making follows a certain chain of command and tasks are highly
specialized in nature.

6. Matrix Structure – Most companies follow this structure to build their teams and it
basically combines the functional as well as product departmentalization. Employees
in a matrix normally report to two bosses – one who is their functional department
manager and the other a product manager. This creates a dual chain of command that
is highly effective for complex and interdependent activities. For example, a professor
teaching accounting to undergraduate students, may report to the director of
undergraduate programs as well as the head of the accounting department.

Factors for Team Success

A team’s effectiveness depends on various factors such as context, composition, work design
and process. Apart from team performance, managers must also measure member satisfaction
levels to find out the productivity of the teams. There are numerous ways to increase the
success of teams such as:

37
 Leadership and trust building are very critical to the team’s success. This course on
how to manage, coach and lead a team from the front will give you further insights on
leadership.
 Provide enough resources like equipment, information, administrative support,
motivation etc.
 Provide incentives through performance evaluation systems to further reinforce the
commitment and team efforts.
 Team composition is also crucial for its success. Understand the abilities of the
members and allocate roles and responsibilities accordingly. Attaining the right mix
of technical expertise, decision-making skills and interpersonal skills is crucial.
 Conflict management and establishing team process are also contributing factors
to achieving success as a team.

While team development is critical for organizational growth, managing teams is more
challenging because of the highly diverse backgrounds that the members come
from. This course can give you some insights on how to better coach and develop your
team’s skills. As a business manager, you must learn the art of turning individuals into team
players and motivating them to collectively achieve business goals. This course on how to
hire and manage great teams will open us new possibilities for your team’s growth

My team comprises of following members:

SUMIT SINGH ADHIKARI (16MCA8048)

GAURI SHANKAR AIRI (16MCA8038)

SOFTWARE REQUIREMENT:-

Software Requirements is a field within software engineering that deals with establishing the
needs of stakeholders that are to be solved by software. The IEEE Standard Glossary of
Software Engineering Technology defines a software requirement as:[1]

1. A condition or capability needed by a user to solve a problem or achieve an objective.


2. A condition or capability that must be met or possessed by a system or system
component to satisfy a contract, standard, specification, or other formally imposed
document.

38
3. A documented representation of a condition or capability as in 1 or 2.
The activities related to working with software requirements can broadly be broken up into
Elicitation, Analysis, Specification, and Management.[2]

Analysis
Analysis is the logical breakdown that proceeds from elicitation. Analysis involves reaching a
richer and more precise understanding of each requirement and representing sets of
requirements in multiple, complementary ways.

Specification
Specification involves representing and storing the collected requirements knowledge in a
persistent and well-organized fashion that facilitates effective communication and change
management. Use cases, user stories, functional requirements, and visual analysis models are
popular choices for requirements specification.

Validation
Validation involves techniques to confirm that the correct set of requirements has been
specified to build a solution that satisfies the project's business objectives.

Management
Requirements change during projects and there are often many of them. Management of this
change becomes paramount to ensuring that the correct software is built for the stakeholders.

Tool support for requirements engineering


Specialized commercial tools for requirements engineering are Gather space, Rational
RequisitePro, Doors, CaliberRM orQFDCapture, but also free tools like Free
Mind and Concord ion can be used. Issue trackers implementing the Volererequirements
template have been used successfully in distributed environments.

HARDWARE

Processor : Intel Core i3

HDD : 500 GB

RAM : 8 GB

DISPLAY : 64 Bit Color

39
DIAGRAM:

Sequence diagram:

40
Class diagram:

41
Activity diagram:

42
Use Case diagram:

43
SOURCE CODE:

JAVA FILE:

MainActivity.java

package sumit.gaurav.myapp.SGplayer;

import android.Manifest;
import android.app.Activity;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.database.Cursor;
import android.os.Build;
import android.provider.MediaStore;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;

public class MainActivity extends Activity {

private ListView list;


private Cursor cursor;
private MediaAdapter mediaAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_navigation_gravity);

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {


if
(checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED) {

requestPermissions(new String[]
{Manifest.permission.READ_EXTERNAL_STORAGE},1);

return;
}}
list = (ListView)findViewById(R.id.songs_list);

getData();
click(list);

public void getData(){


String[] projection = {MediaStore.Audio.Media._ID,
MediaStore.Audio.Media.TITLE,
MediaStore.Audio.Media.ARTIST,
MediaStore.Audio.Media.ALBUM_ID};

Cursor cursor =
getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
projection,

44
null,
null,
null);

mediaAdapter = new MediaAdapter(this,cursor);


list.setAdapter(mediaAdapter);

public void click(ListView list){


list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int
position, long id) {
cursor = (Cursor)parent.getAdapter().getItem(position);
Intent in = new
Intent(getApplicationContext(),activity_play.class);
in.putExtra("_ID",position);
startActivity(in);
}
});
}

MediaAdapter.java

package sumit.gaurav.myapp.SGplayer;

import android.content.ContentResolver;
import android.content.ContentUris;
import android.content.Context;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.provider.MediaStore;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CursorAdapter;
import android.widget.ImageView;
import android.widget.TextView;

import java.io.InputStream;

public class MediaAdapter extends CursorAdapter {

Context context;

45
public MediaAdapter(Context context, Cursor c) {
super(context, c, 0 /* flags */);
this.context = context;
}

@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
return LayoutInflater.from(context).inflate(R.layout.list_item,
parent, false);
}

@Override
public void bindView(View view, Context context, Cursor cursor) {
TextView text_title = (TextView)view.findViewById(R.id.song_title);
TextView text_artist =
(TextView)view.findViewById(R.id.song_artist);
ImageView album_image =
(ImageView)view.findViewById(R.id.image_list);

Long album_id =
cursor.getLong(cursor.getColumnIndex(MediaStore.Audio.Media.ALBUM_ID));
Bitmap album_art = getArtistImage(album_id.toString());
if(album_art != null)
album_image.setImageBitmap(album_art);
else{
Drawable myDrawable =
context.getResources().getDrawable(R.drawable.music_ph);
album_image.setImageDrawable(myDrawable);
}

int title_index =
cursor.getColumnIndex(MediaStore.Audio.Media.TITLE);
int artist_index =
cursor.getColumnIndex(MediaStore.Audio.Media.ARTIST);

String title = cursor.getString(title_index);


String artist = cursor.getString(artist_index);

text_title.setText(title);
text_artist.setText(artist);
}

public Bitmap getArtistImage(String albumid) {


Bitmap artwork = null;
try {
Uri sArtworkUri = Uri
.parse("content://media/external/audio/albumart");
Uri uri = ContentUris.withAppendedId(sArtworkUri,
Long.valueOf(albumid));
ContentResolver res = context.getContentResolver();
InputStream in = res.openInputStream(uri);
artwork = BitmapFactory.decodeStream(in);

} catch (Exception e) {
Log.e("Exception", e.toString());
}
return artwork;
}
}

46
MyMusic.java

package sumit.gaurav.myapp.SGplayer;

import android.Manifest;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.database.Cursor;
import android.os.Build;
import android.os.Bundle;
import android.provider.MediaStore;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ListView;

/**
* Created by sumit adhikari on 11/19/2017.
*/

public class Mymusic extends Fragment {


private ListView list;
private Cursor cursor;
private MediaAdapter mediaAdapter;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup
container, @Nullable Bundle savedInstanceState) {
super.onCreateView(inflater, container, savedInstanceState);
View v = inflater.inflate(R.layout.mymusic, container, false);

list = (ListView)v.findViewById(R.id.songs_list);
return v;
}

@Override
public void onViewCreated(View view, @Nullable Bundle
savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if
(getContext().checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE
)
!= PackageManager.PERMISSION_GRANTED) {

requestPermissions(new String[]
{Manifest.permission.READ_EXTERNAL_STORAGE},1);

return ;
}}

getData();

47
click(list);
}

public void getData(){


String[] projection = {MediaStore.Audio.Media._ID,
MediaStore.Audio.Media.TITLE,
MediaStore.Audio.Media.ARTIST,
MediaStore.Audio.Media.ALBUM_ID};

Cursor cursor =
getContext().getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CON
TENT_URI,
projection,
null,
null,
null);

mediaAdapter = new MediaAdapter(getContext(),cursor);


list.setAdapter(mediaAdapter);

public void click(ListView list){


list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int
position, long id) {
cursor = (Cursor)parent.getAdapter().getItem(position);
Intent in = new Intent(getContext(),activity_play.class);
in.putExtra("_ID",position);
startActivity(in);
}
});
}

Activity_play:

package sumit.gaurav.myapp.SGplayer;

import android.app.ProgressDialog;
import android.content.ContentResolver;
import android.content.ContentUris;
import android.content.Intent;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.drawable.Drawable;
import android.media.MediaPlayer;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Handler;
import android.provider.MediaStore;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

48
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
import android.widget.SeekBar;
import android.widget.TextView;
import android.widget.Toast;

import org.json.JSONException;
import org.json.JSONObject;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.nio.charset.Charset;

public class activity_play extends AppCompatActivity implements


SeekBar.OnSeekBarChangeListener{
TextView t1,t2;
private SeekBar seekbar;
private Cursor cursor;
private static MediaPlayer player;
private String path;
private Handler handler = new Handler();
private ImageView album_image;
private Bitmap album_art;
private String baseUrl =
"https://api.musixmatch.com/ws/1.1/matcher.lyrics.get?
format=json&callback=callback&q_track=";
private String api = "&apikey=6f728fb03fdb48f9d773f0ddbe2110ad";
private String another = "&q_artist=";
private String title;
private String artist;
private TextView lyricsView;
private String finalUrl;
private int id;
public static final String LOG_TAG =
activity_play.class.getSimpleName();

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_play);
Intent mIntent = getIntent();
id = mIntent.getIntExtra("_ID",0);
getCursor(id);
path = getCursor(id);
play(path);

//album_image = (ImageView)findViewById(R.id.album_art);
seekbar = (SeekBar)findViewById(R.id.seek);
lyricsView = (TextView)findViewById(R.id.lyrics);
seekbar.setOnSeekBarChangeListener(this);
seekUpdation();

downloadLyrics();
}

49
public void downloadLyrics(){
title =
cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.TITLE)).trim(
);
artist =
cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ARTIST)).trim
();
title = convert(title);
artist = convert(artist);
finalUrl = baseUrl+title+another+artist+api;
lyricsView.setText("");
downloadLyricsAsyncTask download = new downloadLyricsAsyncTask();
download.execute();

public static String convert(String title){


int temp = 0;
int id = title.indexOf(" ");
if(id == -1){
return title;
}
StringBuilder s = new StringBuilder();
int beg = 0;
while(id!=-1){
s.append(title.substring(beg,id));
beg = id+1;
s.append("%20");
temp = id;
id = title.indexOf(" ",temp+1);
}
s.append(title.substring(temp+1));
return s.toString();
}

private class downloadLyricsAsyncTask extends AsyncTask<URL, Void,


String> {
ProgressDialog pd = new ProgressDialog(activity_play.this);

@Override
protected void onPreExecute() {
super.onPreExecute();
pd.setMessage("loading");
pd.show();
}

@Override
protected String doInBackground(URL... urls) {
// Create URL object
URL url = createUrl(finalUrl);

// Perform HTTP request to the URL and receive a JSON response


back
String jsonResponse = "";
try {
jsonResponse = makeHttpRequest(url);
} catch (IOException e) {

50
e.getStackTrace();
}

// Extract relevant fields from the JSON response and create an


{@link Event} object
String lyrics = extractFeatureFromJson(jsonResponse);

// Return the {@link Event} object as the result fo the {@link


TsunamiAsyncTask}
return lyrics;
}

@Override
protected void onPostExecute(String lyrics) {
if (lyrics == null) {
pd.hide();
Toast.makeText(activity_play.this,"NO LYRICS
FOUND",Toast.LENGTH_SHORT).show();
lyricsView.setText("NO LYRICS FOUND");
return;
}
pd.hide();
updateUi(lyrics);
}
}

private URL createUrl(String stringUrl) {


URL url = null;
try {
url = new URL(stringUrl);
} catch (MalformedURLException exception) {
Log.e(LOG_TAG, "Error with creating URL", exception);
return null;
}
return url;
}

private String makeHttpRequest(URL url) throws IOException {


String jsonResponse = "";
HttpURLConnection urlConnection = null;
InputStream inputStream = null;
try {
urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod("GET");
urlConnection.setReadTimeout(10000 /* milliseconds */);
urlConnection.setConnectTimeout(15000 /* milliseconds */);
urlConnection.connect();
if(urlConnection.getResponseCode()==200) {
inputStream = urlConnection.getInputStream();
jsonResponse = readFromStream(inputStream);
}
} catch (IOException e) {
e.getStackTrace();
} finally {
if (urlConnection != null) {
urlConnection.disconnect();
}
if (inputStream != null) {
// function must handle java.io.IOException here
inputStream.close();
}

51
}
return jsonResponse;
}

private String readFromStream(InputStream inputStream) throws


IOException {
StringBuilder output = new StringBuilder();
if (inputStream != null) {
InputStreamReader inputStreamReader = new
InputStreamReader(inputStream, Charset.forName("UTF-8"));
BufferedReader reader = new BufferedReader(inputStreamReader);
String line = reader.readLine();
while (line != null) {
output.append(line);
line = reader.readLine();
}
}
return output.toString();
}

private String extractFeatureFromJson(String lyricsJSON) {

if(TextUtils.isEmpty(lyricsJSON))
return null;
try {
JSONObject baseJsonResponse = new JSONObject(lyricsJSON);
JSONObject message =
baseJsonResponse.getJSONObject("message");
JSONObject body = message.getJSONObject("body");
JSONObject lyrics = body.getJSONObject("lyrics");
String finalLyrics = lyrics.getString("lyrics_body");

return finalLyrics;
} catch (JSONException e) {
Log.e(LOG_TAG, "Problem parsing the lyrics JSON results",
e);
}
return null;
}

private void updateUi(String lyrics) {


lyricsView.setText(lyrics);
}
private void setImage(){
Long album_id =
cursor.getLong(cursor.getColumnIndex(MediaStore.Audio.Media.ALBUM_ID));
album_art = getArtistImage(album_id.toString());
if(album_art != null)
album_image.setImageBitmap(album_art);
else{
Drawable myDrawable =
getResources().getDrawable(R.drawable.music_ph);
album_image.setImageDrawable(myDrawable);
}
}

public String getCursor(int id){


String[] projection = {MediaStore.Audio.Media._ID,
MediaStore.Audio.Media.TITLE,
MediaStore.Audio.Media.ARTIST,

52
MediaStore.Audio.Media.ALBUM,
MediaStore.Audio.Media.DATA,
MediaStore.Audio.Media.DURATION,
MediaStore.Audio.Media.ALBUM_ID};
cursor =
getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
projection,
null,
null,
null);
cursor.moveToPosition(id);
String s =
cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.DATA));
return s;
}

@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean
fromUser) {

@Override
public void onStartTrackingTouch(SeekBar seekBar) {

@Override
public void onStopTrackingTouch(SeekBar seekBar) {
if(player!=null) {
player.seekTo(seekBar.getProgress());
}
}

public Bitmap getArtistImage(String albumid) {


Bitmap artwork = null;
try {
Uri sArtworkUri = Uri
.parse("content://media/external/audio/albumart");
Uri uri = ContentUris.withAppendedId(sArtworkUri,
Long.valueOf(albumid));
ContentResolver res =
getApplicationContext().getContentResolver();
InputStream in = res.openInputStream(uri);
artwork = BitmapFactory.decodeStream(in);

} catch (Exception e) {
Log.e("Exception", e.toString());
}
return artwork;
}

public void play(String s){


if(player!=null)
stop();
player = new MediaPlayer();
try {

53
player.setDataSource(s);

} catch (IOException e) {
e.printStackTrace();
}

player.prepareAsync();

player.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
play();

}
});

player.setOnCompletionListener(new
MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
next();
}
});

public void play() {


player.start();

seekbar.setMax(cursor.getInt(cursor.getColumnIndex(MediaStore.Audio.Media.D
URATION)));
//setImage();
downloadLyrics();
}

public void stop(View view) {


if(player!=null) {
/*player.stop();
player.release();
player=null;*/
player.pause();
}
}

public void stop(){


if(player!=null) {
/*player.stop();
player.release();
player=null;*/
player.pause();
}
}

Runnable runnable = new Runnable() {


@Override
public void run() {
seekUpdation();
}
};

54
public void seekUpdation(){
if(player!=null)
seekbar.setProgress(player.getCurrentPosition());
handler.postDelayed(runnable,1000);
}

public void next(View view) {


if(cursor!=null){
if(cursor.isLast())
cursor.moveToFirst();
cursor.moveToNext();

String s =
cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.DATA));
play(s);
//setImage();
downloadLyrics();
}
}

public void next() {


if(cursor!=null){
if(cursor.isLast())
cursor.moveToFirst();
cursor.moveToNext();

String s =
cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.DATA));
play(s);
// setImage();
downloadLyrics();
}
}

public void prev(View view) {


if(cursor!=null){
if(cursor.isFirst())
cursor.moveToLast();
cursor.moveToPrevious();
String s =
cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.DATA));
play(s);
// setImage();
downloadLyrics();
}
}

public void play(View view) {


play();
}
}

NavigationGravity.java

55
package sumit.gaurav.myapp.SGplayer;

import android.Manifest;
import android.app.FragmentManager;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.database.Cursor;
import android.media.MediaPlayer;
import android.os.Build;
import android.os.Bundle;
import android.provider.MediaStore;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v4.app.FragmentTransaction;
import android.view.View;
import android.support.design.widget.NavigationView;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.TextView;

public class NavigationGravity extends AppCompatActivity


implements NavigationView.OnNavigationItemSelectedListener {
ListView list;
Cursor cursor;
TextView t1,t2;
MediaAdapter mediaAdapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

setContentView(R.layout.activity_navigation_gravity);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);

setSupportActionBar(toolbar);
DrawerLayout drawer = (DrawerLayout)
findViewById(R.id.drawer_layout);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
this, drawer, toolbar, R.string.navigation_drawer_open,
R.string.navigation_drawer_close);
drawer.addDrawerListener(toggle);
toggle.syncState();

NavigationView navigationView = (NavigationView)


findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);

/* if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {


if
(checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED) {

requestPermissions(new String[]
{Manifest.permission.READ_EXTERNAL_STORAGE},1);

56
return;
}}*/
/* list = (ListView)findViewById(R.id.songs_list);

getData();
click(list);*/

/* public void getData(){


String[] projection = {MediaStore.Audio.Media._ID,
MediaStore.Audio.Media.TITLE,
MediaStore.Audio.Media.ARTIST,
MediaStore.Audio.Media.ALBUM_ID};

Cursor cursor =
getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
projection,
null,
null,
null);

mediaAdapter = new MediaAdapter(this,cursor);


list.setAdapter(mediaAdapter);

}*/

/* public void click(ListView list){


list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int
position, long id) {
cursor = (Cursor)parent.getAdapter().getItem(position);
Intent in = new
Intent(getApplicationContext(),activity_play.class);
in.putExtra("_ID",position);
startActivity(in);
}
});
}*/

@Override
public void onBackPressed() {
DrawerLayout drawer = (DrawerLayout)
findViewById(R.id.drawer_layout);
if (drawer.isDrawerOpen(GravityCompat.START)) {
drawer.closeDrawer(GravityCompat.START);
} else {
super.onBackPressed();
}
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is
present.

57
getMenuInflater().inflate(R.menu.navigation_gravity, menu);
return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();

//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}

return super.onOptionsItemSelected(item);
}

@SuppressWarnings("StatementWithEmptyBody")
@Override
public boolean onNavigationItemSelected(MenuItem item) {
// Handle navigation view item clicks here.
int id = item.getItemId();

if (id == R.id.nav_share) {
Sharing fragment = new Sharing();
FragmentTransaction fragmentManager =
getSupportFragmentManager().beginTransaction();

fragmentManager.replace(R.id.fragment_container,fragment).commit();
} else if (id == R.id.nav_aboutus) {
AboutUs fragment = new AboutUs();
FragmentTransaction fragmentManager =
getSupportFragmentManager().beginTransaction();

fragmentManager.replace(R.id.fragment_container,fragment).commit();
} else if (id == R.id.nav_rateus) {
RateUs fragment = new RateUs();
FragmentTransaction fragmentManager =
getSupportFragmentManager().beginTransaction();

fragmentManager.replace(R.id.fragment_container,fragment).commit();
} else if (id == R.id.nav_faq) {
Faq fragment = new Faq();
FragmentTransaction fragmentManager =
getSupportFragmentManager().beginTransaction();

fragmentManager.replace(R.id.fragment_container,fragment).commit();
}
else if (id == R.id.nav_faq) {
Faq fragment = new Faq();
FragmentTransaction fragmentManager =
getSupportFragmentManager().beginTransaction();

fragmentManager.replace(R.id.fragment_container,fragment).commit();
}
else if (id == R.id.nav_mymusic) {
Mymusic fragment = new Mymusic();
FragmentTransaction fragmentManager =
getSupportFragmentManager().beginTransaction();

58
fragmentManager.replace(R.id.fragment_container,fragment).commit();
}

DrawerLayout drawer = (DrawerLayout)


findViewById(R.id.drawer_layout);
drawer.closeDrawer(GravityCompat.START);
return true;
}
}

Aboutus.java

package sumit.gaurav.myapp.SGplayer;

import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

/**
* Created by sumit adhikari on 11/19/2017.
*/

public class AboutUs extends Fragment {


public AboutUs()
{}

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup
container, @Nullable Bundle savedInstanceState) {
super.onCreateView(inflater, container, savedInstanceState);
View v = inflater.inflate(R.layout.aboutus,container,false);
TextView textView = (TextView)v.findViewById(R.id.textView2);
return v;

}
}

Faq.java

package sumit.gaurav.myapp.SGplayer;

import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

59
import android.webkit.WebView;

public class Faq extends Fragment {


public Faq()
{

}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup
container, @Nullable Bundle savedInstanceState) {
super.onCreateView(inflater, container, savedInstanceState);
View v = inflater.inflate(R.layout.faq,container,false);
String str = "<html><body><b>Can I create score with this app?</b>\
n" +
"No, unlike the software for desktop, you can't create
sheet music with this app.\n" +
"\n" +
"How can I open my own .mscz files with this app?\n" +
"Use third party file manager apps such as Astro or ES to
browse for mscz files on your local storage. Also Dropbox, Google Drive,
Gmail, Mail and the Browser will open mscz files directly in the app.\n" +
"\n" +
"How can I change the playback tempo?\n" +
"After opening a score, you will see a slider at the bottom
to adjust the tempo. You can change the tempo while playing the score.\n" +
"\n" +
"How can I open MIDI or MusicXML files?\n" +
"There is no MIDI or MusicXML import available. However you
can convert your MIDI or MusicXML (xml, mxl) with the MuseScore notation
software to MuseScore (mscz) files, which you can then open in the app.\n"
+
"\n" +
"How can I delete a score in the app?\n" +
"Swipe a row in the score list to the left and it will
bring up the delete button.\n" +
"\n" +
"How can I buy the app?\n" +
"The MuseScore Player app is available on the Google Play
store. If you don't own a credit card, you can purchase a Google Play gift
card in a store near you.</body></html>";
WebView webView = (WebView)v.findViewById(R.id.webview);
webView.getSettings().setJavaScriptEnabled(true);
webView.loadData(str,"text/html",null);
return v;
}
}

RateUs.java

package sumit.gaurav.myapp.SGplayer;

import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v7.app.AlertDialog;
import android.view.LayoutInflater;

60
import android.view.View;
import android.view.ViewGroup;
import android.widget.RatingBar;

/**
* Created by sumit adhikari on 11/19/2017.
*/

public class RateUs extends Fragment {


public RateUs()
{

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup
container, @Nullable Bundle savedInstanceState) {
super.onCreateView(inflater, container, savedInstanceState);
View v = inflater.inflate(R.layout.rateus,container,false);
RatingBar ratingBar = (RatingBar)v.findViewById(R.id.ratingBar);
ratingBar.setOnRatingBarChangeListener(new
RatingBar.OnRatingBarChangeListener() {
@Override
public void onRatingChanged(RatingBar ratingBar, float v,
boolean b) {
AlertDialog.Builder builder = new
AlertDialog.Builder(getContext());
builder.setMessage("Thank you for giving us your valuable
time");
builder.setTitle("Thank You");
builder.show();
}
});
return v;
}
}

Sharing.java

package sumit.gaurav.myapp.SGplayer;

import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;

/**
* Created by sumit adhikari on 11/19/2017.
*/

public class Sharing extends Fragment {


public Sharing()

61
{

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup
container, @Nullable Bundle savedInstanceState) {
super.onCreateView(inflater, container, savedInstanceState);
View v = inflater.inflate(R.layout.sharing,container,false);
Button button = (Button)v.findViewById(R.id.sharebutton);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String body = "hey install SG player application";
String sub = "download and install this app";
Intent myintent = new Intent(Intent.ACTION_SEND);
myintent.setType("text/plain");
myintent.putExtra(Intent.EXTRA_SUBJECT,sub);
myintent.putExtra(Intent.EXTRA_TEXT,body);
startActivity(Intent.createChooser(myintent,"Share
Using"));
}
});
return v;
}
}

Splash.java

package sumit.gaurav.myapp.SGplayer;

import android.content.Intent;
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

public class splash extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash);
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {

startActivity(new
Intent(splash.this,NavigationGravity.class));
finish();
}

},4000);
}
}

62
Layout.xml

Aboutus.xml

<?xml version="1.0" encoding="utf-8"?>


<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">

<TextView
android:id="@+id/textView2"
android:layout_width="match_parent"
android:layout_height="0dp"
android:textColor="@color/colorAccent3"
android:layout_marginBottom="76dp"
android:layout_marginStart="4dp"
android:text="@string/aboutuss"
android:textSize="28dp"

android:textStyle="bold|italic"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" />
</android.support.constraint.ConstraintLayout>

ActivityMain.xml

<?xml version="1.0" encoding="utf-8"?>


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="sumit.gaurav.myapp.SGplayer.MainActivity">

<ListView
android:id="@+id/songs_list"
style="@style/Widget.AppCompat.ListView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/backgr"
android:visibility="visible" />

</LinearLayout>

63
ActivityNavigationGravity.xml

<?xml version="1.0" encoding="utf-8"?>


<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:openDrawer="start">

<include
layout="@layout/app_bar_navigation_gravity"
android:layout_width="match_parent"
android:layout_height="match_parent" />

<android.support.design.widget.NavigationView
android:id="@+id/nav_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:fitsSystemWindows="true"
app:headerLayout="@layout/nav_header_navigation_gravity"
app:menu="@menu/activity_navigation_gravity_drawer" />

</android.support.v4.widget.DrawerLayout>

Activityplay.xml

<?xml version="1.0" encoding="utf-8"?>


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="sumit.gaurav.myapp.SGplayer.activity_play"
android:orientation="vertical"
android:background="#f49e42">

<ScrollView
android:layout_width="match_parent"
android:layout_height="288dp"
android:layout_weight="1">

<TextView
android:id="@+id/lyrics"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="20dp"
android:textAppearance="?android:textAppearanceMedium"
android:textColor="#fff"
android:textStyle="bold" />
</ScrollView>

<SeekBar

64
android:id="@+id/seek"
android:layout_height="34dp"
android:layout_width="match_parent"
android:background="@color/colorAccent4" />

<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal">

<Button
android:id="@+id/prev"
android:layout_width="50dp"
android:layout_weight="1"
android:layout_height="45dp"
android:background="@drawable/previous"
android:onClick="prev"

android:textColor="@color/colorPrimary"
android:textStyle="bold" />

<Button
android:id="@+id/play"
android:layout_weight="1"
android:layout_width="50dp"
android:layout_height="45dp"
android:background="@drawable/play"
android:onClick="play"

android:textColor="#fff"
android:textStyle="bold" />

<Button
android:id="@+id/pause"
android:layout_width="50dp"
android:layout_weight="1"
android:layout_height="45dp"
android:background="@drawable/pause"
android:onClick="stop"

android:textColor="#fff"
android:textStyle="bold" />

<Button
android:id="@+id/next"
android:layout_weight="1"
android:layout_width="50dp"
android:layout_height="45dp"
android:background="@drawable/next"
android:onClick="next"

android:textColor="@color/listBackground"
android:textStyle="bold" />
</LinearLayout>

</LinearLayout>

ActivitySplash.xml

65
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:background="@drawable/image2"
android:layout_height="match_parent"
tools:context="sumit.gaurav.myapp.SGplayer.splash">

</android.support.constraint.ConstraintLayout>

AppbarnavigationGravity.xml

<?xml version="1.0" encoding="utf-8"?>


<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="sumit.gaurav.myapp.SGplayer.NavigationGravity">

<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/AppTheme.AppBarOverlay">

<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:popupTheme="@style/AppTheme.PopupOverlay" />

</android.support.design.widget.AppBarLayout>

<include layout="@layout/content_navigation_gravity" />

</android.support.design.widget.CoordinatorLayout>

ContentNavigationGraity.xml

<?xml version="1.0" encoding="utf-8"?>


<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:id="@+id/fragment_container"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context="sumit.gaurav.myapp.SGplayer.NavigationGravity"
tools:showIn="@layout/app_bar_navigation_gravity">

66
</android.support.constraint.ConstraintLayout>

Faq.xml

<?xml version="1.0" encoding="utf-8"?>


<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:orientation="vertical"
android:layout_height="match_parent">

<WebView
android:layout_width="368dp"
android:id="@+id/webview"
android:layout_height="495dp"
tools:layout_editor_absoluteX="8dp"
tools:layout_editor_absoluteY="8dp" />
</LinearLayout>

Listitem.xml

<?xml version="1.0" encoding="utf-8"?>


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/listBackground">

<ImageView
android:id="@+id/image_list"
android:layout_width="70dp"
android:layout_height="match_parent"/>

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="14dp"
android:orientation="vertical">
<TextView
android:id="@+id/song_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="sans-serif-medium"
android:textAppearance="?android:textAppearanceMedium"
android:textColor="#fff"
tools:text="TITLE"/>

67
<TextView
android:id="@+id/song_artist"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="sans-serif"
android:textAppearance="?android:textAppearanceSmall"
android:textColor="#fff"
tools:text="artist"/>
</LinearLayout>
</LinearLayout>

</LinearLayout>

Mymusic.xml

<?xml version="1.0" encoding="utf-8"?>


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="sumit.gaurav.myapp.SGplayer.MainActivity">

<ListView
android:id="@+id/songs_list"
style="@style/Widget.AppCompat.ListView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/backgr"
android:visibility="visible" />

</LinearLayout>

Navheadernavigationgravity.xml

<?xml version="1.0" encoding="utf-8"?>


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="@dimen/nav_header_height"
android:background="@drawable/backgr"
android:gravity="bottom"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:theme="@style/ThemeOverlay.AppCompat.Dark">

<ImageView
android:id="@+id/imageView"
android:layout_width="wrap_content"

68
android:layout_height="72dp"
android:paddingTop="@dimen/nav_header_vertical_spacing"
app:srcCompat="@drawable/sonywalkman" />

<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="@dimen/nav_header_vertical_spacing"
android:text="SAGA Player"
android:textAppearance="@style/TextAppearance.AppCompat.Body1" />

<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="developer.saga.com" />

</LinearLayout>

Rateus.xml

<?xml version="1.0" encoding="utf-8"?>


<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:gravity="center"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="If You Like The Application Please Rate Us.

"
android:textSize="18dp"
android:textStyle="bold"
android:textColor="@color/colorPrimaryDark"/>

<RatingBar
android:id="@+id/ratingBar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:stepSize="1"
app:layout_constraintEnd_toEndOf="parent"
tools:layout_editor_absoluteY="96dp" />
</LinearLayout>

Sharing.xml

<?xml version="1.0" encoding="utf-8"?>


<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"

69
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="top"
android:text="Share this app with your Friends

"
android:textSize="22dp"
android:textStyle="bold"
android:textColor="@color/colorPrimaryDark"/>
<Button
android:id="@+id/sharebutton"
android:layout_width="165dp"
android:layout_height="wrap_content"

android:background="@color/colorPrimary"
android:text="SHARE"
android:textColor="@color/colorAccent4" />

</LinearLayout>

Menu:

Activitynavigationgravitydrawer.xml

<?xml version="1.0" encoding="utf-8"?>


<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:showIn="navigation_view">

<group android:checkableBehavior="single">
<item

android:id="@+id/nav_mymusic"
android:icon="@drawable/sonywalkman"
android:title="My Music" />
<item
android:id="@+id/nav_share"
android:icon="@drawable/ic_menu_share"
android:title="Share" />
<item
android:id="@+id/nav_aboutus"
android:icon="@drawable/aboutus"
android:title="About Us" />
<item
android:id="@+id/nav_rateus"
android:icon="@drawable/ratee"
android:title="Rate Us" />
<item

70
android:id="@+id/nav_faq"
android:icon="@drawable/faq"
android:title="FAQ" />

</group>

</menu>

Colors.xml

<?xml version="1.0" encoding="utf-8"?>


<resources>
<color name="colorPrimary">#3f51b5</color>
<color name="colorPrimaryDark">#f84</color>
<color name="colorAccent">#FF4081</color>
<color name="colorAccent2">#EEE8aa</color>
<color name="colorAccent4">#FFFF00</color>
<color name="colorAccent3">#FB1F04</color>
<color name="listBackground">#303F94</color>
<color name="seekBarBackgriund">#F94646</color>
</resources>

Strings.xml

<resources>
<string name="app_name">SGplayer</string>
<string name="title_activity_navigation_gravity">SGplayer</string>

<string name="navigation_drawer_open">Open navigation drawer</string>


<string name="navigation_drawer_close">Close navigation drawer</string>
<string name="aboutuss">With SG player you can have in your pocket
millions of lyrics, wherever you are, whenever you want.

use it for lyrics to millions of songs


you just need to play the song and it shows the Lyrics in the worlds
largest lyrics database.
Listen to music
With the integrated music player, you can listen to your music and get
lyrics
in real time while you are enjoying your favorite songs. </string>
<string name="action_settings">Settings</string>
</resources>

Styles.xml

<resources>

<!-- Base application theme. -->


<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->

71
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>

<style name="AppTheme.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>

<style name="AppTheme.AppBarOverlay"
parent="ThemeOverlay.AppCompat.Dark.ActionBar" />

<style name="AppTheme.PopupOverlay"
parent="ThemeOverlay.AppCompat.Light" />

</resources>

Manifest.xml

<?xml version="1.0" encoding="utf-8"?>


<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="sumit.gaurav.myapp.SGplayer">

<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission
android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />

<application
android:allowBackup="true"
android:icon="@drawable/sonywalkman"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity"></activity>
<activity android:name=".activity_play" />
<activity android:name=".splash">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER"
/>
</intent-filter>
</activity>
<activity
android:name=".NavigationGravity"
android:label="@string/title_activity_navigation_gravity"
android:theme="@style/AppTheme.NoActionBar"></activity>
</application>

</manifest>

72
ScreenShots:

73
74
75
76
ENHANCEMENTS:

This application should be developed in future for making Playlist. By adding some

additional functionality like streaming online music and as well as playing the video songs.

And we also can add the Google Search for video and audio search. Using Material Design

on this application can provide us a better and great visual experience.

77
CONCLUSION:

During the System Development project in fifth semester we Are able to apply the theoretical

knowledge in practical Manner. We Also got a chance to know the coding standard that are

applied to at the industrial level. we also get the chance to learn and more and More features

and functions of the android and its framework as well As android SDK too. We are now also

able to make such type of any Application.

78
BIBLIOGRAPHY

https://android-developers.googleblog.com

https://books.google.co.in/books?isbn=3642025714

https://en.wikipedia.org/wiki/Media_player_(software)

https://Youtube.com

https://stackoverflow.com

79

You might also like