如何确定主屏幕的方向

How to determine orientation of home screen

有没有办法以编程方式确定主屏幕的方向?我玩过以下内容:

WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
int rotation = windowManager.getDefaultDisplay().getRotation();

Resources r = context.getResources();
int orientation = r.getConfiguration().orientation;

但这两个似乎都不合适,因为据我了解,即使屏幕方向发生变化,主屏幕也可能会锁定在特定方向。最值得注意的是,类似 phone 的设备似乎被锁定在纵向方向,而平板电脑屏幕似乎有旋转的主屏幕,但也许也可以被锁定。

基本上我需要这些信息才能正确更新主屏幕小部件(使用 OPTION_APPWIDGET_MIN_WIDTHOPTION_APPWIDGET_MAX_HEIGHT 确定其宽度和高度,如果是纵向)。但是,如果小部件在后台更新时屏幕恰好是横向的,那么它会以错误的方式获取宽度和高度,因为主屏幕实际上是纵向的。

有什么方法可以可靠地获取主屏幕方向?

Is there a way to determine programmatically the orientation of the home screen?

没有。主屏幕的作者可以为所欲为。众所周知,事物显示在对角线上。而且,由于有成百上千种主屏幕实现,任何给定设备上的行为都是不确定的。