【问题标题】:How to implement event listeners for fast forward/rewind buttons in Android MediaController如何在 Android MediaController 中实现快进/快退按钮的事件监听器
【发布时间】:2013-12-10 16:19:30
【问题描述】:

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

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


        }
    });

【问题讨论】:

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


    【解决方案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                
            }
    
        });
    

    【讨论】:

      【解决方案2】:

      您不能为默认的MediaController 的快进或快退按钮设置点击监听器。特技播放功能是使用seekTo 实现的。您可以找到代码here。搜索mFfwdListener

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

      【讨论】:

      • 我找到了办法。检查我的答案。
      • 您可能已经找到了满足您需求的方法,但您没有找到按照您的要求进行操作的方法。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-28
      • 2011-08-28
      • 1970-01-01
      相关资源
      最近更新 更多