Android YouTube api v3 – orientación

Obtener una muestra de actividad en marcha utilizando YouTubeBaseActivity, YouTubePlayerView y YouTubePlayer fue bastante simple. Tengo problemas con la orientación y no puedo encontrar ninguna documentación o código de ejemplo. Cuando cambio mientras se está reproduciendo un video, la pantalla está en blanco.

¿Cuáles son las cosas correctas que hacer en cada uno de onCreate (), onPause (), onSaveInstanceState () y onRestoreInstanceState () para que el video continúe reproduciendo?

Gracias

Variables

@SuppressLint("InlinedApi") private static final int PORTRAIT_ORIENTATION = Build.VERSION.SDK_INT < 9 ? ActivityInfo.SCREEN_ORIENTATION_PORTRAIT : ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT; @SuppressLint("InlinedApi") private static final int LANDSCAPE_ORIENTATION = Build.VERSION.SDK_INT < 9 ? ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE : ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE; private YouTubePlayer mPlayer = null; private boolean mAutoRotation = false; 

Sobre crecer

 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mAutoRotation = Settings.System.getInt(getContentResolver(), Settings.System.ACCELEROMETER_ROTATION, 0) == 1; } 

Implementar OnInitializedListener

 @Override public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer player, boolean wasRestored) { mPlayer = player; player.setOnFullscreenListener(this); if (mAutoRotation) { player.addFullscreenControlFlag(YouTubePlayer.FULLSCREEN_FLAG_CONTROL_ORIENTATION | YouTubePlayer.FULLSCREEN_FLAG_CONTROL_SYSTEM_UI | YouTubePlayer.FULLSCREEN_FLAG_ALWAYS_FULLSCREEN_IN_LANDSCAPE | YouTubePlayer.FULLSCREEN_FLAG_CUSTOM_LAYOUT); } else { player.addFullscreenControlFlag(YouTubePlayer.FULLSCREEN_FLAG_CONTROL_ORIENTATION | YouTubePlayer.FULLSCREEN_FLAG_CONTROL_SYSTEM_UI | YouTubePlayer.FULLSCREEN_FLAG_CUSTOM_LAYOUT); } } 

Inplement onConfigurationChanged

 @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) { if (mPlayer != null) mPlayer.setFullscreen(true); } if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) { if (mPlayer != null) mPlayer.setFullscreen(false); } } @Override public void onFullscreen(boolean fullsize) { if (fullsize) { setRequestedOrientation(LANDSCAPE_ORIENTATION); } else { setRequestedOrientation(PORTRAIT_ORIENTATION); } } 

Menifest

  <activity android:name="com.sample.android.YouTubePlayerActivity" android:configChanges="keyboardHidden|orientation|screenSize" android:screenOrientation="sensor" android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen" > </activity> 

He realizado una actividad de muestra que utiliza la API más reciente de youtube.

Esta fuente maneja " Problema de orientación ", " Problema de volumen de medios ", " Problema de análisis de URL de YouTube "

  1. Aquí está el proyecto git para la aplicación de ejemplo

    https://github.com/TheFinestArtist/YouTubePlayerActivity

  2. También he hecho una aplicación de ejemplo que puedes descargar

    https://play.google.com/store/apps/details?id=com.thefinestartist.ytpa.sample

Dejar esto aquí para otros. La respuesta de la mejor artista funcionó para mí también, pero como estoy usando un reproductor de video dentro de un fragmento y tengo que apoyar AppCompatLibrary también, he aquí lo que pude conseguir trabajando:

YouTubePlayerActivityFragment.java

 public class YouTubePlayerActivityFragment extends YouTubePlayerSupportFragment implements YouTubePlayer.OnFullscreenListener { @SuppressLint("InlinedApi") private static final int PORTRAIT_ORIENTATION = Build.VERSION.SDK_INT < 9 ? ActivityInfo.SCREEN_ORIENTATION_PORTRAIT : ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT; @SuppressLint("InlinedApi") private static final int LANDSCAPE_ORIENTATION = Build.VERSION.SDK_INT < 9 ? ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE : ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE; private YouTubePlayer.OnFullscreenListener fullScreenListener = null; private YouTubePlayer yPlayer = null; private boolean mAutoRotation = false; public static YouTubePlayerActivityFragment newInstance(String videoID, String apiKey) { YouTubePlayerActivityFragment fragment = new YouTubePlayerActivityFragment(); Bundle bundle = new Bundle(); bundle.putString("video_id", videoID); bundle.putString("api_key", apiKey); fragment.setArguments(bundle); fragment.init(); return fragment; } public YouTubePlayerActivityFragment() { } @Override public void onCreate(Bundle var1) { super.onCreate(var1); mAutoRotation = Settings.System.getInt(getActivity().getContentResolver(), Settings.System.ACCELEROMETER_ROTATION, 0) == 1; fullScreenListener = this; } private void init() { initialize(getArguments().getString("api_key"), new YouTubePlayer.OnInitializedListener() { @Override public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer youTubePlayer, boolean wasRestored) { yPlayer = youTubePlayer; youTubePlayer.setOnFullscreenListener(fullScreenListener); if (mAutoRotation) { youTubePlayer.addFullscreenControlFlag(YouTubePlayer.FULLSCREEN_FLAG_CONTROL_ORIENTATION | YouTubePlayer.FULLSCREEN_FLAG_CONTROL_SYSTEM_UI | YouTubePlayer.FULLSCREEN_FLAG_ALWAYS_FULLSCREEN_IN_LANDSCAPE | YouTubePlayer.FULLSCREEN_FLAG_CUSTOM_LAYOUT); } else { youTubePlayer.addFullscreenControlFlag(YouTubePlayer.FULLSCREEN_FLAG_CONTROL_ORIENTATION | YouTubePlayer.FULLSCREEN_FLAG_CONTROL_SYSTEM_UI | YouTubePlayer.FULLSCREEN_FLAG_CUSTOM_LAYOUT); } if (!wasRestored) { yPlayer.loadVideo(getArguments().getString("video_id")); } } @Override public void onInitializationFailure(YouTubePlayer.Provider provider, YouTubeInitializationResult youTubeInitializationResult) { } }); } @Override public void onFullscreen(boolean isFullSize) { if (isFullSize) { getActivity().setRequestedOrientation(LANDSCAPE_ORIENTATION); } else { getActivity().setRequestedOrientation(PORTRAIT_ORIENTATION); } } 
  • Error al ejecutar 'postMessage' en el mensaje 'DOMWindow' en Android
  • Ejecución de una aplicación de Android en la parte superior de la pantalla de bloqueo
  • Reproducir Youtube HTML5 incrustado de vídeo en Android WebView
  • Youtube iframe player no mostrará videos en android 4.x WebView
  • Permiso de la API de Youtube 403 Error prohibido
  • Analizar una miniatura de YouTube en un iframe con Jsoup
  • Reproduce youtube / vimeo vídeo incrustado en HTML en Android WebView
  • ¿Cómo se juega a los videos MP4 de Youtube?
  • Intención de youtube app profile / channel
  • Haciendo un perfecto reproductor Youtube de Chromeless en Android
  • API de datos de Youtube: Obtenga acceso al flujo multimedia ya la reproducción (JAVA)
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.