简体   繁体   中英

Stop background audio on android app

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

                }
            }

        });

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();
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM