在Android应用程序上停止背景音频

时间:2015-05-12 08:26:05

标签: android audio

我正在处理简单的音频应用程序,但我遇到了一个主要问题,因为当用户按下主页按钮或将应用程序移动到后台时音频不会停止

我尝试使用 onPause(),但它对我不起作用请有人帮忙吗?

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

                }
            }

        });

1 个答案:

答案 0 :(得分:1)

您应该在onPause()方法中暂停MediaPlayer实例 但是从您的代码中,final MediaPlayer angry仅作为本地对象变量存在于onCreate()方法中。要解决您的问题,您需要从angry方法移出onCreate()对象,以便从onPause()方法访问它。 这是一个例子:

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

你应该用onPause()这样的方法暂停它:

@Override
public void onPause ()
{
  if (angry != null)
  {
    angry.pause();
    angry.stop();
  }
  super.onPause();
}