使用Adobe AIR for Android,我想找到一种区分手机和平板电脑的方法。我能找到的最接近的是检测dpi。 (我的手机dpi是254,我的平板电脑是149)但这是可靠的还是有更好的方法?
(我一直在使用stackoverflow,但这是我的第一篇文章 - yippee !!)
答案 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
}