Search code examples
javaandroidandroid-mediaplayerandroid-video-player

How to implement event listeners for fast forward/rewind buttons in Android MediaController


Here is my custom media controller. I would like to add listeners for fast forward and rewind buttons. I am able to add listeners for previous/next videos. But not on these buttons. Can any one point out a reference or give an idea on how to implement it?

public class MediaController extends MediaController {

MyListener mListener;

public MediaController(Context context) {
    super(context);
}

public MediaController(Context context, AttributeSet attrs) {
    super(context, attrs);
}

public MediaController(Context context, boolean useFastForward) {
    super(context, useFastForward);
}

@Override
public void show(int timeout) {
    super.show(3000);
}

@Override
public void hide() {
    super.hide();
}

public interface MyListener {
    public void onSetVisibilityCalled();
}

public void registerListener(MyListener myListener) {
    this.mListener = myListener;
}

public void setVisibility(int visibility) {
    super.setVisibility(visibility);
    if (mListener != null)
        mListener.onSetVisibilityCalled();
}

}

Listeners for prev/next buttons

    // Media control event listener
    MediaController.setPrevNextListeners(new OnClickListener() {

        @Override
        public void onClick(View v) {

            System.out.println("forward button pressed");


        }
    }, new OnClickListener() {

        @Override
        public void onClick(View v) {

            System.out.println("backward button pressed");


        }
    });

Solution

  • Found a way myself by adding custom VideoView. Added condition by overriding seekTo() method.

    public interface SeekListener {
        void onSeekTo(boolean ffwdrwd);
    }
    
    @Override
    public void seekTo(int pos) {
        boolean ffwdrwd = false;
        if (super.getCurrentPosition() <= pos)
            ffwdrwd = false;
        else
            ffwdrwd = true;
        if (mListener != null) {
            mListener.onSeekTo(ffwdrwd);
        }
        super.seekTo(pos);
    }
    

    And in my activity,

    videoView.setSeekListener(new SeekListener() {
    
            @Override
            public void onSeekTo(boolean ffwdrwd) {
                if(ffwdrwd)
                    //Movie Player - Seeking backward
                else
                    //Movie Player - Seeking forward                
            }
    
        });