如何在屏幕方向改变时防止YouTube碎片视图重新加载

7

我希望在我的应用中使用YouTubeAndroidPlayerApi.jar并防止当屏幕方向改变时重新加载视频片段。

我已经添加了android:configChanges="orientation|screenSize",但它无法防止重新加载。请参考AndroidManifest.xml。

<activity android:name=".MainActivity"
        android:theme="@style/AppTheme"
        android:configChanges="orientation|screenSize">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
        </intent-filter>
    </activity>

activity_main.xml

<fragment
    android:id="@+id/youtube_player_fragment"
    android:name="com.google.android.youtube.player.YouTubePlayerFragment"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"/>

MainActivity.java

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

    String youTubeKey = getString(R.string.YouTubeKey);

        YouTubePlayerFragment youTubePlayerFragment = (YouTubePlayerFragment) getFragmentManager().findFragmentById(R.id.youtube_player_fragment);
        youTubePlayerFragment.initialize(youTubeKey, this);
}
@Override
public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer player, boolean wasRestored) {
    youTubePlayer = player;

    //Enables automatic control of orientation
    youTubePlayer.setFullscreenControlFlags(YouTubePlayer.FULLSCREEN_FLAG_CONTROL_ORIENTATION);
    //Show full screen in landscape mode always
    youTubePlayer.addFullscreenControlFlag(YouTubePlayer.FULLSCREEN_FLAG_ALWAYS_FULLSCREEN_IN_LANDSCAPE);
    //System controls will appear automatically
    youTubePlayer.addFullscreenControlFlag(YouTubePlayer.FULLSCREEN_FLAG_CONTROL_SYSTEM_UI);

    if (!wasRestored) {
        youTubePlayer.setPlayerStyle(YouTubePlayer.PlayerStyle.MINIMAL);
        youTubePlayer.loadVideo(getString(R.string.link));
    }
    else
    {
        youTubePlayer.play();
    }
}

@Override
public void onInitializationFailure(YouTubePlayer.Provider provider, YouTubeInitializationResult errorReason) {
    youTubePlayer = null;
    Toast.makeText(MainActivity.this, "Error", Toast.LENGTH_LONG).show();
}

1
我回答了类似的问题。你可以试试这个链接:https://stackoverflow.com/questions/56002893/how-to-handle-orientation-changes-in-android-without-restarting-activity/56003229#56003229 - TheAnkush
请参考此文档页面:https://developers.google.com/youtube/android/player/reference/com/google/android/youtube/player/YouTubePlayer#FULLSCREEN_FLAG_CUSTOM_LAYOUT,或许会有所帮助。 - Monster Brain
2个回答

4
如果需要示例,您应该像这样使用标志:
// YouTube player flags: use a custom full screen layout; let the YouTube player control
// the system UI (hiding navigation controls, ActionBar etc); and let the YouTube player
// handle the orientation state of the activity.
mYouTubeFullscreenFlags = YouTubePlayer.FULLSCREEN_FLAG_CUSTOM_LAYOUT |
        YouTubePlayer.FULLSCREEN_FLAG_CONTROL_SYSTEM_UI |
        YouTubePlayer.FULLSCREEN_FLAG_CONTROL_ORIENTATION;

SO

另一个示例


你能解释一下我在代码中如何以及在哪里使用mYouTubeFullscreenFlags吗? - Aashish Kumar
added example links - keepTrackOfYourStack

4
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"

尝试将此内容添加到 Android Manifest 中的 Activity 标签中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接