2015-09-19 7 views
6

YouTubePlayerFragmentがCollapsingToolbarLayoutで機能しません(再生中)。CollapsingToolbarLayoutのYouTubePlayerFragmentが機能しません(再生中)

私はyoutube android apiからyoutubeビデオを再生したいです。 CollapsingToolbarLayoutの内部では、YouTubePlayerFragmentは再生されず、サムネイルのみが表示され、1秒後に停止します。

他のレイアウト内でうまく動作します。私は素材デザインがYouTubeのビデオとレイアウトを崩壊させたい。私を助けてください。

<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

CoordinatorLayoutが原因でAUTHORIZED_OVERLAYエラーが発生したようです。あなたはあなたの問題を解決しましたか? –

答えて

0

論理コードまたはJavaコードとエラーログを投稿した場合は役に立ちました。私は... Javaのコードは、あまりにもあなたのために働くかもしれない、この1をご覧ください

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内でYouTubeの断片を再生したいと思います。これ以外では、うまくいきます。私はCollapsingToolbarLayout(上記の質問xmlで言及されている)とユーザーにしたい – Mangal

1

を掲示していますofficial documentationは言う:動画が再生されている一方で、このビューが持つ

注意最小サイズは200x110 dpです。ビューを小さくすると、動画の再生が自動的に停止します。 また、ビデオの再生中に、このフラグメントのビューを他のビューにオーバーレイすることはできません。

のでCollapsingToolbarLayoutにYouTubePlayerFragmentと YouTubePlayerViewを動作するように取得する方法はありません。

PS:誰かがそれを行うことができれば - ソリューションを共有してください。私も同じ問題がありましたが、解決できませんでした。

+0

この問題を解決しましたか? –

+1

@AbhishekV残念ながら、 YouTubeViewは他のビューと重なってはいけません。これが唯一の解決策です。 – Mikhail

関連する問題