Cambiar la orientación de la pantalla mediante progtwigción utilizando un botón

Creo que esto es implementable ya que el comportamiento de rotación de pantalla puede subir al nivel de la aplicación.

    Sí, es implementable!

    ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE

    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 

    ActivityInfo.SCREEN_ORIENTATION_PORTRAIT

     setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 

    ActivityInfo

    http://developer.android.com/reference/android/content/pm/ActivityInfo.html

    Consulte el enlace:

     Button buttonSetPortrait = (Button)findViewById(R.id.setPortrait); Button buttonSetLandscape = (Button)findViewById(R.id.setLandscape); buttonSetPortrait.setOnClickListener(new Button.OnClickListener(){ @Override public void onClick(View arg0) { setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); } }); buttonSetLandscape.setOnClickListener(new Button.OnClickListener(){ @Override public void onClick(View arg0) { setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); } }); 

    http://android-er.blogspot.in/2011/08/set-screen-orientation-programmatically.html

    Sí, puede establecer la orientación de la pantalla de forma programática en cualquier momento que desee mediante:

     setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 

    para el modo paisaje y retrato, respectivamente. El método setRequestedOrientation () está disponible para la clase Activity , por lo que se puede usar dentro de tu Activity.

    Y así es como puede obtener la orientación de la pantalla actual y configurarla adecuadamente en función de su estado actual:

     Display display = ((WindowManager) getSystemService(WINDOW_SERVICE)).getDefaultDisplay(); final int orientation = display.getOrientation(); // OR: orientation = getRequestedOrientation(); // inside an Activity // set the screen orientation on button click Button btn = (Button) findViewById(R.id.yourbutton); btn.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { switch(orientation) { case Configuration.ORIENTATION_PORTRAIT: setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); break; case Configuration.ORIENTATION_LANDSCAPE: setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); break; } } }); 

    Tomado desde aquí: http://techblogon.com/android-screen-orientation-change-rotation-example/

    EDITAR

    Además, puede obtener la orientación de la pantalla usando la Configuration :

     Activity.getResources().getConfiguration().orientation 

    Use esto para establecer la orientación de la pantalla:

     setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 

    o

     setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 

    y no te olvides de agregar esto a tu manifiesto:

     android:configChanges = "orientation" 

    Siempre que sea posible, no use SCREEN_ORIENTATION_LANDSCAPE o SCREEN_ORIENTATION_PORTRAIT. En su lugar use:

     setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE); setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT); 

    Estos permiten al usuario orientar el dispositivo a la orientación horizontal o a la orientación vertical, respectivamente. Si alguna vez tuvo que jugar un juego con un cable de carga en su estómago, entonces sabe exactamente por qué es importante para el usuario tener ambas orientaciones disponibles.

    Nota: para teléfonos, al menos varios que he comprobado, solo permite el modo vertical “boca arriba”, sin embargo, SENSOR_PORTRAIT funciona correctamente en tabletas.

    Nota: esta característica se introdujo en el Nivel 9 de la API, por lo que si debe admitir 8 o menos (lo cual no es probable en este momento), utilice en su lugar:

     setRequestedOrientation(Build.VERSION.SDK_INT < 9 ? ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE : ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE); setRequestedOrientation(Build.VERSION.SDK_INT < 9 ? ActivityInfo.SCREEN_ORIENTATION_PORTRAIT : ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT); 

    Un código de trabajo:

     private void changeScreenOrientation() { int orientation = yourActivityName.this.getResources().getConfiguration().orientation; if (orientation == Configuration.ORIENTATION_LANDSCAPE) { setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); showMediaDescription(); } else { setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); hideMediaDescription(); } if (Settings.System.getInt(getContentResolver(), Settings.System.ACCELEROMETER_ROTATION, 0) == 1) { Handler handler = new Handler(); handler.postDelayed(new Runnable() { @Override public void run() { setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR); } }, 4000); } } 

    llama a este método en el botón clic