即使在"zoom to fill screen"模式下,检查安卓设备是否是平板电脑



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

在某个过程中,我需要报告该设备是否是平板电脑。 我一直在使用这个问题中的方法。 (在values-sw600dpvalues-xlarge文件夹中保存配置值)

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

我还尝试使用getConfiguration().screenLayout检索屏幕布局,在这种情况下,我得到的是SCREENLAYOUT_SIZE_NORMAL,而不是使用其他模式时检索SCREENLAYOUT_SIZE_XLARGE- "拉伸填充屏幕"。

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

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

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;

最新更新