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

开发通用android应用程序(手机和平板电脑),android,Android,我正在开发一个通用的android应用程序,我需要检查该应用程序是在平板电脑上运行还是在手机上运行。有什么方法可以做到这一点吗?在sdk中,您可以创建具有所需属性(屏幕分辨率、ram、触摸屏、gps……)的设备。您可以检查src代码: 在该类中,您有以下方法: public static boolean isHoneycomb() { // Can use static final constants like HONEYCOMB, declared in later versions

我正在开发一个通用的android应用程序,我需要检查该应用程序是在平板电脑上运行还是在手机上运行。有什么方法可以做到这一点吗?

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

您可以检查src代码:

在该类中,您有以下方法:

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

这实际上是一个有趣的问题。 我没有绝对的答案,但你可能会在这里找到一些好的输入

此外,TelephonyManager.getPhoneType()和TelephonyManager中的其他方法可能会引起兴趣


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

来自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;
        }
        }
//SystemUI(状态栏)布局策略
int shortSizeDp=shortSize
*DisplayMetrics.DENSITY\u默认值
/DisplayMetrics.DENSITY\u设备;
如果(短尺寸P<600){
//0-599dp:“电话”用户界面,带有单独的状态和导航栏
mHasSystemNavBar=false;
mNavigationBarCanMove=true;
}否则如果(shortSizeDp<720){
//600-719dp:“电话”用户界面,带有较大屏幕的修改
mHasSystemNavBar=false;
mNavigationBarCanMove=false;
}否则{
//720dp:“平板电脑”用户界面,带有单个组合状态和导航栏
mHasSystemNavBar=true;
mNavigationBarCanMove=false;
}
}

Macarse的答案看起来也很有希望。你好,Macarse,我有一个与此主题相关的问题。。。如何开发将在手机(2.2及更高版本)和平板电脑上运行的通用应用程序?开发应用程序时请使用兼容软件包。您可以在这里阅读更多内容[什么是
shortSize