There are GameActivity and MainActivity. I put the Mediaplayer on GameActivity. Then when the game is over, the music stops.
So, I put the Mediaplayer on MainActivity. Then it's repeating after the game over. (overlap, playing new music when it's already playing)
How can I solve this error?
GameActivity
public class GameActivity extends AppCompatActivity {
private GameView gameView;
private MediaPlayer mediaPlayer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
Point point = new Point();
getWindowManager().getDefaultDisplay().getSize(point);
gameView = new GameView(this, point.x, point.y);
setContentView(gameView);
mediaPlayer = MediaPlayer.create(this, R.raw.bg);
mediaPlayer.setLooping(true);
mediaPlayer.start();
}
@Override
protected void onPause() {
super.onPause();
gameView.pause();
mediaPlayer.pause();
}
@Override
protected void onResume() {
super.onResume();
gameView.resume();
mediaPlayer.start();
}
}
MainActivity
public class MainActivity extends AppCompatActivity {
private boolean isMute;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//Hide Top Navigation
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_main);
//Game Start
findViewById(R.id.play).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startActivity(new Intent(MainActivity.this, GameActivity.class));
}
});
//High Score
TextView highScoreText = findViewById(R.id.highScoreTxt);
final SharedPreferences prefs = getSharedPreferences("game", MODE_PRIVATE);
highScoreText.setText(getString(R.string.high_score) + prefs.getInt("highscore", 0));
//Volume Control
isMute = prefs.getBoolean("isMute", false);
final ImageView volumeCtrl = findViewById(R.id.volumeCtrl);
if (isMute)
volumeCtrl.setImageResource(R.drawable.ic_baseline_volume_off_24);
else
volumeCtrl.setImageResource(R.drawable.ic_baseline_volume_up_24);
volumeCtrl.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
isMute = !isMute;
if (isMute)
volumeCtrl.setImageResource(R.drawable.ic_baseline_volume_off_24);
else
volumeCtrl.setImageResource(R.drawable.ic_baseline_volume_up_24);
SharedPreferences.Editor editor = prefs.edit();
editor.putBoolean("isMute", isMute);
editor.apply();
}
});
}
}
GameView
public GameView(GameActivity activity, int screenX, int screenY) {
super(activity);
this.activity = activity;