猿问

确定设备是智能手机还是平板电脑?

确定设备是智能手机还是平板电脑?

我想了解一个设备的信息,看看它是智能手机还是平板电脑。我该怎么做?

我想根据设备的类型显示与资源不同的网页:

String s="Debug-infos:";s += "\n OS Version: " + System.getProperty("os.version") + "(" +    android.os.Build.VERSION.INCREMENTAL + ")";
s += "\n OS API Level: " + android.os.Build.VERSION.SDK;s += "\n Device: " + android.os.Build.DEVICE;s += "\n Model (and Product): "
 + android.os.Build.MODEL + " ("+ android.os.Build.PRODUCT + ")";

不过,对我的案子来说,这似乎是毫无用处的。


这个解决方案现在适用于我:

DisplayMetrics metrics = new DisplayMetrics();getWindowManager().getDefaultDisplay().getMetrics(metrics);
int width = metrics.widthPixels;int height = metrics.heightPixels;if (SharedCode.width > 1023 || SharedCode.height > 1023){
   //code for big screen (like tablet)}else{
   //code for small screen (like smartphone)}


白衣染霜花
浏览 578回答 3
3回答

冉冉说

在Android培训中讨论了这个问题:使用最小宽度限定符如果您阅读了整个主题,它们将解释如何在特定的值文件中设置布尔值(作为res/value-sw600dp/attap.xml):<resources> &nbsp;&nbsp;&nbsp;&nbsp;<bool&nbsp;name="isTablet">true</bool></resources>因为sw600dp限定符只对Android3.2以上的平台有效。如果您想确保此技术在所有平台(3.2之前)都能工作,请在res/value-XLarge文件夹中创建相同的文件:<resources> &nbsp;&nbsp;&nbsp;&nbsp;<bool&nbsp;name="isTablet">true</bool></resources>然后,在“标准”值文件(作为res/value/)中,将布尔值设置为false:<resources> &nbsp;&nbsp;&nbsp;&nbsp;<bool&nbsp;name="isTablet">false</bool></resources>然后,在您的活动中,您可以获得这个值,并检查您是否运行在一个平板大小的设备中:boolean&nbsp;tabletSize&nbsp;=&nbsp;getResources().getBoolean(R.bool.isTablet);if&nbsp;(tabletSize)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;do&nbsp;something}&nbsp;else&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;do&nbsp;something&nbsp;else}

翻阅古今

我认为平板电脑至少有6.5英寸的屏幕。这是如何计算它,根据诺尔夫上面的答案。DisplayMetrics&nbsp;metrics&nbsp;=&nbsp;new&nbsp;DisplayMetrics();getActivity().getWindowManager().getDefaultDisplay().getMetrics(metrics); float&nbsp;yInches=&nbsp;metrics.heightPixels/metrics.ydpi;float&nbsp;xInches=&nbsp;metrics.widthPixels/metrics.xdpi; double&nbsp;diagonalInches&nbsp;=&nbsp;Math.sqrt(xInches*xInches&nbsp;+&nbsp;yInches*yInches);if&nbsp;(diagonalInches>=6.5){ &nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;6.5inch&nbsp;device&nbsp;or&nbsp;bigger}else{ &nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;smaller&nbsp;device}

忽然笑

我的假设是,当您定义“Mobile/Phone”时,您希望知道是否可以在设备上打电话,而该设备不能在定义为“平板电脑”的设备上进行。验证这一点的方法如下。如果你想知道一些基于传感器,屏幕大小等的信息,那么这确实是一个不同的问题。此外,虽然使用屏幕分辨率,或资源管理对XLarge,可能是一种有效的方法,在过去,新的‘移动’设备现在有如此大的屏幕和高分辨率,他们正在模糊这一行,而如果你真的想知道电话与没有电话通话能力,下面是‘最好的’。TelephonyManager&nbsp;manager&nbsp;=&nbsp;(TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(manager.getPhoneType()&nbsp;==&nbsp;TelephonyManager.PHONE_TYPE_NONE){ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;"Tablet"; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}else{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;"Mobile"; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
随时随地看视频慕课网APP

相关分类

Android
我要回答