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

标签 android device-detection

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

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

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)
}

最佳答案

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

Use the Smallest-width Qualifier

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

<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)中,将 bool 值设置为 false:

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

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

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

关于android - 确定设备是智能手机还是平板电脑?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9279111/

相关文章:

android - 初始化项目时的“java.lang.NoSuchFieldError: ConstraintLayout_Layout_layoutDescription”

Android BiometricPrompt 兼容库

nuxt.js - Nuxt 设备检测与生成

c# - 每次需要时使用 Request.Browser.IsMobileDevice 或将信息放在 Session 变量中哪个更有效?

android - 与 adb shell 中的 linux tree 命令类似的命令

java - 垂直 ViewPager 中的动画

javascript - 如何识别用户代理是否为 Windows 8 平板电脑?

android - 一般如何检测 Android 平板电脑。用户代理?

java - Android recyclerview 向上滚动时加载更多数据

javascript - 在网络上检测移动浏览器?