Воспроизведение подраздела видео в 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.