我怎样才能得到真实的"解析我的设备?

时间:2014-03-13 07:34:49

标签: android

是的,我知道我可以使用DisplayMetrics,但问题是在某些设备上widthPixels成员的值是错误的(至少我有这样一部手机)。 setting页面中的分辨率为720 * 1280,但widthPixels为600,而heightPixels中的DisplayMetrics为1067.

此外,我已尝试getRealSize并且返回的值正确无误。但最终我发现手机的“实际”宽度为640 (我猜高度也是一个不同的数字)。

真棒!这是怎么回事?

修改:

这里有一些数据 widthPixels中的DisplayMetrics为600. density为1.6,heightPixels为1067.

我已经尝试了所有方法,但都没有用。如果我能够轻松找到正确的答案,我不需要在这里发布我的问题。该设备为HN3-U01,中国制造

3 个答案:

答案 0 :(得分:0)

您可以使用此代码..

Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;

答案 1 :(得分:0)

// Get device resolution



int width = 0;
int height = 0;
Point size = new Point();
WindowManager w = getWindowManager();

if (Build.VERSION.SDK_INT >= 13)
{
    w.getDefaultDisplay().getSize(size);
    width = size.x;
    height = size.y;
}
else
{
    Display display = getWindowManager().getDefaultDisplay();
    width = display.getWidth();
    height = display.getHeight();
}

因为在API level 13

之后不推荐使用getWidth()和getHeight()方法

答案 2 :(得分:0)

试试这个

    private DisplayMetrics metrics;
    private int widthPixels;
private float scaleFactor;
private float widthDp;
    metrics = new DisplayMetrics();

    getActivity().getWindowManager().getDefaultDisplay().getMetrics(metrics);

    int density= getResources().getDisplayMetrics().densityDpi;

    widthPixels = metrics.widthPixels;

    scaleFactor = metrics.density;

    widthDp = widthPixels / scaleFactor;