VideoView: полноэкранный режим при двойном касании

По сути, то, что я хочу сделать в своем приложении, - это отображать видео.

Лучшим инструментом для достижения этой цели является VideoView.

Поэтому я использовал этот код:

<VideoView android:id="@+id/videoview" android:layout_width="50dip" android:layout_height="50dip"></VideoView>

и в моей деятельности:

 VideoView videoHolder = (VideoView)findViewById(R.id.videoview);
 videoHolder.setMediaController(new MediaController(this));
 videoHolder.setVideoURI(Uri.parse("android.resource://com.blabla.blabla/" + R.raw.blabla));
 videoHolder.requestFocus(); 
 videoHolder.start(); 

и это делает свое дело.

К сожалению, я ожидал, что предварительный просмотр (миниатюра) видео в моем макете по умолчанию

Итак, я удалил videoHolder.start(); команда, но я могу получить только черный экран. Видео запускается при нажатии на невидимую зону...

Первый вопрос

Возможно ли отобразить предварительный просмотр видео в VideoView перед его запуском?

Второй вопрос

Я хотел бы отображать видео в полноэкранном режиме при двойном нажатии на веб-просмотр. Как мне этого добиться?

Большое спасибо за любую помощь / ссылку / предложение


person Waza_Be    schedule 12.04.2011    source источник
comment
можете ли вы поймать двойной щелчок на веб-просмотре и начать новое действие в полноэкранном режиме?   -  person Ian    schedule 13.04.2011


Ответы (2)


Да, вы можете получить миниатюры видео с помощью ThumbnailUtils:

Bitmap thumb = ThumbnailUtils.createVideoThumbnail(path,
    MediaStore.Images.Thumbnails.MINI_KIND);

Я действительно не видел, чтобы приложения переключались в полноэкранный режим раньше. На самом деле я не уверен, что это можно сделать (особенно для VideoView). Однако вам может повезти с одним из этих методов:

  1. Удержание VideoView в FrameLayout, а затем изменение параметров макета.
  2. Наложение VideoView через Window#addContentView.
  3. Скрытие (через Visibility.GONE) ваших других представлений и разрешение VideoView расширять область макета.
person Matthew Willis    schedule 12.04.2011
comment
Кажется, у меня та же проблема, что и у этого вопроса: > stackoverflow.com/questions/5321853/ Эта ошибка также описана после вашего собственного ответа (который я должен был прочитать раньше, лол), отправленного пользователем 555806: stackoverflow.com/questions/5233317/ Не удается получить миниатюру.. Я попытаюсь разобраться.. - person Waza_Be; 12.04.2011
comment
Вы должны ориентироваться на Android-8 (Froyo) или более позднюю версию, чтобы получить доступ к этому классу. - person Matthew Willis; 12.04.2011

В качестве альтернативы вы можете использовать VideoView.seekTo(миллисекунды), скажем, 1 секунду (1000 миллисекунд). При условии, что видеоклип через 1 секунду действительно имеет изображение, например, некоторые видео начинаются с пустого экрана, а затем «исчезновение» (отсутствие лучшего слова) к сцене чаще дает вам черный экран с 1 секундой. Вы можете вызвать это в VideoView.onPrepared(). Этот я использую, когда видео находится на веб-сервере.

person vinceville    schedule 09.08.2011