Cómo cambiar la orientación de bloqueo en Android?

Quiero crear una casilla de verificación en mi preferencia Actividad que permite al usuario cambiar el cambio de orientación.

En preguntas similares, las personas sólo escriben sobre el bloqueo de orientación completo (mediante la modificación del método onConfigurationChanged o la adición de configChanges en AndroidManifest.xml) o la imposición de la orientación (por setRequestedOrientation).

¿Hay una manera de cambiar el bloqueo de orientación?


EDIT: He creado un método que establece la orientación preferida a uno de los tres estados: paisaje, retrato y sensor. Este método se utiliza junto con la orientación getResources().getConfiguration().orientation) Y guardar la orientación recuperada en las preferencias. Luego, en la actividad que necesita bloquear la orientación, disparo este método con la orientación preferida de las preferencias.

 private static void setActivityOrientation(Activity activity, int preferenceOrientation) { if (preferenceOrientation == Configuration.ORIENTATION_LANDSCAPE) { if( activity.getRequestedOrientation() != ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE){ // You need to check if your desired orientation isn't already set because setting orientation restarts your Activity which takes long activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); } } else if (preferenceOrientation == Configuration.ORIENTATION_PORTRAIT) { if( activity.getRequestedOrientation() != ActivityInfo.SCREEN_ORIENTATION_PORTRAIT){ activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); } } else { if( activity.getRequestedOrientation() != ActivityInfo.SCREEN_ORIENTATION_SENSOR){ activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR); } } } 

No entiendo cuál es el problema con el setRequestedOrientation.

El SCREEN_ORIENTATION_SENSOR se combinan con el paisaje o el retrato parecen lo que quieres, ¿no?

 if(....) setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); else if(....) setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); else if(....) setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR); 
  • Mi aplicación Android gira aunque la rotación de la pantalla esté desactivada en el sistema operativo. ¿Cómo puedo arreglar esto?
  • Orientación de Android AR
  • Bloquear / desbloquear la orientación
  • Android VideoView no se reproduce Orientación de retrato
  • Android: fija la orientación de la pantalla sólo para una página (diferencia telefónica)
  • Rotación de vista previa de la cámara Android
  • Combine giroscopio con acelerómetro para obtener el rumbo
  • Datos Exif TAG_ORIENTATION siempre 0
  • Odroid-XU4 Android orientación a pantalla completa
  • ¿Está correctamente documentada la CameraInfo.orientation de Android? ¿Implementado incorrectamente?
  • Evento del dispositivo Android onConfigurationChanged no controla la orientación
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.