如何设置Android背景音乐只播放一次

时间:2016-10-16 15:57:10

标签: android android-mediaplayer

我正在创建一个游戏,我想只为一个活动播放背景音乐(对于游戏的主菜单),我的代码如下所示,问题是音乐播放不止一次,我想播放活动恢复时同样的音乐。

public class Menu extends Activity {
   MediaPlayer mp
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.menu);
 mp = MediaPlayer.create(Menu.this, R.raw.adalante);
    if(!mp.isPlaying()) {
        mp.start();
    }
public void play(View ButtonClicked) {
    mp.stop();
    mp.release();
    //mp = MediaPlayer.create(Menu.this, R.raw.l);
    //mp.start();
    goToActivity(Game.class);
}
@Override
public void onResume() {
    super.onResume();  // Always call the superclass method first
    //coins
    coin.setText(data.getString("coin"));
    mp = MediaPlayer.create(Menu.this, R.raw.adalante);
    if(!mp.isPlaying()) {

        mp.start();
    }

    //mps.release();

}

1 个答案:

答案 0 :(得分:1)

在你的onResume中不要一次又一次初始化MediaPlayer。每次进入onResume时,它都会创建新实例。所以在这里添加一个onResume检查:

@Override
protected void onResume() {
    super.onResume();
    if (mp==null)
    mp=MediaPlayer.create(MainActivity.this,R.raw.adalante);

    if (!mp.isPlaying())
        mp.start();
}

并另外添加此项以防止在活动进入onPause时播放

@Override
protected void onPause() {
    super.onPause();
    mp.pause();
}