Integración de youtube para fragmentar
Mi actividad se extiende otra actividad y consiste en el cajón de navegación donde cada elemento abre un nuevo fragmento. Quiero integrar Youtube a uno de los fragmentos .. Anteriormente usé YouTubePlayerView para integrar Youtube a la actividad, pero aquí es necesario en el fragmento. Busqué en Net y encontró YouTubePlayerFragment para integrar youtube a fragmento. Pero cuando busqué en tutoriales encontré que incluso usando YouTubePlayerFragment estamos ampliando YouTubeBaseActivity. Estos son los ejemplos. Http://android-coding.blogspot.in/2013/04/example-to-use-youtubeplayerfragment-of. Html http://android-er.blogspot.in/2013/06/example-to-use-youtubeplayerfragment-of.html
No pude entender cómo usar YouTubePlayerFragment tal que mi clase extiende fragmento en lugar de YouTubeBaseActivity que se requiere en mi proyecto .. Como u puede ver a continuación mi clase se extiende otra actividad y consiste en el cajón de navegación en la quinta opción que abre YouTube Fragment.I want Para reproducir video de Youtube dentro de este fragmento .. Estoy dando un breve diseño de cómo mis clases son-
- Intentando reproducir video de YouTube en una aplicación PhoneGap / Cordova
- La API de Youtube no devuelve los resultados actualizados
- Reproducción de vídeos de youtube en la aplicación para Android
- Cómo cargar las miniaturas de Youtube en un RecyclerView utilizando la API de Youtube
- iniciar sesión en youtube desde android
public class LandingActivity extends BaseGActivity { . . . . public void selectDrawerItem(int position) { Bundle args = new Bundle(); switch (position) { case 0: currentFragment = new HomeFragment_(); args.putString(G.General.MEDIA_TYPE_KEY, G.General.MEDIA_TYPE_ALL); GApplication.getInstance().stopGPlayer(); break; case 1: currentFragment = new HomeFragment_(); args.putString(G.General.MEDIA_TYPE_KEY, G.General.MEDIA_TYPE_PHOTO); GApplication.getInstance().stopGPlayer(); break; // case 2: currentFragment = new HomeFragment_(); args.putString(G.General.MEDIA_TYPE_KEY, G.General.MEDIA_TYPE_AUDIO); GApplication.getInstance().stopGPlayer(); break; case 3: currentFragment = new HomeFragment_(); args.putString(G.General.MEDIA_TYPE_KEY, G.General.MEDIA_TYPE_VIDEO); GApplication.getInstance().stopGPlayer(); break; case 4: currentFragment = new HomeFragment_(); args.putString(G.General.MEDIA_TYPE_KEY, G.General.MEDIA_TYPE_MEME); GApplication.getInstance().stopGPlayer(); break; case 5: currentFragment = new YoutubeFragment(); default: currentFragment = new HomeFragment_(); args.putString(G.General.MEDIA_TYPE_KEY, G.General.MEDIA_TYPE_ALL); GApplication.getInstance().stopGPlayer(); break; } currentFragment.setArguments(args); FragmentManager frgManager = getFragmentManager(); frgManager.beginTransaction().replace(R.id.content_frame, currentFragment) .commit(); mDrawerList.setItemChecked(position, true); setTitle(dataList.get(position).getItemName()); mDrawerLayout.closeDrawers(); } public class YoutubeFragment extends Fragment implements YouTubePlayer.OnInitializedListener{ private FragmentActivity myContext; private YouTubePlayer YPlayer; private static final String YoutubeDeveloperKey = "xyz"; private static final int RECOVERY_DIALOG_REQUEST = 1; @Override public void onAttach(Activity activity) { if (activity instanceof FragmentActivity) { myContext = (FragmentActivity) activity; } super.onAttach(activity); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.activity_you_tube_api, container, false); YouTubePlayerView youTubeView = (YouTubePlayerView) rootView.findViewById(R.id.youtube_view); youTubeView.initialize(YoutubeDeveloperKey, (YouTubePlayer.OnInitializedListener) myContext); return rootView; } @Override public void onInitializationFailure(YouTubePlayer.Provider provider, YouTubeInitializationResult errorReason) { if (errorReason.isUserRecoverableError()) { errorReason.getErrorDialog(this, RECOVERY_DIALOG_REQUEST).show(); } else { String errorMessage = String.format( "There was an error initializing the YouTubePlayer", errorReason.toString()); Toast.makeText(this, errorMessage, Toast.LENGTH_LONG).show(); } } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == RECOVERY_DIALOG_REQUEST) { getYouTubePlayerProvider().initialize(YoutubeDeveloperKey, this); } } @Override public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer player, boolean wasRestored) { if (!wasRestored) { YPlayer = player; YPlayer.setFullscreen(true); YPlayer.loadVideo("2zNSgSzhBfM"); YPlayer.play(); } } }
YouTubeFragment.java
public class YoutubeFragment extends Fragment implements YouTubePlayer.OnInitializedListener { private FragmentActivity myContext; private YouTubePlayer YPlayer; private static final String YoutubeDeveloperKey = "xyz"; private static final int RECOVERY_DIALOG_REQUEST = 1; @Override public void onAttach(Activity activity) { if (activity instanceof FragmentActivity) { myContext = (FragmentActivity) activity; } super.onAttach(activity); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.activity_you_tube_api, container, false); YouTubePlayerSupportFragment youTubePlayerFragment = YouTubePlayerSupportFragment.newInstance(); youTubePlayerFragment.initialize("DEVELOPER_KEY", new YouTubePlayer.OnInitializedListener() { }); FragmentTransaction transaction = getChildFragmentManager().beginTransaction(); transaction.add(R.id.youtube_fragment, youTubePlayerFragment).commit(); return rootView; } @Override public void onInitializationSuccess (YouTubePlayer.Provider provider, YouTubePlayer youTubePlayer,boolean b){ if (!b) { YPlayer = youTubePlayer; YPlayer.setFullscreen(true); YPlayer.loadVideo("2zNSgSzhBfM"); YPlayer.play(); } } @Override public void onInitializationFailure (YouTubePlayer.Provider provider, YouTubeInitializationResult youTubeInitializationResult){ } }
diseño
<?xml version="1.0" encoding="utf-8"?> <LinearLayout 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.YouTubePlayerSupportFragment" android:id="@+id/youtube_fragment" android:layout_width="match_parent" android:layout_height="wrap_content"/> </LinearLayout>
Error-
Error:(64, 101) error: <anonymous com.pc.gi.ui.fragment.YoutubeFragment$1> is not abstract and does not override abstract method onInitializationFailure(Provider,YouTubeInitializationResult) in OnInitializedListener
- Android Java Youtube API v3.0 obtener enlace de vídeo RTSP
- El botón Reproducir en una incrustación de youtube no funciona en android-chrome
- Android WebView con incrustaciones iframe no se muestra en 4.2.2 ni en la parte inferior
- Cómo obtener el evento de la finalización del video de youtube en android webview
- Cómo jugar video de youtube en ExoPlayer en Android?
- Youtube YouTubePlayerSupportFragment no funciona correctamente (¿cargando siempre?)
- ¿Está prohibido transmitir vídeo de YouTube en segundo plano?
- Las transmisiones en directo de Youtube en la vista web de Android son nerviosas
Primero extienda su Actividad como normal
class YourActivity extends Activity...
En el archivo de diseño, coloque las líneas abajo
<fragment android:name="com.google.android.youtube.player.YouTubePlayerSupportFragment" android:id="@+id/youtube_fragment" android:layout_width="match_parent" android:layout_height="wrap_content"/>
A continuación, en su actividad, puede crear su instancia utilizando la línea inferior en el método onCreareView de su fragmento.
YouTubePlayerSupportFragment youTubePlayerFragment = (YouTubePlayerSupportFragment) getActivity().getSupportFragmentManager() .findFragmentById(R.id.youtube_fragment);
O puede declarar un FrameLayout en su xml y luego iniciar el YouTubeSupportFragment
utilizando líneas inferiores
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <FrameLayout android:id="@+id/youtube_fragment" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_centerHorizontal="true" android:visibility="visible" /> </RelativeLayout>
Código en su onCreateView
YouTubePlayerSupportFragment youTubePlayerFragment = YouTubePlayerSupportFragment.newInstance(); youTubePlayerFragment.initialize("DEVELOPER_KEY", new OnInitializedListener() { @Override public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer player, boolean wasRestored) { if (!wasRestored) { YPlayer = player; YPlayer.setFullscreen(true); YPlayer.loadVideo("2zNSgSzhBfM"); YPlayer.play(); } } @Override public void onInitializationFailure(Provider arg0, YouTubeInitializationResult arg1) { // TODO Auto-generated method stub } }); FragmentTransaction transaction = getChildFragmentManager().beginTransaction(); transaction.add(R.id.youtube_fragment, youTubePlayerFragment).commit();
La clave aquí es usar YouTubePlayerSupportFragment
lugar de YouTubePlayerFragment
.
Espero que esto ayude.
Aquí está tu fragmento
import android.app.Activity; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentTransaction; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import com.google.android.youtube.player.YouTubeInitializationResult; import com.google.android.youtube.player.YouTubePlayer; import com.google.android.youtube.player.YouTubePlayer.OnInitializedListener; import com.google.android.youtube.player.YouTubePlayer.Provider; import com.google.android.youtube.player.YouTubePlayerSupportFragment; import com.ismart.omanapp.R; public class YoutubeFragment extends Fragment { private FragmentActivity myContext; private YouTubePlayer YPlayer; private static final String YoutubeDeveloperKey = "xyz"; private static final int RECOVERY_DIALOG_REQUEST = 1; @Override public void onAttach(Activity activity) { if (activity instanceof FragmentActivity) { myContext = (FragmentActivity) activity; } super.onAttach(activity); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.activity_you_tube_api, container, false); YouTubePlayerSupportFragment youTubePlayerFragment = YouTubePlayerSupportFragment.newInstance(); FragmentTransaction transaction = getChildFragmentManager().beginTransaction(); transaction.add(R.id.youtube_fragment, youTubePlayerFragment).commit(); youTubePlayerFragment.initialize("DEVELOPER_KEY", new OnInitializedListener() { @Override public void onInitializationSuccess(Provider arg0, YouTubePlayer youTubePlayer, boolean b) { if (!b) { YPlayer = youTubePlayer; YPlayer.setFullscreen(true); YPlayer.loadVideo("2zNSgSzhBfM"); YPlayer.play(); } } @Override public void onInitializationFailure(Provider arg0, YouTubeInitializationResult arg1) { // TODO Auto-generated method stub } }); } }
- 5.1 Crash – El color primario de TaskDescription debe ser opaco
- Eliminación de una vista de una actividad