Play a Song Using Service in Android

Introduction

In this article I will describe services in Android. A service is an application component that is run in the background without user interaction. If we want to add a service to our application then we must add a declaration in the "AndroidManifest.xml" file and the service class must be extended. In this article I will tell you how to play music in the background using a service. In this article I took a MP3 song file that must play using a service in the app.

Step 1

As usual first of all create a new project as "File" -> "New" -> "Android application Project".

NwPrjct.xml.jpg

Step 2

After that, import an audio file; I imported a MP3 file in my app as shown in the following image.

radha.jpg

Step 3

Now open the "actiivity_main.xml" file and update it with the following code:

<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"

    tools:context=".MainActivity"

    android:background="#0ff0ff" >

    <TextView

        android:id="@+id/song"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:layout_alignParentBottom="true"

        android:layout_alignParentLeft="true"

        android:layout_alignParentRight="true"

        android:layout_marginBottom="208dp"

        android:background="#f00f00"

        android:gravity="center"

        android:textSize="40sp"

        android:text="@string/play"

        android:textColor="#00f00f" />

</RelativeLayout>

Step 4

Now open the "MainActivity.java" file and update it with the following code.

package com.demo.service;

import android.app.Activity;

import android.content.Intent;

import android.os.Bundle;

import android.view.Menu;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.TextView;

public class MainActivity extends Activity {

      Intent intent;

      @Override

      protected void onCreate(Bundle savedInstanceState) {

            super.onCreate(savedInstanceState);

            setContentView(R.layout.activity_main);

            final TextView tv= (TextView) findViewById(R.id.song);

            intent=new Intent(this,MyService.class);

            tv.setOnClickListener(new OnClickListener() {

                  @Override

                  public void onClick(View v) {

                        // TODO Auto-generated method stub

                        tv.setText(R.string.playsongs);

                        startService(intent);

                  }

            });

      }

      @Override

      protected void onPause() {

            // TODO Auto-generated method stub

            stopService(intent);

            super.onPause();

      }

      @Override

      public boolean onCreateOptionsMenu(Menu menu) {

            // Inflate the menu; this adds items to the action bar if it is present.

            getMenuInflater().inflate(R.menu.activity_main, menu);

            return true;

      }

}

Step 5

Create a new Java file extending the Service as "src/com.demo.service/MyService.java" and update it with the following code:

package com.demo.service;

import java.io.IOException;

import android.app.Service;

import android.content.Intent;

import android.media.MediaPlayer;

import android.os.IBinder;

public class MyService extends Service {

      MediaPlayer media;

      @Override

      public IBinder onBind(Intent intent) {

            // TODO Auto-generated method stub

            return null;

      }

      @Override

      public void onCreate() {

            // TODO Auto-generated method stub

            super.onCreate();

      }

      @Override

      public int onStartCommand(Intent intent, int flags, int startId) {

            media=MediaPlayer.create(this, R.raw.radha);

            try {

                  media.prepare();

            } catch (IllegalStateException e) {

                  // TODO Auto-generated catch block

                  e.printStackTrace();

            } catch (IOException e) {

                  // TODO Auto-generated catch block

                  e.printStackTrace();

            }

            media.start();

            // TODO Auto-generated method stub

            return super.onStartCommand(intent, flags, startId);

      }

      @Override

      public void onDestroy() {

            // TODO Auto-generated method stub

            media.release();

            super.onDestroy();

      }

}

 

Step 6

Now open the "/androidManifest.xml" file and update it with the service in the application as in the following code:

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

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

    package="com.demo.service"

    android:versionCode="1"

    android:versionName="1.0" >

    <uses-sdk

        android:minSdkVersion="8"

        android:targetSdkVersion="17" />

    <application

        android:allowBackup="true"

        android:icon="@drawable/ic_launcher"

        android:label="@string/app_name"

        android:theme="@style/AppTheme" >

        <activity

            android:name="com.demo.service.MainActivity"

            android:label="@string/app_name" >

            <intent-filter>

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

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

            </intent-filter>

        </activity>

        <service android:name="MyService">

       </service>

    </application>

</manifest>

Step 7

Click on "Play" and listen to the song "radha.mp3". Here if you click on the text "Play" then the song will  play and if you click on the text "Pause" then the song will stop due to the service stopping.

Play

play_tv.xml.jpg

Pause

pause_tv.xml.jpg

Up Next
    Ebook Download
    View all
    Learn
    View all