2014-10-20 7 views
19

मेरी गतिविधि एक और गतिविधि को विस्तारित करती है और इसमें नेविगेशन ड्रॉवर होता है जहां प्रत्येक आइटम एक नया खंड खोलता है। मैं यूट्यूब को एक टुकड़े में एकीकृत करना चाहता हूं .. जाहिर है, मैंने यूट्यूब को गतिविधि में एकीकृत करने के लिए YouTubePlayerView का उपयोग किया है, लेकिन यहां यह है खंड में आवश्यक है। मैंने नेट पर खोज की और यूट्यूब को खंड में एकीकृत करने के लिए YouTubePlayerFragment पाया। लेकिन जब मैं ट्यूटोरियल में खोजा गया मैंने पाया कि यहां तक ​​कि YouTubePlayerFragment का उपयोग करके हम बढ़ा रहे हैं YouTubeBaseActivity ये उदाहरण हैं .. 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विखंडन के लिए यूट्यूब को एकीकृत करना

मैं समझता हूँ कि कैसे YouTubePlayerFragment इस तरह के उपयोग करने के लिए है कि मेरी कक्षा टुकड़ा फैली बल्कि YouTubeBaseActivity से विफल रहा है जो मेरी परियोजना में जरूरी है..जैसे आप मेरी कक्षा के नीचे एक और गतिविधि बढ़ा सकते हैं और इसमें नेविगेशन ड्रॉवर शामिल है जिसमें पांचवां विकल्प यूट्यूब फ्रैगमेंट खोलता है। मैं इस खंड के अंदर यूट्यूब वीडियो खेलना चाहता हूं..मैं संक्षिप्त लेआउट दे रहा हूं कि मेरी कक्षाएं कैसे हैं -

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){ 

    } 
} 

लेआउट

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

मैं हाल ही में मेरे एप्लिकेशन में एक यूट्यूब वीडियो प्लेयर को क्रियान्वित किया है है। मेरी पहली कोशिश YoutubePlayerFragment का उपयोग कर रही थी, लेकिन इसकी एपीआई थोड़ी सी अनैतिक है और यह बहुत "चिकनी" उपयोगकर्ता अनुभव प्रदान नहीं करती है ... इसलिए मैंने यूट्यूब आईफ्रेम एपीआई (https://developers.google.com/youtube/iframe_api_reference) एक वेब व्यू के अंदर। एंड्रॉइड वेबव्यू सभी एचटीएमएल 5 सुविधाओं का समर्थन नहीं करता है, इसलिए आपको अपने आप से कुछ सामान करने की ज़रूरत है ... लेकिन यह (https://code.google.com/p/html5webview/) शुरू करने के लिए एक अच्छी जगह है। अंतिम परिणाम इसके लायक है। –

+0

इसे आज़माएं: http: //stackoverflow.com/questions/34803095/android-studio-google-map-api-with-fragments –

उत्तर

54

पहले के रूप में सामान्य

class YourActivity extends Activity... 
लेआउट फ़ाइल में

डाल नीचे लाइनों अपनी गतिविधि का विस्तार

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

फिर अपनी गतिविधि में आप अपने टुकड़े की अपनी ऑनक्रियर व्यू विधि में नीचे पंक्ति का उपयोग करके अपना उदाहरण बना सकते हैं।

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

या अपनी xml में एक FrameLayout घोषित और फिर कर सकते हैं YouTubeSupportFragment अपने 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(); 

मुख्य बात में लाइनों के नीचे का उपयोग कर

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

कोड यहाँ YouTubePlayerSupportFragment उपयोग करने के लिए है आरंभ YouTubePlayerFragment के बजाय।

उम्मीद है कि इससे मदद मिलती है।

यहाँ अपने टुकड़ा

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

हाय .. मैं खंड के अंदर यूट्यूब वीडियो खेलना चाहता हूं..मेरी गतिविधि में नेविगेशन ड्रॉवर शामिल है जो मैं चाहता हूं कि जब मैं पांचवीं वस्तु पर क्लिक करूंगा तो यह एक टुकड़ा खुलता है जिसमें यूट्यूब वीडियो खेला जाता है।यदि मैं इस कोड को गतिविधि के अंदर रखता हूं तो क्या यह नेविगेशन ड्रॉवर में पांचवें आइटम पर क्लिक करने के लिए यूट्यूब वीडियो चलाएगा..यह केवल यूट्यूब वीडियो को गतिविधि के अंदर खेलना शुरू कर देगा? मुझे कक्षा के अंदर कौन सा कोड रखना चाहिए जो खंड को बढ़ाता है .. कृपया मेरा प्रश्न दोबारा पढ़ें ..thanku आपके समय के लिए .. –

+1

वास्तव में आप अपने टुकड़ों के अंदर YoutubeFragment चाहते हैं। आपको 'getSupportedFragmentManager();' – Sunny

+0

की बजाय 'getChildFragmentManager()' का उपयोग करने की आवश्यकता है, आपको मेरी दूसरी विधि का उपयोग करना चाहिए। i.e एक एक्सएमएल फ़ाइल बनाएं और इसके अंदर एक फ्रेमआउट रखें और मैंने अपने खंड 'onCreateView' में ऊपर लिखा कोड का उपयोग करें। – Sunny

संबंधित मुद्दे