Control default auto rotate screen in my application

后端 未结 4 518
我在风中等你
我在风中等你 2020-12-09 07:14

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

相关标签:
4条回答
  • 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>
    
    0 讨论(0)
  • 2020-12-09 07:21
    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);
        }
    });
    
    0 讨论(0)
  • 2020-12-09 07:34

    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()

    0 讨论(0)
  • 2020-12-09 07:45

    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

    0 讨论(0)
提交回复
热议问题