0

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;

cloud
  • 77
  • 6

1 Answers1

0

I think you stop music inside the onPause() in your GameActivity:

@Override
protected void onPause() {
    super.onPause();
    gameView.pause();
}

Just delete this mediaPlayer.pause(); line from onPause() method, and I hope work for you

Abbas Jafari
  • 1,492
  • 2
  • 16
  • 28