Android 如何使用seekBar或进度条控制的videoview播放视频?

Android 如何使用seekBar或进度条控制的videoview播放视频?,android,android-videoview,seekbar,Android,Android Videoview,Seekbar,搜索了几个小时后,我问了这个问题,欢迎提供相关答案 我在我的R.raw文件夹中有一个视频,我同时在两个视频视图中播放,持续时间相同,这是我的代码 sb = (SeekBar)findViewById(R.id.control_seekbar); mVideoView1 = (VideoView) findViewById(R.id.surface_view1); mVideoView1.setVideoPath("android.resource://" + ge

搜索了几个小时后,我问了这个问题,欢迎提供相关答案

我在我的R.raw文件夹中有一个视频,我同时在两个视频视图中播放,持续时间相同,这是我的代码

     sb = (SeekBar)findViewById(R.id.control_seekbar);

     mVideoView1 = (VideoView) findViewById(R.id.surface_view1);
     mVideoView1.setVideoPath("android.resource://" + getPackageName() +"/"+R.raw.play1);              
     mVideoView1.start();

     mVideoView2 = (VideoView) findViewById(R.id.surface_view2);
     mVideoView2.setVideoPath("android.resource://" + getPackageName() +"/"+R.raw.play2);              
     mVideoView2.start();

     v1 = mVideoView1.getDuration();
     v2 = mVideoView2.getDuration();

     mVideoView1.setOnPreparedListener(new OnPreparedListener() 
     {
        @Override
        public void onPrepared(MediaPlayer arg0) 
        {
            sb.setMax(mVideoView1.getDuration()+3);
            sb.postDelayed(onEverySecond, 60);
        }
     });

     sb.setOnSeekBarChangeListener(new OnSeekBarChangeListener() 
     {  
        @Override
        public void onStopTrackingTouch(SeekBar seekBar) 
        {
            mVideoView1.seekTo(sb.getProgress());
            mVideoView2.seekTo(sb.getProgress());
        }

        @Override
        public void onStartTrackingTouch(SeekBar seekBar) 
        {
            mVideoView1.seekTo(sb.getProgress());
            mVideoView2.seekTo(sb.getProgress());
        }

        @Override
        public void onProgressChanged(SeekBar seekBar, int progress,boolean fromUser) 
        {
            mVideoView1.seekTo(progress);
            mVideoView2.seekTo(progress);
        }

    });

   }

   private Runnable onEverySecond=new Runnable() 
   {
        @Override
        public void run() 
        {
            if(sb != null) 
            {
                sb.setProgress(mVideoView1.getCurrentPosition());
            }

            if(mVideoView1.isPlaying()) 
            {
                sb.postDelayed(onEverySecond, 1000);
                if(mVideoView1.getDuration() <= sb.getProgress())
                {
                    mVideoView1.seekTo(0);
                    mVideoView2.seekTo(0);
                }
            }
        }
    };
sb=(SeekBar)findViewById(R.id.control\u SeekBar);
mVideoView1=(VideoView)findviewbyd(R.id.surface\u view1);
mVideoView1.setVideoPath(“android.resource://”+getPackageName()+“/”+R.raw.play1);
mVideoView1.start();
mVideoView2=(VideoView)findviewbyd(R.id.surface_view2);
mVideoView2.setVideoPath(“android.resource://”+getPackageName()+“/”+R.raw.play2);
mVideoView2.start();
v1=mVideoView1.getDuration();
v2=mVideoView2.getDuration();
mVideoView1.setOnPreparedListener(新的OnPreparedListener()
{
@凌驾
已准备好公开作废(MediaPlayer arg0)
{
sb.setMax(mVideoView1.getDuration()+3);
某人迟到(每秒钟一次,60);
}
});
sb.setonseekbarchaneglistener(新的onseekbarchaneglistener()
{  
@凌驾
TopTrackingTouch(SeekBar SeekBar)上的公共无效
{
mVideoView1.seekTo(sb.getProgress());
mVideoView2.seekTo(sb.getProgress());
}
@凌驾
开始跟踪触摸时的公共无效(SeekBar SeekBar)
{
mVideoView1.seekTo(sb.getProgress());
mVideoView2.seekTo(sb.getProgress());
}
@凌驾
public void onProgressChanged(SeekBar-SeekBar、int-progress、boolean-fromUser)
{
mVideoView1.seekTo(进度);
mVideoView2.seekTo(进度);
}
});
}
private Runnable onEverySecond=new Runnable()
{
@凌驾
公开募捐
{
如果(sb!=null)
{
sb.setProgress(mVideoView1.getCurrentPosition());
}
如果(mVideoView1.isPlaying())
{
被延迟的某人(千分之一秒);

如果(mVideoView1.getDuration()如果您不想最初播放视频,则无需在onCreate()中调用start 单击播放按钮时调用它


希望这对您有所帮助。

您必须在视频视图中安装媒体控制器

MediaController mediaController = new MediaController(context);
myVideoView.setMediaController(mediaController).

现在,当您单击视频播放时,将显示暂停按钮。

但是除了seekbar之外,我没有任何按钮可以播放、暂停或继续……但是我可以为这两个视频设置相同的mediacontroller吗?我尝试过,但无法为这两个视频设置。嗯……为什么不呢?您尝试过制作两个不同的MediaCo实例吗然后在一个视频视图中添加一个MediaController,在另一个视频视图中添加另一个MediaController?哦,对不起,现在我明白了,我没有真正理解你的评论。你可以尝试在两个视频视图上设置相同的控制器。但是,你可以同时启动和停止视频。你不能单独控制每个视频视图。是的,我不需要单独控制两个视频视图。两个视频的持续时间相同,我想使用相同的mediacontroller控制两个视频,但当我为两个视频视图设置时,只有使用MC设置的后一个视频视图工作,而前一个视频视图没有响应。啊,好的,我明白了。嗯,也许这不太容易。您必须为此编写一个自定义解决方案。可能需要扩展MediaController类并重写在其中播放/暂停两个视频视图的onPlay、onPause方法。