通过切换控制自动旋转?

时间:2015-05-15 17:18:47

标签: android orientation settings

我想创建一个切换按钮,通过它我可以启用/禁用自动旋转。我试过这个:

public void arclick(View view) {
        if (arclick.isChecked())
            android.provider.Settings.System.putInt(getContentResolver(),
                    android.provider.Settings.System.USER_ROTATION, 90);
        else
            android.provider.Settings.System.putInt(getContentResolver(),
                    android.provider.Settings.System.USER_ROTATION, 0);
    }

但它实际上并没有起作用。有任何想法吗?提前致谢!!! P.S:选定的方向应该应用于整个操作系统,而不仅仅是应用程序。

1 个答案:

答案 0 :(得分:1)

根据开发人员文档:

  

USER_ROTATION:   没有其他策略适用时的默认屏幕旋转。当ACCELEROMETER_ROTATION为零并且没有屏幕上的活动表达首选项时,将使用此轮换值。必须是Surface旋转常量之一。

在使用USER_ROTATION之前,您需要将ACCELEROMETER_ROTATION设置为0。 喜欢:

android.provider.Settings.System.putInt(getContentResolver(),
android.provider.Settings.System.ACCELEROMETER_ROTATION, 0); 
if (arclick.isChecked())
    android.provider.Settings.System.putInt(getContentResolver(),
            android.provider.Settings.System.USER_ROTATION, Surface.ROTATION_90);
else
    android.provider.Settings.System.putInt(getContentResolver(),
            android.provider.Settings.System.USER_ROTATION, Surface.ROTATION_0);

并且不要使用值90,请使用Surface.ROTATION_90(其值为1而不是90)。

如果要禁用旋转功能,请使用:

if(disable)
   android.provider.Settings.System.putInt(getContentResolver(),
   android.provider.Settings.System.ACCELEROMETER_ROTATION, 0); 
else //enable
   android.provider.Settings.System.putInt(getContentResolver(),
   android.provider.Settings.System.ACCELEROMETER_ROTATION, 1);