2016-07-29 1 views
0

Je développe une application de verrouillage d'écran dans laquelle j'ajoute une vue en utilisant WindowManager dans un service. J'ai défini Orientation PORTRAIT dans le fichier manifeste pour toutes les activités mais cela ne semble pas fonctionner pour cette vue ajoutée dynamiquement.Désactiver le changement d'orientation - WindowManager

S'il vous plaît voir ci-dessous l'extrait de code

public class LockerService extends Service{ 
     @Override 
      public void onCreate() { 
       super.onCreate(); 
       windowManager = (WindowManager) getSystemService(WINDOW_SERVICE); 
       lockScreenView = new LockScreenView(this, this); 
       windowManager.addView(lockScreenView, params); 
    } 
} 

LockScreen vue comme suit:

public class LockScreenView extends RelativeLayout{ 
public LockScreenView(Context context, ScreenUnlockedDeligate screenUnlockedDeligate) { 
     super(context); 
     setSystemUiVisibility(SYSTEM_UI_FLAG_IMMERSIVE_STICKY | SYSTEM_UI_FLAG_FULLSCREEN | SYSTEM_UI_FLAG_HIDE_NAVIGATION); 
     inflate(getContext(), R.layout.view_lock, this); 

    } 

} 

Est-il possible que je puisse désactiver le changement d'orientation pour ce point de vue? i.e. Orientation.PORTRAIT

EDIT:

setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

ne semble pas être disponible dans ce contexte

Merci d'avance !!

Salutations

Répondre

0

Après quelques recherches, j'ai trouvé une solution.

Ajout

params.screenOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;

avant d'ajouter la vue va résoudre le problème et verrouiller l'orientation comme vous le souhaitez.

comme:

public class LockerService extends Service{ 
      @Override 
       public void onCreate() { 
        super.onCreate(); 
        windowManager = (WindowManager) getSystemService(WINDOW_SERVICE); 
        lockScreenView = new LockScreenView(this, this); 
        params.screenOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT; 
        windowManager.addView(lockScreenView, params); 
     } 
    }