android - 切换到横向时,Youtube SDK播放器无法播放

标签 android youtube youtube-api

我的Android应用程序实现了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());
    }
}

你能帮忙吗

最佳答案

我所做的是

1号我去manifest.xml并将android:configChanges添加到我的playerActivity

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

2号我重写configurationChanged
@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将首先设置为全屏,然后播放。否则,您会稍等片刻后再继续播放视频

关于android - 切换到横向时,Youtube SDK播放器无法播放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35453793/

相关文章:

android - 注销并关闭 Android 中的所有 Activity

android - Gradle 与 ButterKnife 同步

java - 更多类java中的一些字符串

android - 在某些情况下无法从外部设置 videoview 的 mediaPlayer 的音量

youtube - 通过浏览器在外部视频播放器中打开Youtube链接

php - 更新 V3 API 的 YouTube PHP 函数

youtube-api - Youtube Analytics API 的延迟

wordpress - 发布到WordPress时,在YouTube嵌入代码中修复与符号

ios - WKWebView媒体控件标题显示Url

android youtube api Volley 异常