2

如何通过我的程序找到设备是智能手机或桌子?我尝试了 android.os.Build 类的所有字段。我得到的信息是

操作系统版本:2.6.35.7(DXKL2)
操作系统 API 级别:10
设备:GT-S5360
型号(和产品):GT-S5360 (GT-S5360)
主板:totoro
品牌:samsung
CPU_ABI:armeabi
显示器:GINGERBREAD.DXKL2
指纹:samsung /GT-S5360/GT-S5360:2.3.6/GINGERBREAD/DXKL2:user/release-keys
主机:DELL152
Id:GINGERBREAD
制造商:samsung
类型:user
用户:root

这些信息对我没有帮助。有人可以告诉我如何找到它吗?

4

2 回答 2

3

你真正想知道什么?您想知道设备是否可以拨打电话吗?你想知道屏幕有多大吗?有一些 API 可以找出这些东西。

“智能手机”和“平板电脑”是营销标签——它们在技术层面上并没有真正的意义,因为一个人可以制造平板电脑大小的设备,通过手机网络拨打电话,一个人可以制造手机大小的设备除了wi-fi之外没有任何网络!

告诉我们您真正想知道的内容,我们可以为您指出正确的 API。

于 2012-07-06T13:27:22.107 回答
2

您可以调用此代码检查屏幕密度:

int screen_density = (getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK);

if (screen_density == Configuration.SCREENLAYOUT_SIZE_LARGE || screen_density == Configuration.SCREENLAYOUT_SIZE_XLARGE) {
     //The device is a tablet or at least has the screen density of a tablet
}

您还可以使用以下代码获取屏幕尺寸:

Display display = getWindowManager().getDefaultDisplay(); 
int width = display.getWidth();
int height = display.getHeight();

最后,请记住 android Honeycomb(3.+) 仅在平板电脑上运行,因此您可以使用以下命令检查 Android 版本:

int currentapiVersion = android.os.Build.VERSION.SDK_INT;

if(currentapiVersion == android.os.Build.VERSION_CODES.HONEYCOMB ||
   currentapiVersion == android.os.Build.VERSION_CODES.HONEYCOMB_MR1 || 
   currentapiVersion == android.os.Build.VERSION_CODES.HONEYCOMB_MR2) {

  //The device is a tablet
}

编辑:为了澄清起见,上面的代码假设您对设备屏幕尺寸和密度感兴趣,以便将设备分类为平板电脑。正如 Michael Kohne 的回答所述,有许多技术方面使这种分类变得困难(如果不是不可能的话)。

希望这可以帮助:)

于 2012-07-06T13:27:00.270 回答