2013-04-30 13 views
6

मैं यूट्यूब एंड्रॉयड प्लेयर API के रूप में यहां उनका उल्लेख उपयोग कर रहा हूँ: https://developers.google.com/youtube/android/player/एक गतिविधि में एकाधिक यूट्यूब खिलाड़ियों

हालांकि, मैं नहीं एक से अधिक वीडियो मेरी गतिविधि में एक ही बार में मिल सकता है। मैं बस इतना की तरह गतिविधियों के बारे में दो YouTubePlayerViews डालने की कोशिश की:

activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" > 

    <com.google.android.youtube.player.YouTubePlayerView 
     android:id="@+id/view_one" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 

    <com.google.android.youtube.player.YouTubePlayerView 
     android:id="@+id/view_two" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 

</LinearLayout> 

MainActivity.java

package com.example.multidemo; 

import android.os.Bundle; 

import com.google.android.youtube.player.YouTubeBaseActivity; 
import com.google.android.youtube.player.YouTubeInitializationResult; 
import com.google.android.youtube.player.YouTubePlayer; 
import com.google.android.youtube.player.YouTubePlayer.Provider; 
import com.google.android.youtube.player.YouTubePlayerView; 

public class MainActivity extends YouTubeBaseActivity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     ((YouTubePlayerView) findViewById(R.id.view_one)).initialize("API key", new YouTubePlayer.OnInitializedListener() { 
      @Override 
      public void onInitializationSuccess(Provider arg0, YouTubePlayer arg1, boolean arg2) { 
       arg1.cueVideo("RpwoN_XlN6Y"); 
      } 

      @Override 
      public void onInitializationFailure(Provider arg0, YouTubeInitializationResult arg1) { 
      } 
     }); 

     ((YouTubePlayerView) findViewById(R.id.view_two)).initialize("API key", new YouTubePlayer.OnInitializedListener() { 
      @Override 
      public void onInitializationSuccess(Provider arg0, YouTubePlayer arg1, boolean arg2) { 
       arg1.cueVideo("jkk2mMq2x8E"); 
      } 

      @Override 
      public void onInitializationFailure(Provider arg0, YouTubeInitializationResult arg1) { 
      } 
     }); 
    } 
} 

जब मैं यह कोशिश, पहली बार देखने बस काला आता है , जबकि दूसरा वीडियो लोड करता है। अगर मैं दूसरे वीडियो के लिए ऑनक्रेट() में कोड को टिप्पणी करता हूं, तो केवल पहला वीडियो लोड होगा।

क्या एक ही गतिविधि में एकाधिक YouTubePlayerViews प्राप्त करने का कोई तरीका है?

+0

कृपया देखें http://stackoverflow.com/questions/17117164 –

+0

यह मेरी समस्या भी ... कृपया हमारी मदद करें। – Cristiana214

उत्तर

2

यह उत्तर के लिए बहुत देर हो सकती है, लेकिन मुझे हाल ही में एक ही समस्या थी। उम्मीद है कि इससे किसी ऐसे व्यक्ति की मदद मिलती है जो एक ही मुद्दे का सामना कर सके। इसके चारों ओर जाने की चाल इसके बजाय YoutubePlayerFragments का उपयोग कर रही है। जब तक आप यूट्यूब प्लेयर व्यू का उपयोग करते हैं, तो आप एकाधिक अनुरोधों से किए गए केवल एक प्रारंभिकरण से लगाई गई सीमा को हिट करेंगे। आम तौर पर प्रारंभिकरण पिछले के लिए सफल होता है।

मैंने गतिशील रूप से ग्रिडलेआउट उत्पन्न किया और प्रत्येक कोशिका में अपने (गतिशील रूप से जेनरेट किए गए) टुकड़े के दृश्य को रखा। और फिर मैं प्लेयर के अंदर रेस्यूम के उदाहरण को शुरू करता हूं। एक बार प्रारंभिकता सफल हो जाने पर, आपको प्लेयर के लिए एक हैंडल मिल जाएगा, और आप अलग-अलग वीडियो को टुकड़ों पर यादृच्छिक रूप से क्यू कर सकते हैं।

मैं सिर्फ कोड है कि आप कैसे मैं टुकड़े का निर्माण कर रहा हूँ और प्रारंभ करने के बारे में एक विचार दे देंगे चस्पा करेंगे:

public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) 
{ 
    mLogger.i("Preparing Youtube view for fragment .."); 
    mFragmentHeight = CustomFragment.getFragmentHeight(mNumScreens,mNumColumns); 
    mFragmentWidth = CustomFragment.getFragmentWidth(mNumColumns); 

    LinearLayout linearLayout = new LinearLayout(getActivity()); 
    GridLayout.LayoutParams gridparams = new GridLayout.LayoutParams(); 
    gridparams.rowSpec = GridLayout.spec(mGridRow); 
    gridparams.columnSpec = GridLayout.spec(mGridColumn); 
    gridparams.height = mFragmentHeight; 
    gridparams.width = mFragmentWidth; 
    linearLayout.setLayoutParams(gridparams); 
    if(YouTubeApiServiceUtil.isYouTubeApiServiceAvailable(getActivity())== 
      YouTubeInitializationResult.SUCCESS) 
    { 
     View ytView = super.onCreateView(inflater, container, savedInstanceState); 
     linearLayout.addView(ytView); 
    } 
    else 
     mLogger.e("Either youtube service is down," + 
       " or you dont have required version of YouTube app .." + 
       "\nYouTube Fragment will not work as expected.."); 
    mView = linearLayout; 
    mLogger.i("Preparation youtube view for fragment complete.."); 
    return mView; 
} 

@Override 
public void onInitializationFailure(Provider arg0, 
     YouTubeInitializationResult arg1) 
{ 
    mLogger.e("Youtube player initialization failed"); 
} 

@Override 
public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer player, 
      boolean wasRestored) 
{ 
    mLogger.i("You tube player initialized successfully.. will attempt to stream.."); 
    mYoutubePlayer = player; 
    setListeners(); 
    try 
    { 
     if (!wasRestored) 
     { 
      if(mPlayListFragment) 
       player.loadPlaylist(getResourceID()); 
      else 
       player.loadVideo(getResourceID()); 
     } 
    } 
    catch(Exception e) 
    { 
     mLogger.e("Error loading playlist/video .."+e); 
    } 

} 

public void onResume() 
{ 
    super.onResume(); 
    initialize(API_KEY, this); 
} 
+0

क्या आप मुझे अपना कुछ कोड दिखा सकते हैं? मैं एक ग्रिडलेआउट में भी एक यूट्यूबप्लेयरफ्रैगमेंट डालने की कोशिश कर रहा हूं। – pldimitrov

+0

मैं सिर्फ कोड पेस्ट करूंगा जो आपको इस बारे में एक विचार देगा कि मैं टुकड़े कैसे बना रहा हूं और प्रारंभिकरण कर रहा हूं। एक विचार के लिए ऊपर मेरा संपादन देखें। आपको लगता है कि यह एक पूर्ण उत्तर नहीं है, सिर्फ एक विचार है जो किसी को समस्या का सामना करने में मदद कर सकता है – GodOnScooter

+0

हैलो। मेरे पास एक ही चीज़ है लेकिन समस्या यह है कि स्क्रीन खाली रहती है .. यहां तक ​​कि प्रारंभिकता भी सफल होती है और यह वीडियो बजाना शुरू कर देती है .. लेकिन मुझे कोई वीडियो पूर्वावलोकन नहीं दिख रहा है। क्या आप इसे दिखाने में मदद कर सकते हैं। या कुछ और कोड साझा करें। धन्यवाद। –

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