开发通用的Android应用程序(手机和平板电脑)

时间:2011-07-29 11:07:38

标签: android

我正在开发一个通用的Android应用程序,我需要检查应用程序是在平板电脑还是手机中运行。有没有办法做到这一点?

4 个答案:

答案 0 :(得分:5)

您可以查看Google I/O App for Android src代码:

UIUtils课程中,您有以下方法:

public static boolean isHoneycomb() {
    // Can use static final constants like HONEYCOMB, declared in later versions
    // of the OS since they are inlined at compile time. This is guaranteed behavior.
    return Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB;
}

public static boolean isTablet(Context context) {
    return (context.getResources().getConfiguration().screenLayout
            & Configuration.SCREENLAYOUT_SIZE_MASK)
            >= Configuration.SCREENLAYOUT_SIZE_LARGE;
}

public static boolean isHoneycombTablet(Context context) {
    return isHoneycomb() && isTablet(context);
}

答案 1 :(得分:0)

在sdk中,您可以创建具有所需属性的设备(屏幕分辨率,内存,触摸屏,gps ....)

答案 2 :(得分:0)

这实际上是一个有趣的问题。 我没有绝对的答案,但你可能会在How to detect system information like os or device type

找到一些好的输入

此外,TelephonyManager中的TelephonyManager.getPhoneType()和其他方法可能也很有用。

使用Context.getSystemService(Context.TELEPHONY_SERVICE)获取TelephonyManager的实例。

答案 3 :(得分:0)

Google Jelly Bean的新实施:

 // SystemUI (status bar) layout policy
        int shortSizeDp = shortSize
                * DisplayMetrics.DENSITY_DEFAULT
                / DisplayMetrics.DENSITY_DEVICE;

        if (shortSizeDp < 600) {
            // 0-599dp: "phone" UI with a separate status & navigation bar
            mHasSystemNavBar = false;
            mNavigationBarCanMove = true;
        } else if (shortSizeDp < 720) {
            // 600-719dp: "phone" UI with modifications for larger screens
            mHasSystemNavBar = false;
            mNavigationBarCanMove = false;
        } else {
            // 720dp: "tablet" UI with a single combined status & navigation bar
            mHasSystemNavBar = true;
            mNavigationBarCanMove = false;
        }
        }