我有一个可以安装在手机或平板电脑上的Android应用程序。 然而,该应用程序与平板电脑设计并不完全兼容,因此使用“缩放到填充屏幕”模式更方便。
在某个过程中,我需要报告设备是否是平板电脑。
我一直在使用this question中的方法。
(在values-sw600dp
和values-xlarge
文件夹中保存配置值)
但是,当使用“缩放到填充屏幕”模式时,它无法正常工作。
正在提取的值是values
中的默认值,而不是存储在“平板电脑相关”文件夹中的值。
我还尝试使用getConfiguration().screenLayout
检索屏幕布局,在这种情况下,当我使用其他模式时,我正在检索SCREENLAYOUT_SIZE_NORMAL
而不是SCREENLAYOUT_SIZE_XLARGE
- “伸展填写屏幕“。
即使处于“缩放到填充屏幕”模式,有没有办法知道运行应用程序的设备是平板电脑?
答案 0 :(得分:0)
这在正常模式下对我来说很好。如果它在缩放到填充模式下工作,请检查它。
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;