Trigger an event when mediaPlayer stops

android, android-mediaplayer, audio, events

Solution

You can set an OnCompleteListener() to the player object. The code for it is:

mPlayer.setOnCompletionListener(new OnCompletionListener() {
     @Override
     public void onCompletion(MediaPlayer mp) 
             { 
                "your code comes here" 
             }
});

Here the mPlayer is the object of the MediaPlayer which is currently running.

Problem

I am making an app that uses sound effects. I would like to know how i can detect when a sound has finished playing and trigger an event . i tried this : ``` player = new MediaPlayer(); if (player != null) { player.reset(); player.release(); } player.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { @Override public void onCompletion(MediaPlayer mediaPlayer) { sonar.setBackgroundResource(R.drawable.sonar_off); stopPlay(); } }); if(state==1){ player = MediaPlayer.create(this, R.raw.sonar_slow); }else if(state==2){ player = MediaPlayer.create(this, R.raw.sonar_medium); }else if(state==3){ player = MediaPlayer.create(this, R.raw.sonar_fast); } try{ player.prepare(); } catch (IllegalStateException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } player.start(); ```

Original source