Представления, наложенные выше YouTubePlayerFragment или YouTubePlayerView в иерархии компоновки, приводят к тому, что воспроизведение приостанавливается немедленно - программирование
Подтвердить что ты не робот

Представления, наложенные выше YouTubePlayerFragment или YouTubePlayerView в иерархии компоновки, приводят к тому, что воспроизведение приостанавливается немедленно

Я использую API проигрывателя YouTube для Android и хочу наложить вид поверх YouTubePlayerFragment, чтобы отображать контекстную информацию и элементы управления над воспроизводимым видео.

К сожалению, кажется, что воспроизведение не работает должным образом ни в YouTubePlayerFragment ни в YouTubePlayerView когда есть один или несколько видов, размещенных над проигрывателем в иерархии макетов. Воспроизведение происходит менее чем за полсекунды, а затем немедленно останавливается.

Проблема может быть воспроизведена с помощью следующей схемы для демонстрации Simple PlayerFragment, поставляемой с SDK:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

  <fragment
      android:name="com.google.android.youtube.player.YouTubePlayerFragment"
      android:id="@+id/youtube_fragment"
      android:layout_width="match_parent"
      android:layout_height="match_parent"/>

  <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:textAppearance="@android:style/TextAppearance.Small"
      android:layout_alignParentTop="true"
      android:text="@string/playerfragment_text"/>

</RelativeLayout>

Я пробовал различные конфигурации макетов, используя и FrameLayout и RelativeLayout но проблема всегда FrameLayout и та же. Я понимаю, что этот API был выпущен как "экспериментальный", но если это известная проблема, он является довольно серьезным препятствием для многих реализаций. У кого-нибудь есть хорошее решение или обходной путь?

4b9b3361

Ответ 1

Джефф - это работает так, как было разработано. Наложения поверх любого из наших игроков YouTube (включая плеер YouTube для Android) не поддерживаются. Когда обнаружено оверлей, воспроизведение останавливается, и журнал содержит информацию, полезную при отладке проблемы. Мы поддерживаем оверлей Action Bar, посмотрим на эту демонстрацию, чтобы узнать больше: https://developers.google.com/youtube/android/player/sample-applications#Overlay_ActionBar_Demo.

Ответ 2

Youtube Player не позволяет просматривать его. Просто используя setVisibility (View.GONE) для всех видов наложения.

Ответ 3

Невозможно добавить кнопки в качестве надписей над игроком, как указано Google, иначе игрок остановится:

https://developers.google.com/youtube/android/player/reference/com/google/android/youtube/player/YouTubePlayerView

Обратите внимание, что во время воспроизведения видео этот вид имеет минимальный размер 200x110 дп. Если вы сделаете вид меньше, видео автоматически прекратить воспроизведение. Кроме того, не разрешается накладывать просмотр с другими видами во время воспроизведения видео.

Это представление не поддерживает дополнение. Чтобы добиться такого же эффекта, оберните представление в другой группе ViewGroup или присвоение ей полей.

Заполнение также не поддерживается на YouTubePlayer.

Чтобы наложить ваше мнение на видео, я рекомендую вам использовать ExoPlayer, Это не часть sdk для Android, но она рекомендована google и включена в документацию разработчика Android:

http://google.github.io/ExoPlayer/

Также полезно отметить, что Exoplayer используется в приложении youtube.

Ответ 4

Вы можете установить тему плеера на YouTubePlayer.PlayerStyle.CHROMELESS, а затем реализовать свои собственные элементы управления ниже.

У меня возникла проблема, когда я не могу найти хороший ресурс о том, как повторно реализовать строку поиска с пользовательским макетом.

Ответ 5

Волла!! У меня есть один сценарий, когда эта проблема возникала в устройствах lollipop и выше, и это было из-за строки состояния. Я скрываю проблему с баром состояния. Просто написал это как ответ, если он помогает другим:)