5

I have a toggle button in my application. I want to change or control default setting, Auto rotate screen(Settings>Display>Auto rotate screen) programmatically. Does anybody know how to do this?

SERPRO
  • 10,015
  • 8
  • 46
  • 63
Santhosh_pulliman
  • 2,119
  • 6
  • 30
  • 47

4 Answers4

10

Have you tried this in your Activity?

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

//This is the default value
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);

After that you can use this to disable the auto orientation:

public static void setAutoOrientationEnabled(ContentResolver resolver, boolean enabled)
{
  Settings.System.putInt(resolver, Settings.System.ACCELEROMETER_ROTATION, enabled ? 1 : 0);
}

Documentation

SERPRO
  • 10,015
  • 8
  • 46
  • 63
7

you can use this:

android.provider.Settings.System.putInt(getContentResolver(),
android.provider.Settings.System.USER ROTATION,user_rotation);

for rotation policy

user_rotation 0 -> ROTATION_0
user_rotation 1 -> ROTATION_90
user_rotation 2 -> ROTATION_180
user_rotation 3 -> ROTATION_270

see http://developer.android.com/reference/android/provider/Settings.System.html#USER_ROTATION for more.

Also menifiest.xml setting

<uses-permission android:name="android.permission.WRITE_SETTINGS"></uses-permission>
Alex
  • 688
  • 6
  • 8
Riddhish.Chaudhari
  • 833
  • 1
  • 8
  • 24
3

You set default rotation settings in your manifest file e.g:

<activity android:name=".MainTabActivity" android:screenOrientation="portrait">
</activity>

To change orientation programatically you have to call Activity.setRequestedOrientation()

vladexologija
  • 6,857
  • 4
  • 29
  • 28
  • After exit of my application, I want to set device's Auto rotation setting(Settings>Display>Auto rotation screen) false through my code. How can I achieve this? – Santhosh_pulliman Mar 15 '12 at 12:51
0
a1.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {
        startActivity(new Intent(getApplicationContext(), MainActivity.class));
        android.provider.Settings.System.putInt(getContentResolver(),
                android.provider.Settings.System.USER_ROTATION,0);
    }
});
a2.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {
        startActivity(new Intent(getApplicationContext(), MainActivity.class));
        android.provider.Settings.System.putInt(getContentResolver(),
                android.provider.Settings.System.USER_ROTATION,90);
    }
});
neubert
  • 15,947
  • 24
  • 120
  • 212
Karan
  • 1
  • 5