0

Требование моего приложения заключается в том, что он должен оставаться в портретной ориентации в любое время, кроме случаев, когда пользователь просматривает носитель.Android Игнорировать изменение конфигурации

В моем манифесте я установил 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)); 
      } 
     }; 

Мой вопрос: Есть ли вообще игнорировать изменения конфигурации, основанные на обстоятельствах «Ъ» т.е. в коде ниже равно ложь?

Нет смысла в вызове метода 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"); 
     } 
    } 

ответ

0

Вы должны использовать другой подход

просто установить это, чтобы зафиксировать ориентацию, как портрет, если не играть YouTube

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT) 

когда переключатель играть YouTube, установить обратно, чтобы позволить вращение с помощью этой команды

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR) 
0

Решение, к которому я пришел, основано на ответе @Derek Fung, Я использую весь экран слушателя интерфейс проигрывателя YouTube

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

Так кто-то должен иметь конкретную юность смежный вопрос это лучший способ решить эту проблему я считаю.

Смежные вопросы