【问题标题】:Screen orientation not working with youtubePlayerfragment屏幕方向不适用于 youtubePlayerfragment
【发布时间】:2017-03-08 11:58:57
【问题描述】:

目前正在开发使用 youtube api 显示视频的 android 应用程序。在这个应用程序中,我使用 youtubeplayerfragment 在片段中显示视频。当我单击全屏视图时,屏幕的方向在全屏视图中更改为横向模式,当我单击从全屏模式退出时,屏幕仍处于横向模式,即使尝试通过旋转设备旋转,并且每次屏幕方向更改视频开始从开始。如何在方向更改时保留视频状态以及如何解决我的问题。

我的 youtube 代码在这里:

if (savedInstanceState == null) {
    mYouTubePlayerFragment.initialize(Constants.YOUTUBEDEVELOPERKEY,
        new YouTubePlayer.OnInitializedListener() {
            @Override
            public void onInitializationSuccess(YouTubePlayer.Provider provider,
                YouTubePlayer youTubePlayer, boolean b) {


                //on player full screen mode
                youTubePlayer.setShowFullscreenButton(true);
                youTubePlayer.setOnFullscreenListener(
                    new YouTubePlayer.OnFullscreenListener() {
                        @Override
                        public void onFullscreen(boolean b) {
                            Log.d(TAG, String.valueOf(b));
                        }
                    });

                //play video in the player
                if (!b) {
                    youTubePlayer.loadVideo(args.getString(Constants.VIDEOID));
                    youTubePlayer.play();
                } else {
                    youTubePlayer.play();
                }
            }

            @Override
            public void onInitializationFailure(
                YouTubePlayer.Provider provider,
                YouTubeInitializationResult youTubeInitializationResult) {
                Log.d("FeedVideoFragment", youTubeInitializationResult.toString());
                youTubeInitializationResult.getErrorDialog(getActivity(), 0);
            }
        });
    getActivity().getSupportFragmentManager().beginTransaction().add(R.id.youtube_fragment,
        mYouTubePlayerFragment, MYYOUTUBEFRAGMENT).commit();

} else {

    mYouTubePlayerFragment.initialize(Constants.YOUTUBEDEVELOPERKEY,
        new YouTubePlayer.OnInitializedListener() {
            @Override
            public void onInitializationSuccess(YouTubePlayer.Provider provider,
                YouTubePlayer youTubePlayer, boolean b) {


                //on player full screen mode
                youTubePlayer.setShowFullscreenButton(true);
                youTubePlayer.setOnFullscreenListener(
                    new YouTubePlayer.OnFullscreenListener() {
                        @Override
                        public void onFullscreen(boolean b) {

                        }
                    });

                //play video in the player
                if (!b) {
                    youTubePlayer.loadVideo(savedInstanceState.getString("videoId"));
                    youTubePlayer.play();
                } else {
                    youTubePlayer.play();
                }
            }

            @Override
            public void onInitializationFailure(
                YouTubePlayer.Provider provider,
                YouTubeInitializationResult youTubeInitializationResult) {
                Log.d("FeedVideoFragment", youTubeInitializationResult.toString());
                youTubeInitializationResult.getErrorDialog(getActivity(), 0);
            }
        });
    getActivity().getSupportFragmentManager().findFragmentByTag(MYYOUTUBEFRAGMENT);


}

【问题讨论】:

  • 您可以在此documentation 中验证您在实现屏幕方向方面是否做对了。这个tutorial 向您展示了如何在 YouTube 播放器中使用横向模式播放视频。因此,请尝试检查它是否可以帮助您。我还找到了与您的问题相关的 SO question

标签: android youtube-api


【解决方案1】:

用于保存视频状态 android:configChanges="keyboardHidden|orientation|screenSize" 在你的 您的片段出现的活动标签,例如:

<activity android:name=".activities.MainActivity"
   android:configChanges="keyboardHidden|orientation|screenSize">

在你的 onFullscreen 方法中检查播放器是否设置了全屏

@Override
       public void onFullscreen(boolean b) {
           Log.e("onFullscreen",""+b);
           if(b)
               fullscreen=1;
           else fullscreen=2;
       } 

在你的 backpress 中检查是否设置了全屏然后设置为 false

 @Override
           public void onBackPressed() {
               if(fullscreen==1)
               {
                   if(this.player!=null)
                       youTubePlayer.setFullscreen(false);
               }
               else
                   super.onBackPressed();
           } 

希望对你有帮助,对不起我的英语不好

【讨论】:

  • 只是 android:configChanges="orientation" 为我工作
猜你喜欢
  • 2014-06-05
  • 1970-01-01
  • 2018-01-13
  • 1970-01-01
  • 1970-01-01
  • 2016-01-11
  • 2015-10-22
  • 2015-07-17
相关资源
最近更新 更多