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



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

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

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

最新更新