Search code examples
androidmedia-player

Android: Simple how to stop mediaplayer after given time


I am trying to play an mp3 file (with an onClickListener) and stop after 2 seconds. I tried the code below but it is not working. Could anyone please help?

final MediaPlayer mpsound = MediaPlayer.create(this, R.raw.media_player_sound);

ImageView sound = (ImageView) findViewById(R.id.button);

sound.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                mpsound.start();{
                    sleep(2000);
                    mpsound.stop();
                }
            }
        });

Solution

  • Why are you calling stop() on mpfrog if you are playing audio with mpsound? You need to call the stop() function on the mpsound MediaPlayer. Also, you might want to add the @Override annotation to your onClick() method.

    for the override...

    sound.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    mpsound.start();{
                        sleep(2000);
                        mpsound.stop();
                    }
                }
            });
    

    for a timer.....

    Handler handler = new Handler(){
                @Override
                public void handleMessage(Message msg){
                    mpsound.stop();
                }
            };
    
    //Task for timer to execute when time expires
        class SleepTask extends TimerTask {
            @Override
            public void run(){
                handler.sendEmptyMessage(0);
            }
        }
    
    //then in some other function...
    Timer timer = new Timer("timer",true);
    timer.schedule(new SleepTask(),2000);