如何知道它是平板电脑还是安卓系统中的手机编程



我想在android中检测给定的设备是平板电脑还是手机。我在模拟器中试过这两种,但都不起作用。两者都在这里:

第一个

if ((getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_LARGE) 
{
    //code
}

第二个

    private boolean isTabletDevice() 
{         
    if (android.os.Build.VERSION.SDK_INT >= 11) 
    { 
    // honeycomb                    
    // test screen size, use reflection because isLayoutSizeAtLeast is only available since 11     
    Configuration con = getResources().getConfiguration();              
    try {                     
            Method mIsLayoutSizeAtLeast = con.getClass().getMethod("isLayoutSizeAtLeast");    
            Boolean r = (Boolean) mIsLayoutSizeAtLeast.invoke(con, 0x00000004); // Configuration.SCREENLAYOUT_SIZE_XLARGE    
            return r;              
        } catch (Exception x)
        {    
            return false;          
        }             
    }            
    return false;                   
}

试试这个代码。你可以得到屏幕英寸

    String inputSystem;
    inputSystem = android.os.Build.ID;
    Log.d("hai",inputSystem);
    Display display = getWindowManager().getDefaultDisplay(); 
    int width = display.getWidth();  // deprecated
    int height = display.getHeight();  // deprecated
    Log.d("hai",width+"");
    Log.d("hai",height+"");
    DisplayMetrics dm = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(dm);
    double x = Math.pow(width/dm.xdpi,2);
    double y = Math.pow(height/dm.ydpi,2);
    double screenInches = Math.sqrt(x+y);
    Log.d("hai","Screen inches : " + screenInches+"");

res文件夹中创建两个布局文件夹,如layoutlayout_xlarge。在布局xlarge文件中创建一个不需要的视图。用程序获取这个不需要的视图id。访问中代码中的不需要的id尝试catchblocak如果您得到空指针异常,则它是小型设备否则它是平板电脑。还有一件事可以在布局xlarge屏幕中隐藏不需要的视图。

我想首先要回答的问题是你所说的"手机"或"平板电脑"是什么意思。我们可能在脑海中有一些区别,但实际上,您的申请不应该在意。华硕变形金刚是一款平板电脑,三星Galaxy Nexus是一款手机。什么是三星Galaxy Note?Engadget和其他人称之为"phablet"——在这种情况下,您的应用程序应该假设什么?

你对"平板电脑"的定义是指没有SIM卡的设备吗?这也是一个错误的定义,因为许多平板电脑都内置了SIM卡。你对"平板电脑"的定义是指默认为横向模式,旋转为纵向模式的设备吗?也许这是一种方法,但我怀疑这是否足够,因为未来可能会有默认为人像的平板电脑,或者更糟的是,具有方形形状因子。

在我看来,处理这个问题的最好方法是使用Android的指导方针并打开UI布局。如果你认为你对平板电脑和手机有一个明确的定义,并且绝对需要检测其中一个,你可能需要做一些事情,比如从浏览器的用户代理字符串中提取型号名称,然后将其与你维护的平板电脑名称数据库相匹配。我知道。恶心。

将此方法放在onResume()中,然后可以进行检查。

public double tabletSize() {
     double size = 0;
        try {
            // Compute screen size
            DisplayMetrics dm = context.getResources().getDisplayMetrics();
            float screenWidth  = dm.widthPixels / dm.xdpi;
            float screenHeight = dm.heightPixels / dm.ydpi;
            size = Math.sqrt(Math.pow(screenWidth, 2) +
                                 Math.pow(screenHeight, 2));
        } catch(Throwable t) {
        }
        return size;
    }

一般片剂在6英寸大小之后开始。

相关内容

  • 没有找到相关文章

最新更新