在android中播放视频片段

在android中播放视频片段,android,video,android-videoview,Android,Video,Android Videoview,在安卓系统中,我有一个3分钟长的视频。我有三个按钮。 在第一个按钮上单击“我只想播放第一分钟的视频”。 在第二个按钮上,仅从第1分钟到第2分钟单击视频播放 在第三个按钮上单击视频的其余部分 单击的顺序可以更改。有可能吗 我使用了下面的代码 videoPlayer = (VideoView) findViewById(R.id.videoPlayer); videoPlayer.setOnPreparedListener(this); videoPlayer.setOnCom

在安卓系统中,我有一个3分钟长的视频。我有三个按钮。 在第一个按钮上单击“我只想播放第一分钟的视频”。 在第二个按钮上,仅从第1分钟到第2分钟单击视频播放 在第三个按钮上单击视频的其余部分

单击的顺序可以更改。有可能吗

我使用了下面的代码

videoPlayer = (VideoView) findViewById(R.id.videoPlayer);   
    videoPlayer.setOnPreparedListener(this);
    videoPlayer.setOnCompletionListener(this);
    videoPlayer.setKeepScreenOn(true);    
  //  videoPlayer.setVideoPath(root + "/" + pathToFile);
   // ResourceUtil.setVideo(videoPlayer,"cbse_g08_s01_l01_t01_sc11");
    videoPlayer.setVideoPath(ResourceUtil.getResourceFilePath("cbse_g08_s02_l16_t01_03a",
            MSConstants.RESOURCE_TYPE_VIDEO));


    leftButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
             Log.i("arv", "click"+"left"+videoPlayer.getDuration());
            //if(videoPlayer.canSeekBackward()())
                videoPlayer.seekTo(videoPlayer.getDuration());
            videoPlayer.start();
        }
    });

    midButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
             Log.i("arv", "click"+"mid"+videoPlayer.getCurrentPosition());
             //if(videoPlayer.canSeekForward())
                 videoPlayer.seekTo(videoPlayer.getDuration()/5);
                videoPlayer.start();
        }
    });

    rightButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
             Log.i("arv", "click"+"right");
            //if(videoPlayer.canSeekForward()) 
                videoPlayer.seekTo(videoPlayer.getDuration()/10);
            videoPlayer.start();
        }
    });
但它从给定的时间到最后播放视频。
还有别的办法吗

好的,您只需创建一个
Async
类,并在运行时处理持续时间。只要达到所需的持续时间,循环就完成,视频暂停。在这里尝试一下这段代码,它具有根据需要暂停视频的基本功能

private class Preview extends AsyncTask<Void,Void,Void> {       

    @Override
    protected void onPreExecute(){                  

        //handle any code if u want here
    }


    protected Void doInBackground(Void... params) {
        //leftButton,rightButton,midButton are booleans you have to make
                    if(leftButton){
                        while(videoPlayer.getCurrentPosition() < videoPlayer.getDuration()/5 )
                          Log.d("!@!@","in loop1");                 
                    }
                    if(midButton){
                        while(videoPlayer.getCurrentPosition() < videoPlayer.getDuration()/10 )
                          Log.d("!@!@","in loop2");                 
                    }
                    if(rightButton){
                        while(videoPlayer.getCurrentPosition() < videoPlayer.getDuration() )
                          Log.d("!@!@","in loop3");                 
                    }

        return null;
    }

    @Override       
    protected void onPostExecute(Void v) {
        /**Can pause or stop the videoview/mediaplayer as per your need*/

        videoPlayer.pause();  // <= this is the key ;)
    }       

}

类似地,附加在其他按钮中。根据需要对代码进行更改。希望能有帮助。干杯。:)

在每次播放按钮时…需要一些暂停(我想是加载时间)来播放。如何删除此播放暂停。
leftButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
         Log.i("arv", "click"+"left"+videoPlayer.getDuration());
        //if(videoPlayer.canSeekBackward()())
            videoPlayer.seekTo(videoPlayer.getDuration());
        videoPlayer.start();

        leftButton=true; // <= boolean to be set 
        new Preview().execute(); // <= start Async
    }
});