Воспроизведение подраздела видео в android

В андроиде у меня есть видео длиной в 3 минуты. У меня три кнопки. При первом нажатии кнопки я хочу только 1-го минут воспроизведения видео. На второй кнопке нажмите только с 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();
 }
 });

Но он воспроизводил видео с данного времени до конца. Есть ли другой способ сделать это.

1 ответ

Хорошо, вам просто нужно создать класс 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 ;)
 } 

}
</void,void,void>

После этого execute асинхронный вызов каждый раз при нажатии кнопки.

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

Аналогично добавьте в другие кнопки. Внесите изменения в код в соответствии с вашими потребностями. Надеюсь, поможет. Приветствия. :)

licensed under cc by-sa 3.0 with attribution.