Search code examples
androidandroid-mediaplayer

how to stop music if application in background


I'm trying to stop my music when the user leaves the app or clicks the home button. My application plays music even if it is in the background. How can I stop the music if the user clicks the home button? If the user returns, the music is played again. Here is my code:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    mediaPlayer = MediaPlayer.create(getApplicationContext(), R.raw.vaporv2);
    if(!mediaPlayer.isPlaying()){
        mediaPlayer.start();
    }
    mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
        public void onCompletion(MediaPlayer mp) {
            mediaPlayer.start();
        }
    });
//toggle off and on :
    MusicButton = (ToggleButton) findViewById(R.id.toggleButton);
    MusicButton.setOnCheckedChangeListener(new OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            if (MusicButton.isChecked() && mediaPlayer.isPlaying()) {
                mediaPlayer.pause();

            } else {
                mediaPlayer.start();
            }
        }
    });

Solution

  • In your Activity:

    Check for two states:

    on pause state: When you press home button

     @Override
        protected void onPause() {
            super.onPause();
            if(mediaPlayer!=null && mediaPlayer.isPlaying()){
                mediaPlayer.pause();
            }
        }
    

    on resume state: When you come back to your screen

    @Override
        protected void onResume() {
            super.onResume();
            if(mediaPlayer!=null && !mediaPlayer.isPlaying()){
                mediaPlayer.start();
            }
        }