YouTubePlayerFragment no funciona (Reproduciendo) en CollapsingToolbarLayout

YouTubePlayerFragment no funciona (Reproduciendo) en CollapsingToolbarLayout.

Quiero reproducir el video de youtube de youtube android api. Dentro de CollapsingToolbarLayout, YouTubePlayerFragment no se reproduce, sólo aparece la miniatura y después de 1 segundos se detiene.

Yo trabajo bien dentro de otro diseño. Quiero diseño material colapso diseño con video de youtube. Por favor, ayúdame.

<android.support.design.widget.CoordinatorLayout android:id="@+id/root_coordinator" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true"> <android.support.design.widget.AppBarLayout android:id="@+id/app_bar_layout" android:layout_width="match_parent" android:layout_height="wrap_content"> android:fitsSystemWindows="true"> <android.support.design.widget.CollapsingToolbarLayout android:id="@+id/collapsing_toolbar_layout" android:layout_width="match_parent" android:layout_height="wrap_content" app:contentScrim="?attr/colorPrimary" app:expandedTitleMarginEnd="64dp" app:expandedTitleMarginStart="48dp" app:layout_scrollFlags="scroll|exitUntilCollapsed"> <!--<ImageView android:id="@+id/image" android:layout_width="match_parent" android:layout_height="250dp" android:src="@drawable/ic_launcher" android:visibility="visible" app:layout_collapseMode="parallax" />--> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/layoutYoutube" android:layout_width="match_parent" android:layout_height="250dp" android:visibility="visible" app:layout_collapseMode="parallax"> <fragment android:id="@+id/youtube_fragment" android:name="com.google.android.youtube.player.YouTubePlayerFragment" android:layout_width="match_parent" android:layout_height="match_parent" /> </LinearLayout> <android.support.v7.widget.Toolbar android:id="@+id/app_bar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" app:layout_collapseMode="pin"> <include layout="@layout/toolbar_layout" android:layout_width="match_parent" android:layout_height="match_parent" /> </android.support.v7.widget.Toolbar> </android.support.design.widget.CollapsingToolbarLayout> </android.support.design.widget.AppBarLayout> <FrameLayout android:id="@+id/frameContainer" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginTop="1dp" android:background="@android:color/white" android:paddingTop="2dp" app:layout_behavior="@string/appbar_scrolling_view_behavior"> </FrameLayout> </android.support.design.widget.CoordinatorLayout> 

Hubiera sido útil si había publicado el código lógico o el código java y el registro de errores. Estoy publicando el código java, por favor, eche un vistazo a este uno podría trabajar para usted también …

 public class YoutubeActivity extends YouTubeBaseActivity implements YouTubePlayer.OnInitializedListener{ public static final String API_KEY = "xxxxxxxxxx"; public static final String VIDEO_ID = "xxxxxxx"; private YouTubePlayer youTubePlayer; private YouTubePlayerFragment youTubePlayerFragment; private TextView textVideoLog; private Button btnViewFullScreen; private static final int RQS_ErrorDialog = 1; private MyPlayerStateChangeListener myPlayerStateChangeListener; private MyPlaybackEventListener myPlaybackEventListener; String log = ""; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_youtube); youTubePlayerFragment = (YouTubePlayerFragment)getFragmentManager() .findFragmentById(R.id.youtubeplayerfragment); youTubePlayerFragment.initialize(API_KEY, this); textVideoLog = (TextView)findViewById(R.id.videolog); myPlayerStateChangeListener = new MyPlayerStateChangeListener(); myPlaybackEventListener = new MyPlaybackEventListener(); btnViewFullScreen = (Button)findViewById(R.id.btnviewfullscreen); btnViewFullScreen.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View arg0) { youTubePlayer.setFullscreen(true); }}); Button btnPlay = (Button) findViewById(R.id.btnplay); btnPlay.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if(youTubePlayer.isPlaying()) youTubePlayer.pause(); else youTubePlayer.play(); } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu_splash_menu, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); Log.e("id", id+""); switch(item.getItemId()){ case R.id.action_share: break; case 16908332: onBackPressed(); break; } return super.onOptionsItemSelected(item); } @Override public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer youtube, boolean b) { youTubePlayer = youtube; Toast.makeText(getApplicationContext(), "YouTubePlayer.onInitializationSuccess()", Toast.LENGTH_LONG).show(); youtube.setPlayerStateChangeListener(myPlayerStateChangeListener); youtube.setPlaybackEventListener(myPlaybackEventListener); if (!b) { youTubePlayer.cueVideo(VIDEO_ID); } } @Override public void onInitializationFailure(YouTubePlayer.Provider provider, YouTubeInitializationResult youTubeInitializationResult) { if (youTubeInitializationResult.isUserRecoverableError()) { youTubeInitializationResult.getErrorDialog(this, RQS_ErrorDialog).show(); } else { Toast.makeText(this,"YouTubePlayer.onInitializationFailure(): " + youTubeInitializationResult.toString(),Toast.LENGTH_LONG).show(); } } private final class MyPlayerStateChangeListener implements YouTubePlayer.PlayerStateChangeListener { private void updateLog(String prompt){ log += "MyPlayerStateChangeListener" + "\n" +prompt + "\n\n====="; textVideoLog.setText(log); }; @Override public void onAdStarted() { updateLog("onAdStarted()"); } @Override public void onError( com.google.android.youtube.player.YouTubePlayer.ErrorReason arg0) { updateLog("onError(): " + arg0.toString()); } @Override public void onLoaded(String arg0) { updateLog("onLoaded(): " + arg0); } @Override public void onLoading() { updateLog("onLoading()"); } @Override public void onVideoEnded() { updateLog("onVideoEnded()"); } @Override public void onVideoStarted() { updateLog("onVideoStarted()"); } } private final class MyPlaybackEventListener implements YouTubePlayer.PlaybackEventListener { private void updateLog(String prompt){ log += "MyPlaybackEventListener" + "\n-" + prompt + "\n\n====="; textVideoLog.setText(log); }; @Override public void onBuffering(boolean arg0) { updateLog("onBuffering(): " + String.valueOf(arg0)); } @Override public void onPaused() { updateLog("onPaused()"); } @Override public void onPlaying() { updateLog("onPlaying()"); } @Override public void onSeekTo(int arg0) { updateLog("onSeekTo(): " + String.valueOf(arg0)); } @Override public void onStopped() { updateLog("onStopped()"); } } 

La documentación oficial dice:

Tenga en cuenta que mientras se están reproduciendo videos, esta Vista tiene un tamaño mínimo de 200×110 dp. Si hace que la vista sea más pequeña, los videos se detendrán automáticamente. Además, no se permite superponer la vista de este fragmento con otras vistas mientras se reproduce un vídeo.

Así que no hay manera de llegar a trabajar YouTubePlayerFragment y YouTubePlayerView en CollapsingToolbarLayout.

PS: Si alguien logró hacerlo – compartir la solución. Tuve este mismo problema, pero no pude resolverlo.

  • Api de YouTube para la excepción android "service_missing"
  • Api de Android de Youtube muestra un error
  • Sube videos a Youtube mediante programación
  • Haciendo un perfecto reproductor Youtube de Chromeless en Android
  • Agrega la API de datos de YouTube a Android Studio
  • API de YouTube para Android: YouTubePlayerFragment loading spinner
  • YotubePlayerSupportFragment vista de pantalla completa en modo horizontal
  • No es capaz de recuperar buena calidad de vídeo url de youtube api en android appf
  • YouTubePlayerAPI ¿Agenda para la distribución?
  • YouTubePlayerView en un ScrollView
  • Pausa de vídeo con error "Superposición no autorizada"
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.