我们使用“屏幕尺寸”资源限定符来确定设备的尺寸——粗略地说是手机还是平板电脑。这是因为我们的应用程序旨在在手机上以纵向模式启动,在平板电脑上以横向模式启动。
我们在 Android 12 上的 Pixel 6 中发现了一个明显的错误 - 当显示尺寸设置为小(操作系统设置 -> 显示 -> 显示尺寸)并且方向为纵向时,操作系统将屏幕尺寸报告为“大”。如果它在横向,它报告为“正常”(这是我们所期望的)。我们在其他设备上进行了尝试,包括 Pixel 3a、4a 和一些三星设备,但它在这些设备上的表现并非如此 - 所以只有 Pixel 6 存在我们测试的那些问题。
(在代码context.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK
中,纵向等于 3,横向等于 2)。
这导致了我们的应用程序中的一个错误,让我们都晕船了 - 方向一直在纵向和横向之间来回变化,因为它一直将其检测为大型设备然后旋转它,然后它不再是大型设备并旋转背部。
鉴于这种奇怪的行为,是否有任何方法可以可靠地确定屏幕尺寸,以区分“手机”和“平板电脑”?