如何在Android MediaController中实现快进/快退按钮的事件侦听器

时间:2013-12-09 09:40:40

标签: java android android-mediaplayer android-video-player

这是我的自定义媒体控制器。我想为快进和快退按钮添加监听器。我可以为上一个/下一个视频添加监听器。但不是这些按钮。任何人都可以指出一个参考或提出如何实现它的想法吗?

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();
}

}

上一个/下一个按钮的听众

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


        }
    });

2 个答案:

答案 0 :(得分:1)

通过添加自定义VideoView找到了一种方法。通过覆盖seekTo()方法添加条件。

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

在我的活动中,

videoView.setSeekListener(new SeekListener() {

        @Override
        public void onSeekTo(boolean ffwdrwd) {
            if(ffwdrwd)
                //Movie Player - Seeking backward
            else
                //Movie Player - Seeking forward                
        }

    });

答案 1 :(得分:0)

您无法为默认MediaController的快进或快退按钮设置on click侦听器。使用seekTo天真地实现了特技播放功能。您可以找到代码here。搜索mFfwdListener

如果你考虑一下,他们必须让用户提供下一个/之前的实现(除非他们也要实现整个播放列表)。我猜他们认为如果你想要比天真的实现更好的东西,你不会介意为它设置一个简单的UI。