Frage

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");


        }
    });
War es hilfreich?

Lösung

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                
        }

    });

Andere Tipps

You cannot set the on click listeners for the default MediaController's fast-forward or rewind buttons. The trickplay functionality is implemented naively using seekTo. You can find the code here. Search for mFfwdListener.

If you think about it, they have to let the user provide next/previous implementations (unless they were to implement the whole playlist, also). I guess they figure if you want something better than a naive implementation, you won't mind setting up a simple UI for it.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top