Reputation: 13
im working on simple audio application but i have a major problem because audio wont stop when user press home button or move app to background
i tried to use onPause() but it not work for me please can anyone help ?
import android.media.MediaPlayer;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
public class MainActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final Button button1 = (Button) findViewById(R.id.btn1);
final MediaPlayer angry = MediaPlayer.create(MainActivity.this, R.raw.angry);
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(angry.isPlaying()) {
angry.pause();
button1.setText("Play");
} else {
angry.start();
angry.setLooping(true);
button1.setText("Pause");
}
}
});
Upvotes: 0
Views: 56
Reputation: 5566
You should pausing MediaPlayer instance in onPause()
method.
But from your code, your final MediaPlayer angry
is only exist in onCreate()
method as local object variable. To fix your problem, you need to move out your angry
object from onCreate()
method, so you can access it from onPause()
method.
Here's example:
import android.media.MediaPlayer;
public class MainActivity extends ActionBarActivity {
MediaPlayer angry; //Now it is here
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
angry = MediaPlayer.create(MainActivity.this, R.raw.angry);
And you should pause it in onPause()
method like this:
@Override
public void onPause ()
{
if (angry != null)
{
angry.pause();
angry.stop();
}
super.onPause();
}
Upvotes: 1