我如何区分手机和平板电脑

时间:2011-04-02 15:22:54

标签: android air

使用Adobe AIR for Android,我想找到一种区分手机和平板电脑的方法。我能找到的最接近的是检测dpi。 (我的手机dpi是254,我的平板电脑是149)但这是可靠的还是有更好的方法?

(我一直在使用stackoverflow,但这是我的第一篇文章 - yippee !!)

3 个答案:

答案 0 :(得分:1)

  

但这是可靠的

绝对不是。按此计算,T-Mobile G1将是平板电脑。

  

有更好的方法吗?

坦率地说,你不应该关心Android设备是电话,平板电脑,电视,烤面包机,望远镜还是厕所。

关心特征和能力。

例如,如果您在考虑屏幕大小方面的平板电脑,请使用<supports-screens>以及-large-xlarge资源集(例如res/layout/作为普通内容和res/layout-large/用于更大的屏幕尺寸。)

或者,如果您考虑使用平板电脑是否可以拨打电话,请使用<uses-feature>上的hasSystemFeature()PackageManager

答案 1 :(得分:0)

设备是否是平板电脑可能意味着......

一个....是否正在运行Honeycomb平板电脑版(Android 3.0)?您可以使用System.getProperty()来获取此信息。

两个......它是平板电脑吗?即屏幕尺寸更大?但请记住,一些平板电脑并不是那么大。处理这些问题的最佳方法是为每种设备大小分别设置资源。

我会说,一般来说,尝试将Android平板电脑定义为特定的组是一个坏主意,因为现在有很多品种,还有很多品种即将推出。所以通常最好构建你的应用程序,以便它处理不同的屏幕尺寸,不同的操作系统版本,以及可用或不存在的不同功能(例如GPS,键盘等)。

答案 2 :(得分:0)

cdotspace,不要担心真正的dpi,你只需要获得虚拟dpi:

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

Virutal 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
    }