通过代码[8英寸与10英寸平板电脑]区分android设备

通过代码[8英寸与10英寸平板电脑]区分android设备,android,Android,我正在为两个特定设备编写应用程序 在我的代码中,我想为一个小模块的每个设备编写不同的代码,但我无法区分这两种设备 我用过 double density = getResources().getDisplayMetrics().density; 但这两种方法返回的结果相同 1.33125071525737 使用getDisplayMetrics() 我试图得到这个决议,但结果都是一样的 1280x720 那么,在我的代码中,我用什么来区分这两种设备呢?您可以使用DisplayMetrics来

我正在为两个特定设备编写应用程序

在我的代码中,我想为一个小模块的每个设备编写不同的代码,但我无法区分这两种设备

我用过

double density = getResources().getDisplayMetrics().density;
但这两种方法返回的结果相同 1.33125071525737

使用
getDisplayMetrics()

我试图得到这个决议,但结果都是一样的

1280x720


那么,在我的代码中,我用什么来区分这两种设备呢?

您可以使用DisplayMetrics来获取有关运行应用程序的屏幕的全部信息

首先,我们创建一个DisplayMetrics对象:

DisplayMetrics displaymetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
int height = displaymetrics.heightPixels;
int wwidth = displaymetrics.widthPixels;
这将返回宽度和高度的绝对值(以像素为单位),因此对于Galaxy SIII、Galaxy Nexus等将返回1280x720

这本身通常是没有帮助的,因为当我们在安卓设备上工作时,我们通常更喜欢在密度无关的像素上工作

float scaleFactor = displaymetrics .density;
根据这个结果,我们可以计算出在一定高度或宽度下与密度无关的像素数量

float widthDp = widthPixels / scaleFactor
float heightDp = heightPixels / scaleFactor
根据以上信息,我们知道,如果设备的最小宽度大于600dp,则设备为7英寸平板电脑,如果大于720dp,则设备为10英寸平板电脑

我们可以使用Math类的min函数计算出最小宽度,传入heightDp和widthDp以返回最小宽度

float smallestWidth = Math.min(widthDp, heightDp);

if (smallestWidth > 720) {
    //Device is a 10" tablet
} 
else if (smallestWidth > 600) {
    //Device is a 7" tablet
}
然而,这并不总是给你一个精确的匹配,特别是当使用晦涩难懂的平板电脑时,这些平板电脑可能会将其密度误报为hdpi,而事实并非如此,或者可能只有800 x 480像素,但仍在7英寸的屏幕上

除了这些方法之外,如果您需要知道设备的精确尺寸(以英寸为单位),您也可以使用度量方法计算每英寸屏幕上有多少像素

float widthDpi = displaymetrics .xdpi;
float heightDpi = displaymetrics .ydpi;
您可以使用设备每英寸的像素数和像素总数的知识来计算设备的英寸数

float widthInches = widthPixels / widthDpi;
float heightInches = heightPixels / heightDpi;
这将返回设备的高度和宽度(以英寸为单位)。这对于确定设备类型也不是很有帮助,因为设备的广告尺寸是对角线,我们只有高度和宽度

然而,我们也知道,给定三角形的高度和宽度,我们可以使用毕达哥拉斯定理来计算斜边的长度(在这种情况下,屏幕对角线的大小)

由此,我们可以确定该设备是否为平板电脑:

if (diagonalInches >= 10) {
    //Device is a 10" tablet
} 
else if (diagonalInches >= 7) {
    //Device is a 7" tablet
}

谢谢,你在这里写的一个非常好的答案,非常有帮助!很乐意帮助。享受编码
if (diagonalInches >= 10) {
    //Device is a 10" tablet
} 
else if (diagonalInches >= 7) {
    //Device is a 7" tablet
}