2016-10-16 11 views
2

私はゲームを作成していますが、私は1つのアクティビティ(ゲームのメインメニュー用)のためにバックグラウンドミュージックを再生したい、私のコードは以下のとおりです。何回も、私は同じ音楽を再生したいときにもアクティビティが再開します。あなたのonResumeで

Androidのバックグラウンドミュージックを1回だけ再生する方法

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

をonPauseに行くときに再生される予防のためにこれを追加、R.raw.adalante);そのヌルだけが新しいオブジェクトを作成するかどうかをチェックしてください。 –

答えて

1

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

、さらに活動が融点= MediaPlayer.create(Menu.thisを初期化する前に、あなたのonResumeメソッドで

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

java.lang.RuntimeException:アクティビティを一時停止できません。 –

+0

原因:java.lang.IllegalStateException android.media.MediaPlayer._pause(ネイティブメソッド) –

+0

いつ発生しますか? –

関連する問題