0

L'une des exigences de mon application est qu'elle doit rester en mode portrait à tout moment, sauf lorsque l'utilisateur visualise un média.Android Ignorer le changement de configuration

Dans mon manifeste, j'ai défini android:configChanges="orientation|screenSize", donc onConfigurationChanged est appelé chaque fois que l'utilisateur passe du mode portrait au mode paysage. J'ai mis en place un fragment de support youtubeplayersupport dans mon application. Lorsque l'utilisateur sélectionne le plein écran, je veux permettre à l'utilisateur de faire pivoter l'écran en mode paysage, afin de permettre à l'utilisateur de voir en plein écran si nécessaire.

Le Youtubeplayer a un écouteur plein écran que j'ai mis en œuvre ici

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)); 
      } 
     }; 

Ma question est la suivante: Y at-il de toute façon d'ignorer les changements de configuration en fonction des circonstances à savoir « b » dans le code ci-dessous est false?

Il ne sert à rien d'appeler la méthode setRequestedOrientation() car elle corrige définitivement l'orientation et onconfigurationchanged ne reçoit plus d'appel dont j'ai besoin d'être appelé lorsque l'orientation est modifiée.

@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"); 
     } 
    } 

Répondre

0

Vous devez utiliser une autre approche

simplement mis cette option pour verrouiller l'orientation en portrait si ne pas jouer youtube

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT) 

lorsque l'interrupteur à jouer sur youtube, en retrait pour permettre la rotation avec cette commande

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR) 
0

La solution à laquelle je suis parvenu est basée sur la réponse de @Derek Fung, J'utilise l'interface complète écouteur d'écran du lecteur 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); 
       } 
      } 
     }); 

Donc, si quelqu'un a une question connexe spécifique youtube c'est la meilleure façon de le résoudre, je crois.