我正在创建一个游戏,我想只为一个活动播放背景音乐(对于游戏的主菜单),我的代码如下所示,问题是音乐播放不止一次,我想播放活动恢复时同样的音乐。
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();
}
答案 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();
}