简体   繁体   English

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

[英]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");


        }
    });

Found a way myself by adding custom VideoView . 通过添加自定义VideoView自己找到了一种方法。 Added condition by overriding seekTo() method. 通过覆盖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);
}

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                
        }

    });

You cannot set the on click listeners for the default MediaController 's fast-forward or rewind buttons. 您不能为默认MediaController的快进或快退按钮设置点击监听器。 The trickplay functionality is implemented naively using seekTo . 特技播放功能是使用seekTo天真的seekTo You can find the code here . 您可以在此处找到代码。 Search for mFfwdListener . 搜索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. 我想他们会想,如果您想要比天真的实现更好的东西,则不介意为此设置简单的UI。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM