检查android设备是否为平板电脑,即使在“中”;“缩放至填充屏幕”;模式

检查android设备是否为平板电脑,即使在“中”;“缩放至填充屏幕”;模式,android,tablet,Android,Tablet,我有一个android应用程序,可以安装在手机或平板电脑上。 但是,该应用程序与平板电脑设计不完全兼容,因此在“缩放至填充屏幕”模式下使用更方便 在特定过程中,我需要报告设备是否为平板电脑。 我一直在使用这个方法。 (将配置值保存在values-sw600dp和values-xlarge文件夹中) 但是当使用“缩放填充屏幕”模式时,它不工作。 获取的值是值中的默认值,而不是存储在“平板电脑相关”文件夹中的值 我还尝试使用getConfiguration().screenLayout检索屏幕布局,

我有一个android应用程序,可以安装在手机或平板电脑上。 但是,该应用程序与平板电脑设计不完全兼容,因此在“缩放至填充屏幕”模式下使用更方便

在特定过程中,我需要报告设备是否为平板电脑。 我一直在使用这个方法。 (将配置值保存在
values-sw600dp
values-xlarge
文件夹中)

但是当使用“缩放填充屏幕”模式时,它不工作。 获取的值是
中的默认值,而不是存储在“平板电脑相关”文件夹中的值

我还尝试使用
getConfiguration().screenLayout
检索屏幕布局,在这种情况下,我得到的是
screenLayout\u SIZE\u NORMAL
,而不是使用其他模式时检索的
screenLayout\u SIZE\u XLARGE


有没有办法知道运行应用程序的设备是平板电脑,即使是在“缩放填充屏幕”模式下?

这对我来说在正常模式下也很好。Pl检查它是否在缩放填充模式下工作

 private static boolean isTabletDevice(Context activityContext) {

            DisplayMetrics metrics = new DisplayMetrics();
            Activity activity = (Activity) activityContext;
            activity.getWindowManager().getDefaultDisplay().getMetrics(metrics);

            if (metrics.densityDpi == DisplayMetrics.DENSITY_DEFAULT
                    || metrics.densityDpi == DisplayMetrics.DENSITY_HIGH
                    || metrics.densityDpi == DisplayMetrics.DENSITY_MEDIUM
                    || metrics.densityDpi == DisplayMetrics.DENSITY_TV
                    || metrics.densityDpi == DisplayMetrics.DENSITY_XHIGH) {
                AppInstance.getLogger().logD("DeviceHelper","IsTabletDevice-True");
                return true;

        }
        AppInstance.getLogger().logD("DeviceHelper","IsTabletDevice-False");
        return false;
    }
您还可以检查设备的屏幕大小,计算屏幕大小(可能是对角线),如果屏幕大于7英寸或是平板电脑:

int width = activityContext.getResources().getDisplayMetrics().widthPixels;
int height = activityContext.getResources().getDisplayMetrics().heightPixels;

至于第一种方法,我不明白,如果所有密度都包含在声明中,那么if声明如何有效地将平板电脑与其他设备分离?移动设备是否也与这些密度相关?至于第二种方法——在常规模式和“缩放填充屏幕”模式下,这实际上会返回不同的结果。e、 g.regular将返回800像素宽,“zoom to fill…”将返回320像素宽,因此仍然无法理解它的平板电脑。