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