2016-02-17 86 views
0

我的Android應用程序我實現了YouTube SDK,當我點擊播放時,它正在播放。當我旋轉到橫向時,它只起到肖像模式時間緩衝數據的作用。我只有一個佈局Youtube SDK播放器切換到橫向時不播放

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    try { 

     setContentView(R.layout.activity_you_tube); 
     setTitle("YouTube Link"); 

     //translucent(); 

     if (savedInstanceState != null) { 
      onRestoreInstanceState(savedInstanceState); 
      youtubeURL = savedInstanceState.getString("YouTubeURL"); 
      updateUI(); 
     } 

     initeUI(); 

    } catch (Exception e) { 
     Log.e(TAG, "onCreate " + e.getMessage()); 
    } 
} 

@Override 
public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer player, boolean wasRestored) { 
try { 
    this.player = player; 
    progress.setVisibility(View.GONE); 
    youtubesubmit.setVisibility(View.VISIBLE); 
    metadataView.setVisibility(View.VISIBLE); 

    updateUI(); 

    if (!wasRestored) { 

     player.cueVideo(youtubeID); 
    } 

} catch (Exception e) { 
    Log.e(TAG, "onInitializationSuccess " + e.getMessage()); 
} 

} 


public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
    int controlFlags = player.getFullscreenControlFlags(); 
    if (isChecked) { 
     // If you use the FULLSCREEN_FLAG_ALWAYS_FULLSCREEN_IN_LANDSCAPE, your activity's normal UI 
     // should never be laid out in landscape mode (since the video will be fullscreen whenever the 
     // activity is in landscape orientation). Therefore you should set the activity's requested 
     // orientation to portrait. Typically you would do this in your AndroidManifest.xml, we do it 
     // programmatically here since this activity demos fullscreen behavior both with and without 
     // this flag). 
     setRequestedOrientation(PORTRAIT_ORIENTATION); 
     controlFlags |= YouTubePlayer.FULLSCREEN_FLAG_ALWAYS_FULLSCREEN_IN_LANDSCAPE; 
    } else { 
     setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR); 
     controlFlags &= ~YouTubePlayer.FULLSCREEN_FLAG_ALWAYS_FULLSCREEN_IN_LANDSCAPE; 
    } 
    player.setFullscreenControlFlags(controlFlags); 
} 
@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 
    int controlFlags = player.getFullscreenControlFlags(); 
    try { 

     if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) { 
      setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR); 
      controlFlags &= ~YouTubePlayer.FULLSCREEN_FLAG_ALWAYS_FULLSCREEN_IN_LANDSCAPE; 
      player.setFullscreenControlFlags(controlFlags); 

     } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) { 

     } 
    } catch (Exception e) { 
     Log.e(TAG, "onConfigurationChanged " + e.getMessage()); 
    } 
} 

請你幫忙

+0

對於縱向模式和橫向模式,您應該有不同的佈局文件夾。你可以找到更多關於支持多屏幕的信息[這裏](http://developer.android.com/guide/practices/screens_support.html)。 – gerardnimo

回答

0

我做什麼

1日。我去的manifest.xml,然後加入Android:configChanges我playerActivity

<activity android:name=".Activities.YoutubePlayerActivity" 
       android:configChanges="orientation|keyboardHidden|screenSize"></activity> 

第二。我重寫配置變更

@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 

    if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) { 

     if (player.getFullscreenControlFlags() == player.FULLSCREEN_FLAG_ALWAYS_FULLSCREEN_IN_LANDSCAPE) { 
      player.setFullscreen(true); 
      player.play(); 
     } 
    } 
} 

你就完成了。基本上在configurationChange我檢查屏幕是否進入橫向模式,並且youtubePlayer將首先設置爲全屏,然後播放。否則在恢復視頻之前會暫停一段時間

相關問題