2012-03-27 54 views
3

我想要檢測給定的設備是否是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;     
} 
+0

我上面提到的上述兩種方法我嘗試過,它沒有工作......我想從android程序得到它只使用用戶代理... – Karthik 2012-03-27 07:04:51

回答

7

試試看看這個代碼。你可以在屏幕英寸

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+""); 
6

資源創建兩個文件夾的佈局文件夾這樣佈局layout_xlarge .Create一個不必要的視圖佈局-xlarge file.Get這個不需要的視圖id編程方式。訪問不需要的我d在內部嘗試捕捉 blocak代碼,如果你得到空指針異常那麼小型設備否則平板。一件事藏在佈局XLARGE屏幕不必要的視圖。

2

我想到的第一個問題的答案是你所說的「手機」或「平板電腦」的意思。我們可能在腦海中有一些區別,但實際上,您的申請不應該在意。華碩變壓器是一款平板電腦,三星Galaxy Nexus是一款手機。什麼是Samsung Galaxy Note? Engadget和其他人稱之爲「平板手」 - 在這種情況下,您的應用程序應該假設什麼?

您的「平板電腦」是否定義了任何沒有SIM卡的設備?這也是一個錯誤的定義,因爲有許多平板電腦都有內置的SIM卡。您的「平板電腦」是否定義了默認爲橫向模式的任何設備,是否將轉換爲縱向模式?也許這是一種方法,但我懷疑這是否足夠,因爲可能會有片劑默認使用肖像,或者更糟糕的是將來有方形的因素。

在我看來,處理這個問題的最好方法是使用Android's guidelines並切換UI佈局。如果您認爲自己對平板電腦和手機有明確的定義,並且絕對需要檢測一種平板電腦,則可能需要執行一些操作,例如提取型號名稱from the browser's user agent string,然後將其與您維護的平板電腦名稱數據庫進行匹配。我知道。呸。

0

將此方法放在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英寸大小後啓動。

相關問題