小编典典

确定设备是智能手机还是平板电脑?

all

我想获取有关设备的信息,以查看它是智能手机还是平板电脑。我该怎么做?

我想根据设备类型显示来自资源的不同网页:

String s="Debug-infos:";
s += "\n OS Version: " + System.getProperty("os.version") + "(" +    android.os.Build.VERSION.INCREMENTAL + ")";
s += "\n OS API Level: " + android.os.Build.VERSION.SDK;
s += "\n Device: " + android.os.Build.DEVICE;
s += "\n Model (and Product): " + android.os.Build.MODEL + " ("+ android.os.Build.PRODUCT + ")";

但是,这对我的情况似乎没用。


这个解决方案现在对我有用:

DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int width = metrics.widthPixels;
int height = metrics.heightPixels;

if (SharedCode.width > 1023 || SharedCode.height > 1023){
   //code for big screen (like tablet)
}else{
   //code for small screen (like smartphone)
}

阅读 64

收藏
2022-04-20

共1个答案

小编典典

Android 培训中讨论了这个主题:

使用最小宽度限定符

如果您阅读了整个主题,他们会解释如何在特定值文件(如 res/values-sw600dp/attrs.xml)中设置布尔值:

<resources>
    <bool name="isTablet">true</bool>
</resources>

因为 sw600dp 限定符只对 android 3.2 以上的平台有效。如果您想确保此技术适用于所有平台(3.2 之前),请在 res/values-
xlarge 文件夹中创建相同的文件:

<resources>
    <bool name="isTablet">true</bool>
</resources>

然后,在“标准”值文件(如 res/values/attrs.xml)中,将布尔值设置为 false:

<resources>
    <bool name="isTablet">false</bool>
</resources>

然后在您的活动中,您可以获得此值并检查您是否在平板电脑大小的设备中运行:

boolean tabletSize = getResources().getBoolean(R.bool.isTablet);
if (tabletSize) {
    // do something
} else {
    // do something else
}
2022-04-20