2011-04-02 96 views
1

使用Adobe AIR for Android,我想找到區分手機和平板電腦的方法。我能找到的最接近的是檢測dpi。 (我的手機dpi是254,我的平板電腦是149),但這會是可靠的還是有更好的方法?如何區分手機和平板電腦

(我一直在使用計算器了一段時間,但是這是我的第一篇 - YIPPEE !!)

回答

1

,但要去可靠

絕對不是。 T-Mobile G1將會是這種措施的一款平板電腦。

有沒有更好的方法?

坦率地說,您不應該關心Android設備是電話,平板電腦,電視,烤麪包機,望遠鏡還是廁所。

應該關心特性和能力。

例如,如果你在屏幕尺寸方面考慮平板電腦,使用<supports-screens>-large-xlarge資源集(例如,res/layout/正常的東西,res/layout-large/對於更大的屏幕尺寸)。

或者,如果您在考慮是否可以撥打電話,請在PackageManager上使用<uses-feature>hasSystemFeature()

+0

我正在使用Adobe AIR for Android,我無法訪問這些屬性。如果我正在編寫原生Android應用程序,我可以這樣做。 我擔心的原因是我想允許平板電腦版本旋轉,但不是電話。我需要一個屏幕上的狀態欄和一個橫向的手機,它佔用了太多的房地產,並使遊戲區太小。 – cdotspace 2011-04-02 15:42:20

+1

@cdotspace:如果Adobe AIR無法檢測屏幕大小並對其做出反應,那麼Adobe AIR尚未準備好迎接黃金時段。請記住,如果您知道密度並知道分辨率,那麼您就知道尺寸 - 分辨率/密度=尺寸。 – CommonsWare 2011-04-02 16:55:35

+0

AIR有能力檢測並對屏幕尺寸做出反應,問題是平板電腦的可靠測試?這聽起來像你說'是'。 我同意Flash尚未準備好黃金時段,但在使用我的Xoom一個星期後,我會對目前可用的Android平板電腦說同樣的話。 – cdotspace 2011-04-04 12:52:13

0

無論設備是平板還是不意味着...

一...它運行Honeycomb平板電腦版本(Android 3.0)嗎?你可以使用System.getProperty()來獲取這些信息。

兩個....它是平板大小?即屏幕尺寸更大?但要記住一些平板電腦並不是那麼大。處理這些問題的最佳方法是爲每個設備大小分配資源。

我會說一般來說,嘗試將Android平板電腦定義爲特定組是一個糟糕的想法,因爲現在有很多種類,而且很多品種都將出現。因此,通常最好構建您的應用程序,以便處理不同的屏幕尺寸,不同的操作系統版本以及可用或不存在的不同功能(例如GPS,鍵盤等)。

+0

我正在構建的應用程序使用流體佈局(它實際上是Mac/Win桌面,iOS/Android手機/平板電腦和Web的一個源代碼),它只是主要內容區域太小一個電話在風景中。我決定讓用戶決定,如果他們不喜歡,他們可以旋轉回肖像。(蘋果很可能會拒絕它,但我並不真正關心iPhone)。 – cdotspace 2011-04-04 12:56:30

0

cdotspace,不用擔心真實的DPI,你只需要獲取當前虛擬DPI:

int virtual_dpi=webview1.getResources().getDisplayMetrics().densityDpi; 

當前虛擬DPI意味着每個虛擬英寸點數。例如,htc慾望hd的真實寬度是2.21英寸,但其虛擬寬度仍然是2英寸,星系標籤10.1的真實寬度是5.35英寸(縱向),但其虛擬寬度是5英寸。

int portrait_width_pixel=Math.min(this.getResources().getDisplayMetrics().widthPixels, this.getResources().getDisplayMetrics().heightPixels); 
int dots_per_virtual_inch=this.getResources().getDisplayMetrics().densityDpi; 
float virutal_width_inch=portrait_width_pixel/dots_per_virtual_inch; 
if (virutal_width_inch<=2) 
    {//is phone 
    } 
else 
    {//is tablet 
    }