Headertab

Drop Down MenusCSS Drop Down MenuPure CSS Dropdown Menu

Wednesday, 29 June 2016

Background Music in android game

Hello guys
Today we are learn about how to play audio music in background in your whole android game app  so lets start ..

actvity_main.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"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.tech.samset.MainActivity">

   <Button
        android:id="@+id/next"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Next" />


</LinearLayout>


MainActvity.java

package com.tech.samset;

import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
import android.os.IBinder;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.MediaController;

public class MainActivity extends AppCompatActivity {
   
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

findViewById(R.id.next).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                   Intent intent = new Intent(MainActivity.this, SecondActvity.class);
                       startActvity(intent );
                }

        });
       
}

@Override
    protected void onResume() {
        super.onResume();
       MyApplication.getInstance().startService();
       
}

@Override
    protected void onPause() {
        super.onPause();
       MyApplication.getInstance().musicSrv.pauseMusic();
//if you want when you go another activity then your music is pause then you call


       
}
}

SecondActvity.java

public class SecondActvity extends AppCompatActivity {
   
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
       
}

@Override
    protected void onResume() {
        super.onResume();
       MyApplication.getInstance().startService();
     
}
}
}



Mymusic.java

package com.tech.samset;

import android.app.Service;
import android.content.ContentUris;
import android.content.Intent;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnErrorListener;
import android.os.Binder;
import android.os.IBinder;
import android.os.PowerManager;
import android.util.Log;
import android.widget.Toast;

public class MusicService extends Service  implements MediaPlayer.OnErrorListener {

private final IBinder mBinder = new ServiceBinder();
MediaPlayer mPlayer;
private int length = 0;

public MusicService() {
}

public class ServiceBinder extends Binder {
MusicService getService() {
return MusicService.this;
}
}

@Override
public IBinder onBind(Intent arg0) {
return mBinder;
}

@Override
public void onCreate() {
super.onCreate();

mPlayer = MediaPlayer.create(this, R.raw.jingle);
mPlayer.setOnErrorListener(this);

if (mPlayer != null) {
mPlayer.setLooping(true);
mPlayer.setVolume(100, 100);
}


mPlayer.setOnErrorListener(new MediaPlayer.OnErrorListener() {

public boolean onError(MediaPlayer mp, int what, int extra) {

onError(mPlayer, what, extra);
return true;
}
});
}

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
mPlayer.start();
return START_STICKY;
}

public void pauseMusic() {
if (mPlayer.isPlaying()) {
mPlayer.pause();
length = mPlayer.getCurrentPosition();

}
}

public void resumeMusic() {
if (mPlayer.isPlaying() == false) {
mPlayer.seekTo(length);
mPlayer.start();
}
}

public void stopMusic() {
mPlayer.stop();
mPlayer.release();
mPlayer = null;
}

@Override
public void onDestroy() {
super.onDestroy();
if (mPlayer != null) {
try {
mPlayer.stop();
mPlayer.release();
} finally {
mPlayer = null;
}
}
}

public boolean onError(MediaPlayer mp, int what, int extra) {

Toast.makeText(this, "music player failed", Toast.LENGTH_SHORT).show();
if (mPlayer != null) {
try {
mPlayer.stop();
mPlayer.release();
} finally {
mPlayer = null;
}
}
return false;
}
}

MyApplication.java

public class MyApplication extends Application {
   
    public  Mymusic musicSrv;
    private Intent playIntent;
    private boolean musicBound = false;

public ServiceConnection musicConnection = new ServiceConnection() {

        @Override
        public void onServiceConnected(ComponentName name, IBinder service) {

            Mymusic .ServiceBinder binder = (Mymusic .ServiceBinder) service;
            musicSrv = binder.getService();
            musicBound = true;
        }

        @Override
        public void onServiceDisconnected(ComponentName name) {
            musicBound = false;
        }
    };

public void startService()
    {
        if (playIntent == null) {
            playIntent = new Intent(getApplicationContext(), Mymusic .class);
            bindService(playIntent, musicConnection, Context.BIND_AUTO_CREATE);
            startService(playIntent);
            Log.e("MAin", " intent is null ");
        } else {
            musicSrv.resumeMusic();
            Log.e("MAin", " intent is not null ");
        }
    }
    public void stopService()
    {
        if (playIntent!=null)
        {
            playIntent = new Intent(getApplicationContext(), Mymusic .class);
            unbindService(musicConnection);
            stopService(playIntent);
            musicSrv.stopMusic();
        }
    }

@Override
    public void onCreate() {
        super.onCreate();
   
    }

    public static synchronized MyApplication getInstance() {
        return mInstance;
    }

}
AndroidManifest

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.tech.samset">

    <application
        android:name=.MyApplication
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
       <activity android:name=".SecondActvity" />
        <service android:name=".MusicService" android:enabled="true" />
    </application>

</manifest>

FullSourcecode 

Thank you