0

我想在按下返回或返回按钮时停止音频

public class buttonFour extends Activity{ 

    MediaPlayer mp;

    @Override 
    public void onCreate (Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.button4);

        MediaPlayer mp = MediaPlayer.create(this, R.raw.song);
        mp.start(); 
    }
}

我尝试了以下方法:

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

但音乐继续播放

4

3 回答 3

2

使您的 MediaPlayer 引用成为全局引用。

然后覆盖onBackPressed()

public class buttonFour extends Activity {
MediaPlayer mp;
    @Override
    public void onCreate (Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.button4);

        mp = MediaPlayer.create(this, R.raw.song);
        mp.start();
    }
}

@Override
public void onBackPressed ()
{
  if (mp != null)
    mp.stop();
  super.onBackPressed();
}

编辑,虽然上面应该工作,如果不是你可以尝试这样的事情:

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

但是,一旦 Activity 离开屏幕或旋转更改,此代码将停止播放。

于 2012-12-17T15:30:25.130 回答
1

您正在初始化内部的另一个本地MediaPlayer对象,这就是为什么实例变量永远不会被初始化,也永远不会暂停的原因。mponCreate()

只需通过替换以下行来使用实例变量:

MediaPlayer mp = MediaPlayer.create(this, R.raw.song);

mp = MediaPlayer.create(this, R.raw.song);
于 2012-12-17T19:25:17.623 回答
0

尝试使MediaPlayer对象成为全局对象......这对我来说适用于全局MediaPlayer对象。

接着

mp.stop();
于 2013-03-22T12:01:57.070 回答