YouTubePlayer(View) продолжает останавливаться в альбомной ориентации

Я создаю приложение, которое содержит YouTubePlayerView и YouTubePlayer, оно хорошо работает в книжном, полноэкранном режиме, но не в альбомной. Он останавливается каждую секунду после нажатия кнопки воспроизведения. Буфер показывает, что он полностью загружен в некоторых видео, но он продолжает останавливаться. Я протестировал его на Android 2.2.2 и Android 4.1.2 с последней версией приложения YouTube. Это происходит во всех стилях игрока.

Заранее спасибо.

2 ответа

Решение

Убедитесь, что размер представления YoutubePlayer составляет не менее 200x110 dp, как описано в документации по API YouTube. Похоже, что он не отвечает этим требованиям в ландшафтном режиме.

Я столкнулся с теми же проблемами. но я просто использую концепцию ниже, это будет работать для меня.

  1. Возьмите линейный макет в вашем макете деятельности XML.
    <LinearLayout android:id="@+id/ll_youtube_player"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:layout_marginLeft="@dimen/_55sdp"
    android:layout_marginStart="@dimen/_55sdp"
    android:layout_marginRight="@dimen/_55sdp"
    android:layout_marginEnd="@dimen/_55sdp"
    android:orientation="vertical"
    />
  1. Возьмите макет, в котором проигрыватель YouTube будет определять layout_youtube_video_view_detail.xml.
    <com.google.android.youtube.player.YouTubePlayerView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/you_tube_player_view" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:orientation="vertical"/>
  1. В вашей деятельности внутри onCreate() накачайте youtube xml и добавьте в свой макет код:

LinearLayout llYoutubePlayer = (LinearLayout)findViewById(R.id.ll_youtube_player); youTubePlayerView = (YouTubePlayerView) getLayoutInflater().inflate(R.layout.layout_youtube_video_view_detail, null); llYoutubePlayer.addView(youTubePlayerView); youTubePlayerView = (YouTubePlayerView) findViewById(R.id.you_tube_player_view); youTubePlayerView.initialize(AppConstants.YOU_TUBE_API_KEY, this);

  1. в вашем onInitializationSuccess, пожалуйста, передайте идентификатор видео.

@Override public void onInitializationSuccess(Provider provider, YouTubePlayer player, boolean wasRestored) { player.setPlayerStateChangeListener(playerStateChangeListener); /** Start buffering **/ if (!wasRestored) { player.loadVideo(videoId); } new Handler().postDelayed(new Runnable() { @Override public void run() { youTubePlayerView.refreshDrawableState(); } }, AppConstants.DELAY_500); }

Я надеюсь, что это сработает.

Другие вопросы по тегам