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?
Asked
Active
Viewed 1.9k times
4 Answers
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);
}

SERPRO
- 10,015
- 8
- 46
- 63
-
I don't want to change the orientation of a activity alone, but want to change the Settings. I want to enable and disable Auto rotation screen of Android settings. – Santhosh_pulliman Mar 15 '12 at 12:05
-
After exiting from my application, the device should not be able to auto rotate the screen. – Santhosh_pulliman Mar 15 '12 at 12:13
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);
}
});