2014-10-20 9 views
19

Etkinliğim, başka bir etkinliği genişletir ve her öğenin yeni bir parça açtığı gezinme çekmecesinden oluşur. Youtube'u parçanın bir parçasıyla birleştirmek istiyorum. Açıkçası Youtube'u etkinlikle bütünleştirmek için YouTubePlayerView'ı kullandım ama işte burada fragman içinde gerekli. Ağda arama yaptım ve YouTubePlayerFragment'i youtube'yu fragmana entegre edecek şekilde buldum. i dökümanında yaptıkları aramada Ama ben bile YouTubePlayerFragment'tir kullanarak biz YouTubeBaseActivity .Bu örneklerdir uzanan olduğunu tespit .. 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.htmlYoutube'ı parçalara ayırma

benim sınıf yerine YouTubeBaseActivity daha Fragment uzandığı YouTubePlayerFragment'tir böyle nasıl kullanılacağını anlamak için başarısız olduğu Benim projemde gereklidir.Aşağıda görebilirsiniz başka bir aktivite uzatır ve beşinci seçeneği YouTube Fragmanı açar hangi navigasyon çekmecesi oluşur.Bu parçanın içinde Youtube video oynamak istiyorum.Benim benim sınıfları nasıl kısa bir düzen veriyoruz -

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(); 
      } 
     } 

    } 

YouTubeFrag ment.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){ 

    } 
} 

düzen

<?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> 

Hata-

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 
+0

sizin Fragment olduğunu. İlk denemem YoutubePlayerFragment kullanıyordu, ancak API'sı biraz pratik ve çok "pürüzsüz" kullanıcı deneyimi sağlamadı ... bu yüzden Youtube iframe API'sini denedim (https://developers.google.com/youtube/iframe_api_reference WebView içinde. Android WebView, tüm HTML5 özelliklerini desteklemez, bu nedenle kendiniz bazı şeyler yapmanız gerekir ... ancak bu (https://code.google.com/p/html5webview/) başlamak için iyi bir yerdir. Son sonuç buna değer. –

+0

Bunu deneyin: http: //stackoverflow.com/questions/34803095/android-studio-google-map-api-with-fragments –

cevap

54

İlk Düzeni dosyasında

class YourActivity extends Activity... 

aşağıda çizgileri koymak, normal olarak Etkinliği uzatmak

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

Daha sonra, kendi Çalışmanızda, Fragmanınızın onCreareView yönteminde aşağıdaki satırı kullanarak kendi örneğini oluşturabilirsiniz.

YouTubePlayerSupportFragment youTubePlayerFragment = (YouTubePlayerSupportFragment) getActivity().getSupportFragmentManager() 
        .findFragmentById(R.id.youtube_fragment); 

veya sonra xml bir FrameLayout beyan edebilir YouTubeSupportFragment burada 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(); 

anahtar şeyde hatları aşağıda

<?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> 

kodu kullanarak YouTubePlayerSupportFragment kullanmaktır başlatmak YouTubePlayerFragment yerine.

Bu yardımcı olur umarım.

İşte Geçenlerde benim app youtube video oynatıcı uyguladık

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 

      } 
     }); 

    } 
} 
+0

Hii..i fragman içindeki youtube videosunu oynatmak istiyorum ... aktivitesi gezinti çekmecesinde Beşinci maddeye tıkladığımda istediğim, youtube videosunun oynatıldığı bir parçayı açar.Eğer bu kodu etkinliğin içine yerleştirirsem, navigasyon çekmecesinde beşinci maddeye tıklayarak youtube videosu oynatacak ... ya da sadece etkinlik içinde youtube videosu oynatmaya başlayacak mı? Ne tür bir kod parçacığı uzatan sınıf içine yerleştirmeliyim .. lütfen tekrar soruyu oku ur zamanı için ..thanku .. –

+1

Aslında Fragmanlar içinde YoutubeFragment istiyorum. GetSupportedFragmentManager(); ' – Sunny

+0

yerine getChildFragmentManager() işlevini kullanmanız gerekir. İkinci yöntemimi kullanmalısınız. bir xml dosyası oluşturun ve bunun içine frameLayout yerleştirin ve yukarıda yazdığım kodu "onCreateView" parçanızda kullanın. – Sunny