2015-09-19 15 views
6

YouTubePlayerFragment CollapsingToolbarLayout में काम नहीं कर रहा (बजाना) में काम नहीं कर रहा है (बजाना)।YouTubePlayerFragment CollapsingToolbarLayout

मैं यूट्यूब एंड्रॉइड एपीआई से यूट्यूब वीडियो खेलना चाहता हूं। CollapsingToolbarLayout के अंदर, YouTubePlayerFragment नहीं खेलता है, केवल थंबनेल आता है और 1 सेकंड के बाद यह बंद हो जाता है।

मैं अन्य लेआउट के अंदर ठीक काम करता हूं। मैं यूट्यूब वीडियो के साथ सामग्री डिजाइन ढहने लेआउट चाहता हूँ। क्रिप्या मेरि सहायता करे।

<android.support.design.widget.CoordinatorLayout 
    android:id="@+id/root_coordinator" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fitsSystemWindows="true"> 


    <android.support.design.widget.AppBarLayout 
     android:id="@+id/app_bar_layout" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 
     android:fitsSystemWindows="true"> 



     <android.support.design.widget.CollapsingToolbarLayout 
      android:id="@+id/collapsing_toolbar_layout" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      app:contentScrim="?attr/colorPrimary" 
      app:expandedTitleMarginEnd="64dp" 
      app:expandedTitleMarginStart="48dp" 
      app:layout_scrollFlags="scroll|exitUntilCollapsed"> 




      <!--<ImageView 
       android:id="@+id/image" 
       android:layout_width="match_parent" 
       android:layout_height="250dp" 
       android:src="@drawable/ic_launcher" 
       android:visibility="visible" 
       app:layout_collapseMode="parallax" />--> 
      <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:id="@+id/layoutYoutube" 
       android:layout_width="match_parent" 
       android:layout_height="250dp" 
       android:visibility="visible" 
       app:layout_collapseMode="parallax"> 
       <fragment 
        android:id="@+id/youtube_fragment" 
        android:name="com.google.android.youtube.player.YouTubePlayerFragment" 
        android:layout_width="match_parent" 
        android:layout_height="match_parent" /> 
      </LinearLayout> 



      <android.support.v7.widget.Toolbar 
       android:id="@+id/app_bar" 
       android:layout_width="match_parent" 
       android:layout_height="?attr/actionBarSize" 
       android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" 
       app:layout_collapseMode="pin"> 


       <include 
        layout="@layout/toolbar_layout" 
        android:layout_width="match_parent" 
        android:layout_height="match_parent" /> 

      </android.support.v7.widget.Toolbar> 


     </android.support.design.widget.CollapsingToolbarLayout> 



    </android.support.design.widget.AppBarLayout> 


    <FrameLayout 
     android:id="@+id/frameContainer" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_marginTop="1dp" 
     android:background="@android:color/white" 
     android:paddingTop="2dp" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior"> 

    </FrameLayout> 




</android.support.design.widget.CoordinatorLayout> 
+0

ऐसा लगता है कि कोऑर्डिनेटरलाइट त्रुटि AUTHORIZED_OVERLAY त्रुटि का कारण बनता है। क्या आपने अपनी समस्या हल की? –

उत्तर

0

यदि आप तर्क कोड या जावा कोड और त्रुटि लॉग पोस्ट करते हैं तो यह सहायक होगा। मैं पोस्टिंग कर रहा हूँ जावा कोड, कृपया इस एक पर एक नज़र डालें आप के लिए भी काम कर सकते हैं ...

public class YoutubeActivity extends YouTubeBaseActivity implements YouTubePlayer.OnInitializedListener{ 

    public static final String API_KEY = "xxxxxxxxxx"; 
    public static final String VIDEO_ID = "xxxxxxx"; 

    private YouTubePlayer youTubePlayer; 
    private YouTubePlayerFragment youTubePlayerFragment; 
    private TextView textVideoLog; 
    private Button btnViewFullScreen; 

    private static final int RQS_ErrorDialog = 1; 

    private MyPlayerStateChangeListener myPlayerStateChangeListener; 
    private MyPlaybackEventListener myPlaybackEventListener; 

    String log = ""; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_youtube); 

     youTubePlayerFragment = (YouTubePlayerFragment)getFragmentManager() 
       .findFragmentById(R.id.youtubeplayerfragment); 
     youTubePlayerFragment.initialize(API_KEY, this); 

     textVideoLog = (TextView)findViewById(R.id.videolog); 

     myPlayerStateChangeListener = new MyPlayerStateChangeListener(); 
     myPlaybackEventListener = new MyPlaybackEventListener(); 

     btnViewFullScreen = (Button)findViewById(R.id.btnviewfullscreen); 
     btnViewFullScreen.setOnClickListener(new View.OnClickListener(){ 

      @Override 
      public void onClick(View arg0) { 
       youTubePlayer.setFullscreen(true); 
      }}); 
     Button btnPlay = (Button) findViewById(R.id.btnplay); 
     btnPlay.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       if(youTubePlayer.isPlaying()) 
        youTubePlayer.pause(); 
       else 
        youTubePlayer.play(); 
      } 
     }); 


    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.menu_splash_menu, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     int id = item.getItemId(); 
     Log.e("id", id+""); 
     switch(item.getItemId()){ 
      case R.id.action_share: 
       break; 
      case 16908332: 
       onBackPressed(); 
       break; 
     } 
     return super.onOptionsItemSelected(item); 
    } 


    @Override 
    public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer youtube, boolean b) { 
     youTubePlayer = youtube; 
     Toast.makeText(getApplicationContext(), "YouTubePlayer.onInitializationSuccess()", Toast.LENGTH_LONG).show(); 

     youtube.setPlayerStateChangeListener(myPlayerStateChangeListener); 
     youtube.setPlaybackEventListener(myPlaybackEventListener); 

     if (!b) { 
      youTubePlayer.cueVideo(VIDEO_ID); 
     } 
    } 

    @Override 
    public void onInitializationFailure(YouTubePlayer.Provider provider, YouTubeInitializationResult youTubeInitializationResult) { 
     if (youTubeInitializationResult.isUserRecoverableError()) { 
      youTubeInitializationResult.getErrorDialog(this, RQS_ErrorDialog).show(); 
     } else { 
      Toast.makeText(this,"YouTubePlayer.onInitializationFailure(): " + youTubeInitializationResult.toString(),Toast.LENGTH_LONG).show(); 
     } 
    } 

    private final class MyPlayerStateChangeListener implements YouTubePlayer.PlayerStateChangeListener { 

     private void updateLog(String prompt){ 
      log += "MyPlayerStateChangeListener" + "\n" +prompt + "\n\n====="; 
      textVideoLog.setText(log); 
     }; 

     @Override 
     public void onAdStarted() { 
      updateLog("onAdStarted()"); 
     } 

     @Override 
     public void onError(
       com.google.android.youtube.player.YouTubePlayer.ErrorReason arg0) { 
      updateLog("onError(): " + arg0.toString()); 
     } 

     @Override 
     public void onLoaded(String arg0) { 
      updateLog("onLoaded(): " + arg0); 
     } 

     @Override 
     public void onLoading() { 
      updateLog("onLoading()"); 
     } 

     @Override 
     public void onVideoEnded() { 
      updateLog("onVideoEnded()"); 
     } 

     @Override 
     public void onVideoStarted() { 
      updateLog("onVideoStarted()"); 
     } 

    } 

    private final class MyPlaybackEventListener implements YouTubePlayer.PlaybackEventListener { 

     private void updateLog(String prompt){ 
      log += "MyPlaybackEventListener" + "\n-" + 
        prompt + "\n\n====="; 
      textVideoLog.setText(log); 
     }; 

     @Override 
     public void onBuffering(boolean arg0) { 
      updateLog("onBuffering(): " + String.valueOf(arg0)); 
     } 

     @Override 
     public void onPaused() { 
      updateLog("onPaused()"); 
     } 

     @Override 
     public void onPlaying() { 
      updateLog("onPlaying()"); 
     } 

     @Override 
     public void onSeekTo(int arg0) { 
      updateLog("onSeekTo(): " + String.valueOf(arg0)); 
     } 

     @Override 
     public void onStopped() { 
      updateLog("onStopped()"); 
     } 

    } 
+0

उत्तर के लिए धन्यवाद, लेकिन मैं CollapsingToolbarLayout के अंदर यूट्यूब खंड खेलना चाहता हूं। इसके बाहर, यह ठीक काम कर रहा है। लेकिन मैं CollapsingToolbarLayout (उपर्युक्त प्रश्न xml में उल्लिखित) के साथ उपयोगकर्ता बनाना चाहता हूं – Mangal

1

official documentation का कहना है:

नोट कर सकें, इस दृश्य एक है 200x110 डीपी का न्यूनतम आकार। यदि आप दृश्य को कोई छोटा बनाते हैं, तो वीडियो स्वचालित रूप से खेलना बंद कर देंगे। इसके अलावा, वीडियो के चलते अन्य दृश्यों के साथ इस खंड के दृश्य को ओवरले करने की अनुमति नहीं है।

तो वहाँ YouTubePlayerFragment और CollapsingToolbarLayout में YouTubePlayerView काम करने के लिए प्राप्त करने के लिए कोई रास्ता नहीं है।

पीएस: अगर कोई ऐसा करने में कामयाब रहा - समाधान साझा करें। मुझे यह वही समस्या थी, लेकिन मैं इसे हल नहीं कर सका।

+0

क्या आपने इस समस्या को हल किया था? –

+1

@ अभिषेकवी दुर्भाग्य से नहीं। YouTube दृश्य को अन्य दृश्यों के साथ ओवरलैप नहीं करना चाहिए। यह एकमात्र कामकाजी समाधान है। – Mikhail

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