私のアプリケーションの要件は、ユーザーがメディアを表示している場合を除いて、常に縦向きである必要があるということです。
私のマニフェストでは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");
}
}