Intereting Posts

VideoView не воспроизводится Видео из желаемой позиции

Я использую VideoView и поиск в баре, но когда я ищуTo (..) в желаемой позиции через seekBar, он воспроизводит видео с начала.

Я пробовал этот код:

  Public void onProgressChanged (SeekBar seekBar, int progress, boolean fromTouch) {

            mVideoView.seekTo (прогресс);
 }

Solutions Collecting From Web of "VideoView не воспроизводится Видео из желаемой позиции"

VideoView не имеет OnSeekCompleteListener() но вы можете получить доступ к MediaPlayer из метода VideoView а затем установить OnSeekCompleteListener , например:

 mVideoView.setOnPreparedListener(new OnPreparedListener() { @Override public void onPrepared(MediaPlayer mp) { mp.setOnSeekCompleteListener(new OnSeekCompleteListener() { @Override public void onSeekComplete(MediaPlayer mp) { //TODO: Your code here } }); } }); 

Вызов VideoView.seekTo() является оберткой вокруг MediaPlayer.seekTo() . Эта функция возвращается почти сразу, даже если фактический поиск все еще выполняется. Поэтому вы хотите дождаться, когда захотите завершить работу через MediaPlayer.OnSeekCompleteListener .

Однако, как отметил Рено, стандартный VideoView не поддерживает OnSeekCompleteListener .

Но вы можете скопировать и локально настроить класс VideoView чтобы добавить эту поддержку самостоятельно.

Сначала начните с копии VideoView.java . Или вы можете клонировать все рамки / базовое репо, но предупреждать, что для загрузки требуется более одного гигабайта данных.

Скопируйте VideoView.java в проект Android Eclipse и он начнет строить, но не сработает. Вот что я сделал, чтобы собрать его:

  1. Обновите оператор пакета в соответствии с вашим проектом.
  2. Прокомментируйте ссылки на MetaData . Исправить это в моем списке задач. Их необходимо заменить вызовами MediaMetadataRetriever .
  3. Замените mContext на вызовы getBaseContext()

Теперь вы готовы добавить код для OnSeekCompleteListener . Реализация аналогична реализации других слушателей, то есть OnCompletionListener .

 public class VideoView extends SurfaceView implements MediaPlayerControl { // The client's listener which is the notification callback. private OnSeekCompleteListener mOnSeekCompleteListener; // Set up MediaPlayer to forward notifications to client. private MediaPlayer.OnSeekCompleteListener mSeekCompleteListener = new MediaPlayer.OnSeekCompleteListener() { public void onSeekComplete(MediaPlayer mp) { if (mOnCompletionListener != null) { mOnCompletionListener.onCompletion(mMediaPlayer); } } }; // API for client to set their listener. public void setOnSeekCompleteListener(OnSeekCompleteListener l) { mOnSeekCompleteListener = l; } } 

Наконец, обновите свой собственный код:

  1. Обновите ссылки на android.widget.VideoView чтобы использовать свой настраиваемый VideoView .
  2. Внедрите слушателя и установите его, вызвав setOnSeekCompleteListener() .

Теперь ваш код получает уведомления, когда поиск действительно завершен, и затем он может выполнять последующие запросы.

Вы должны дождаться завершения поиска, к сожалению, у VideoView нет OnSeekCompleteListener() (почему Google? -_-)