我有一个安卓应用程序,可以安装在手机或平板电脑上。 但是,该应用程序在设计方面与平板电脑不完全兼容,因此将其与"缩放以填充屏幕"模式一起使用更方便。
在某个过程中,我需要报告该设备是否是平板电脑。 我一直在使用这个问题中的方法。 (在values-sw600dp
和values-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;