2016-10-16 80 views
2

我正在創建一個遊戲,我只想爲一個活動播放背景音樂(對於遊戲主菜單),我的代碼如下所示,問題是音樂播放不止一次,我想在活動恢復時播放相同的音樂。

如何設置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(); 

} 
+0

玩= MediaPlayer.create(菜單。該,R.raw.adalante);請檢查它是否僅爲空然後創建一個新對象 –

回答

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

,另外添加此預防活動時進入初始化MP之前的onPause

@Override 
protected void onPause() { 
    super.onPause(); 
    mp.pause(); 
} 
在你的onResume方法
+0

java.lang.RuntimeException:無法暫停活動 –

+0

引起:java.lang.IllegalStateException at android.media.MediaPlayer._pause(Native Method) –

+0

何時發生? –