【问题标题】:Developing an universal android application (phone and tablet)开发通用安卓应用程序(手机和平板电脑)
【发布时间】:2011-10-15 21:02:57
【问题描述】:

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

【问题讨论】:

    标签: android


    【解决方案1】:

    您可以查看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);
    }
    

    【讨论】:

    • 您好 Macarse,我有一个与此主题相关的问题...我如何开发可在手机(2.2 及更高版本)和平板电脑上运行的通用应用程序?
    • 在开发应用时使用兼容性包。你可以在这里阅读更多内容 [developer.android.com/sdk/compatibility-library.html]
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      这实际上是一个有趣的问题。 我没有绝对的答案,但您可能会在这里找到一些不错的输入 How to detect system information like os or device type

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

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

      【讨论】:

      • Macarse 的回答看起来也很有希望。
      【解决方案4】:

      来自 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;
              }
              }
      

      【讨论】:

      • shortSize 是什么?
      猜你喜欢
      • 2012-12-17
      • 1970-01-01
      • 2016-06-18
      • 2012-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-23
      • 1970-01-01
      相关资源
      最近更新 更多