机器人:onSeekCompleteListener与VideoView [英] android: onSeekCompleteListener with VideoView

查看:449
本文介绍了机器人:onSeekCompleteListener与VideoView的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用VideoView播放视频文件。我使用seekTo功能才能发挥从那里已经离开的视频。但是,我想,当搜索操作完成后做一些操作。为此,我需要用onSeekCompleteListener;然而,onSeekCompleteListener不支持VideoView;它可以用于MediaPlayer的。我的问题是,有什么办法通过它我可以使用onSeekCompleteListener与VideoView?

非常感谢

解决方案

 公共类ObservableVideoView扩展VideoView
{

私人IVideoViewActionListener mVideoViewListener;
私人布尔mIsOnPauseMode = FALSE;

公共接口IVideoViewActionListener
{
    无效的onPause();
    无效onResume();
    无效onTimeBarSeekChanged(INT currentTime的);
}

公共无效setVideoViewListener(IVideoViewActionListener监听器)
{
    mVideoViewListener =侦听器;
}

@覆盖
公共无效暂停()
{
    super.pause();

    如果(mVideoViewListener!= NULL)
    {
        mVideoViewListener.onPause();
    }

    mIsOnPauseMode =真;
}

@覆盖
公共无效启动()
{
    super.start();

    如果(mIsOnPauseMode)
    {
        如果(mVideoViewListener!= NULL)
        {
            mVideoViewListener.onResume();
        }

        mIsOnPauseMode = FALSE;
    }
}

@覆盖
公共无效seekTo(INT毫秒)
{
    super.seekTo(毫秒);

    如果(mVideoViewListener!= NULL)
    {
        mVideoViewListener.onTimeBarSeekChanged(毫秒);
    }
}

公共ObservableVideoView(上下文的背景下,ATTRS的AttributeSet)
{
    超(背景下,ATTRS);
}

公共ObservableVideoView(上下文的背景下)
{
    超(上下文);
}

公共ObservableVideoView(上下文的背景下,ATTRS的AttributeSet,INT defStyle)
{
    超(背景下,ATTRS,defStyle);
}
 

}

您可以侦听这样的事件:

 公共类VideoPlayerActivity扩展活动
{
公共静态最后弦乐VIDEO_URL =VideoUrl;
私人字符串路径=;
私人ObservableVideoView mVideoView;

@覆盖
公共无效的onCreate(包冰柱)
{
    super.onCreate(冰柱);
    的setContentView(R.layout.video_player_activity_layout);
    mVideoView =(ObservableVideoView)findViewById(R.id.videoView1);
    mVideoView.setMediaController(新的MediaController(本));
    mVideoView.setVideoViewListener(mVideoViewListener);


    PATH = getIntent()getStringExtra(VIDEO_URL)。
    如果(路径==)
    {
        Toast.makeText(这一点,请编辑VideoViewDemo活动,并设置路径+变到你的媒体文件的网址/路径,Toast.LENGTH_LONG)
                。显示();
    }
    其他
    {
        mVideoView.setVideoPath(路径);
        mVideoView.requestFocus();
        mVideoView.start();
    }
}

私人IVideoViewActionListener mVideoViewListener =新IVideoViewActionListener()
{
    @覆盖
    公共无效onTimeBarSeekChanged(INT currentTime的)
    {
        // TODO你想要什么
    }

    @覆盖
    公共无效onResume()
    {
        // TODO你想要什么
    }

    @覆盖
    公共无效的onPause()
    {
        // TODO你想要什么
    }
};
 

}

I am using VideoView to play video files. I am using seekTo function in order to play the video from where it has been left off. However, I wanted to do some operations when the seek operation is finished. For that I need to use onSeekCompleteListener; however, onSeekCompleteListener is not supported with VideoView; it can be used with MediaPlayer. My Question is that "is there any way by which I can use onSeekCompleteListener" with VideoView?

Thanks alot

解决方案

public class ObservableVideoView extends VideoView
{

private IVideoViewActionListener mVideoViewListener;
private boolean mIsOnPauseMode = false;

public interface IVideoViewActionListener
{
    void onPause();
    void onResume();
    void onTimeBarSeekChanged(int currentTime);
}

public void setVideoViewListener(IVideoViewActionListener listener)
{
    mVideoViewListener = listener;
}

@Override
public void pause()
{
    super.pause();

    if (mVideoViewListener != null)
    {
        mVideoViewListener.onPause();
    }

    mIsOnPauseMode = true;
}

@Override
public void start()
{
    super.start();

    if (mIsOnPauseMode)
    {
        if (mVideoViewListener != null)
        {
            mVideoViewListener.onResume();
        }

        mIsOnPauseMode = false;
    }
}

@Override
public void seekTo(int msec)
{
    super.seekTo(msec);

    if (mVideoViewListener != null)
    {
        mVideoViewListener.onTimeBarSeekChanged(msec);
    }
}

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

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

public ObservableVideoView(Context context, AttributeSet attrs, int defStyle) 
{
    super(context, attrs, defStyle);
}

}

you can listen for events like this:

public class VideoPlayerActivity extends Activity
{
public static final String VIDEO_URL = "VideoUrl";
private String path = "";
private ObservableVideoView mVideoView;

@Override
public void onCreate(Bundle icicle)
{
    super.onCreate(icicle);
    setContentView(R.layout.video_player_activity_layout);
    mVideoView = (ObservableVideoView) findViewById(R.id.videoView1);
    mVideoView.setMediaController(new MediaController(this));
    mVideoView.setVideoViewListener(mVideoViewListener);


    path = getIntent().getStringExtra(VIDEO_URL);       
    if (path == "")
    {
        Toast.makeText(this, "Please edit VideoViewDemo Activity, and set path" + " variable to your media file URL/path", Toast.LENGTH_LONG)
                .show();
    }
    else
    {   
        mVideoView.setVideoPath(path);
        mVideoView.requestFocus();
        mVideoView.start();
    }
}

private IVideoViewActionListener mVideoViewListener = new IVideoViewActionListener()
{
    @Override
    public void onTimeBarSeekChanged(int currentTime)
    {
        //TODO what you want
    }

    @Override
    public void onResume()
    {
        //TODO what you want
    }

    @Override
    public void onPause()
    {
        //TODO what you want
    }
};

}

这篇关于机器人:onSeekCompleteListener与VideoView的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆