【问题标题】:How to detect Tablet or Mobile in Android [duplicate]如何在Android中检测平板电脑或手机[重复]
【发布时间】:2014-02-24 05:39:43
【问题描述】:

您好,我创建了一个应用程序,我想在启动时检测平板电脑或手机。

我有 5.5 英寸的平板电脑。

如何实现?

【问题讨论】:

  • @GopalRao 在这个链接里,什么是SharedCode(SharedCode.width)?

标签: android mobile tablet


【解决方案1】:

试试这个

 public static boolean isTabletDevice(Context activityContext) {
    // Verifies if the Generalized Size of the device is XLARGE to be
    // considered a Tablet
    boolean xlarge = ((activityContext.getResources().getConfiguration().screenLayout & 
                        Configuration.SCREENLAYOUT_SIZE_MASK) == 
                        Configuration.SCREENLAYOUT_SIZE_XLARGE);

    // If XLarge, checks if the Generalized Density is at least MDPI
    // (160dpi)
    if (xlarge) {
        DisplayMetrics metrics = new DisplayMetrics();
        Activity activity = (Activity) activityContext;
        activity.getWindowManager().getDefaultDisplay().getMetrics(metrics);

        // MDPI=160, DEFAULT=160, DENSITY_HIGH=240, DENSITY_MEDIUM=160,
        // DENSITY_TV=213, DENSITY_XHIGH=320
        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) {

            // Yes, this is a tablet!
            return true;
        }
    }

    // No, this is not a tablet!
    return false;
}

【讨论】:

  • 我的平板的分辨率是480*800(型号-UBISLATE 7C+),手机分辨率也是480*800,搞混了。
  • 我已经编辑了我的答案,看看这个。
【解决方案2】:

在 android 中有一些目录,如 values-normal-ldpi 访问手机的尺寸,values-sw600dp 访问 7 英寸平板电脑和 values-sw720dp 访问 10 英寸平板电脑。您可以在这些目录中使用布尔变量,例如:-

<bool name="is_tablet">true</bool> 

为平板电脑目录设置为真,为手机设置为假。 像

一样访问它
    context.getResources().getBoolean(R.bool.is_tablet);

如果返回 true,则为平板电脑,否则为手机。

【讨论】:

  • 我的平板的分辨率是480*800(型号-UBISLATE 7C+),手机分辨率也是480*800,搞混了。
  • @SagarZala 我认为上面的代码适用于您的场景。看到这个stackoverflow.com/questions/9279111/…
  • 在上面的链接中,SharedCode (SharedCode.width) 是什么?
  • @SagarZala 查看用户 ol_v_er 给出的答案。我不知道什么是 SharedCode.width。
猜你喜欢
  • 1970-01-01
  • 2012-03-20
  • 2011-09-29
  • 2012-04-07
  • 1970-01-01
  • 1970-01-01
  • 2012-07-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多