我的应用程序需要显示器的确切英寸。我目前的解决方案是:
double inch;
double x = Math.pow(widthPix/dm.xdpi,2);
double y = Math.pow(heigthPix/dm.ydpi,2);
double screenInches = Math.sqrt(x+y);
inch = screenInches;
inch = inch * 10;
inch = Math.round(inch);
inch = inch / 10;
有没有更好的方法让显示屏英寸?我的测试设备上的电流为4英寸,它说5.9,这是错误的......
答案 0 :(得分:7)
以下给出了一个非常接近规格的结果:
DisplayMetrics dm = getResources().getDisplayMetrics();
double density = dm.density * 160;
double x = Math.pow(dm.widthPixels / density, 2);
double y = Math.pow(dm.heightPixels / density, 2);
double screenInches = Math.sqrt(x + y);
log.info("inches: {}", screenInches);
输出:inches: 4.589389937671455
规格:三星Galaxy Nexus(720 x 1280像素,~320 dpi,4.65“)
请注意,dm.heightPixels
(或dm.widthPixels
取决于您的行为方向)并不一定能提供准确的信息,因为软键(在Galaxy Nexus中使用)未添加到高度(或宽度)。
答案 1 :(得分:2)
尝试一下...。这将为您提供确切的显示尺寸。
static String getDisplaySize(Activity activity) {
double x = 0, y = 0;
int mWidthPixels, mHeightPixels;
try {
WindowManager windowManager = activity.getWindowManager();
Display display = windowManager.getDefaultDisplay();
DisplayMetrics displayMetrics = new DisplayMetrics();
display.getMetrics(displayMetrics);
Point realSize = new Point();
Display.class.getMethod("getRealSize", Point.class).invoke(display, realSize);
mWidthPixels = realSize.x;
mHeightPixels = realSize.y;
DisplayMetrics dm = new DisplayMetrics();
activity.getWindowManager().getDefaultDisplay().getMetrics(dm);
x = Math.pow(mWidthPixels / dm.xdpi, 2);
y = Math.pow(mHeightPixels / dm.ydpi, 2);
} catch (Exception ex) {
ex.printStackTrace();
}
return String.format(Locale.US, "%.2f", Math.sqrt(x + y));
}