我想创建一个切换按钮,通过它我可以启用/禁用自动旋转。我试过这个:
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:选定的方向应该应用于整个操作系统,而不仅仅是应用程序。
答案 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);