23
A
回答
45
这应该做的伎俩为您提供:
import android.provider.Settings;
public static void setAutoOrientationEnabled(Context context, boolean enabled)
{
Settings.System.putInt(context.getContentResolver(), Settings.System.ACCELEROMETER_ROTATION, enabled ? 1 : 0);
}
添加许可权的AndroidManifest.xml
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
您可以找到的文档here
2
始终使用用户指定的屏幕方向,这将应用用户选择的任何方向,并且如果其禁用则不会旋转屏幕。
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_USER);
1
这是我对这个问题的障碍。我必须实现一个按钮,其功能与设置菜单中的锁定按钮相同。
可以使用setRotationScreenFromSettings解决您的问题
public static boolean getRotationScreenFromSettingsIsEnabled(Context context)
{
int result = 0;
try
{
result = Settings.System.getInt(context.getContentResolver(), Settings.System.ACCELEROMETER_ROTATION);
}
catch (Settings.SettingNotFoundException e)
{
e.printStackTrace();
}
return result == 1;
}
public static void setRotationScreenFromSettings(Context context, boolean enabled)
{
try
{
if (Settings.System.getInt(context.getContentResolver(), Settings.System.ACCELEROMETER_ROTATION) == 1)
{
Display defaultDisplay = ((WindowManager) context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
Settings.System.putInt(context.getContentResolver(), Settings.System.USER_ROTATION, defaultDisplay.getRotation());
Settings.System.putInt(context.getContentResolver(), Settings.System.ACCELEROMETER_ROTATION, 0);
}
else
{
Settings.System.putInt(context.getContentResolver(), Settings.System.ACCELEROMETER_ROTATION, 1);
}
Settings.System.putInt(context.getContentResolver(), Settings.System.ACCELEROMETER_ROTATION, enabled ? 1 : 0);
}
catch (Settings.SettingNotFoundException e)
{
e.printStackTrace();
}
}
private void regirsterLockScreenOrientationChangedListner()
{
ContentObserver rotationObserver = new ContentObserver(new Handler())
{
@Override
public void onChange(boolean selfChange)
{
refreshLockScreenOrientationBtn();
}
};
context.getContentResolver().registerContentObserver(Settings.System.getUriFor(Settings.System.ACCELEROMETER_ROTATION),
true, rotationObserver);
}`
添加权限在AndroidManifest.xml中
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
1
你必须使用下面的代码里面的onCreate()函数来解决它。工作...
setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
相关问题
- 1. 以编程方式启用/禁用Log4jLogger?
- 2. 以编程方式启用/禁用键盘声音和振动
- 3. 在macOS中以编程方式启用,禁用和启动服务
- 4. 如何以编程方式启用/禁用移动数据
- 5. 以编程方式启用和禁用某些@ RabbitListener的Spring?
- 6. 以编程方式禁用gif动画
- 7. 以编程方式禁用ScollViewer滚动
- 8. 以编程方式自动旋转锁定
- 9. 以编程方式启用/禁用沉浸模式
- 10. 以编程方式旋转UIViewController?
- 11. 启动后禁用屏幕旋转?
- 12. 如何以编程方式启用和禁用USB在Android应用程序
- 13. Magento - 以编程方式禁用自动索引
- 14. 以编程方式禁用Gboard上的自动建议
- 15. 以编程方式禁用自动布局约束
- 16. 如何以编程方式启用/禁用Windows功能
- 17. 在Windows 7上以编程方式启用/禁用连接
- 18. 以编程方式启用/禁用实体代理
- 19. 以编程方式启用/禁用蓝牙配置文件
- 20. 如何以编程方式启用/禁用Azure功能
- 21. 如何以编程方式启用/禁用IE代理设置?
- 22. 如何在rooted android上以编程方式禁用/启用gps?
- 23. 是否可以通过编程方式启用/禁用硬件?
- 24. Com端口以编程方式禁用/启用C#
- 25. 以编程方式启用/禁用设备的Win32 API函数
- 26. 以编程方式启用/禁用ASP.NET会话状态?
- 27. 你如何以编程方式禁用ListView和滚动ListView?
- 28. 如何禁用任何自动旋转?
- 29. 在Cocos2d中禁用自动旋转
- 30. 禁用UIView的自动旋转
这似乎工作,但它锁定你锁定横向方向,即使我在肖像。我正在测试蜂巢片,所以我不确定是否有区别....这是预期的行为吗? – christoff 2011-06-29 20:31:31