0

私のアプリケーションの要件は、ユーザーがメディアを表示している場合を除いて、常に縦向きである必要があるということです。

私のマニフェストではandroid:configChanges="orientation|screenSize"、ユーザーが縦向きから横向きに変わるたびに onConfigurationChanged が呼び出されるように設定しました。

アプリに youtubeplayersupportfragment を実装しました。ユーザーがフルスクリーンを選択すると、必要に応じてユーザーがフルスクリーンで表示できるように、ユーザーが画面を横向きに回転できるようにします。

Youtubeplayer には、ここで実装したフルスクリーン リスナーがあります。

YouTubePlayer.OnInitializedListener YoutubePlayerInitializer = new YouTubePlayer.OnInitializedListener() {
            @Override
            public void onInitializationSuccess(YouTubePlayer.Provider provider, final YouTubePlayer youTubePlayer, boolean b) {
                youTubePlayer.cueVideo(new MediaUtils().getVideoId(mFeedContent.getMedia().getMediaUrl()));
                youTubePlayer.setPlayerStyle(YouTubePlayer.PlayerStyle.DEFAULT);
                youTubePlayer.setFullscreenControlFlags(2);

                youTubePlayer.setOnFullscreenListener(new YouTubePlayer.OnFullscreenListener() {
                    @Override
                    public void onFullscreen(boolean b) {
                        if(b)
                            PreferenceUtils.setDisplayMedia(b);
                        else PreferenceUtils.setDisplayMedia(b);
                    }
                });
            }

            @Override
            public void onInitializationFailure(YouTubePlayer.Provider provider, YouTubeInitializationResult youTubeInitializationResult){
                Log.i(AbstractHolder.class.getSimpleName(), String.valueOf(youTubeInitializationResult));
            }
        };

私の質問は次のとおりです。状況に基づいて構成の変更を無視する方法はありますか。つまり、以下のコードの「b」は false に等しいですか?

メソッド setRequestedOrientation() を呼び出す意味はありません。これは向きを永久に修正し、向きが変更されたときに呼び出される必要がある onconfigurationchanged が再度呼び出されないためです。

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

        boolean media = PreferenceUtils.getDisplayMedia();

        if (newConfig.orientation == newConfig.ORIENTATION_LANDSCAPE && media) {
            //ALLOW ROTATION
            L.i(MainActivity.class.getSimpleName(), "==================================LANDSCAPE");
        } else {
            //IGNORE CONFIGURATION CHANGE
            L.i(MainActivity.class.getSimpleName(), "==================================PORTRAIT");
        }
    }
4

2 に答える 2

0

別のアプローチを使用する必要があります

YouTubeを再生していない場合は、これを設定して縦向きに固定します

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT)

YouTube の再生に切り替えるときは、このコマンドで回転できるように設定を戻します

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR)
于 2015-09-02T17:19:36.683 に答える