Get screen resolution of device

14,615

Solution 1

The best way to get your screen resolution is from DisplayMetrics :

DisplayMetrics displayMetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
int width = displayMetrics.widthPixels;
int height = displayMetrics.heightPixels;

Solution 2

If you are targeting for API >= 17, try with the getRealSize method of the Display class:

WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
Point size = new Point();
wm.getDefaultDisplay().getRealSize(size);
String resolution = size.x + "x" + size.y;

for me, it worked.

Solution 3

Use this one:

private static String getScreenResolution(Context context)
{
    WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
    Display display = wm.getDefaultDisplay();
    DisplayMetrics metrics = new DisplayMetrics();
    display.getMetrics(metrics);
    int width = metrics.widthPixels;
    int height = metrics.heightPixels;

    return "{" + width + "," + height + "}";
}

Solution 4

The API returns the number of pixels an app can use, so this is the correct result.

Share:
14,615
prom85
Author by

prom85

Updated on June 04, 2022

Comments

  • prom85
    prom85 almost 2 years

    I used following method to get the screen size:

    public static Point getScreenSize(Context context)
    {
        WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
        int w = wm.getDefaultDisplay().getWidth();
        int h = wm.getDefaultDisplay().getHeight();
        return new Point(w, h);
    }
    

    On my samsung galaxy s6, this method returns 1080x1920... Although my device has a resolution of 1440x2560.

    Why? Is there a better method to get the screen resolution that works on newer phones reliable as well?

    EDIT

    I need this method in a service! I don't have a view/activity for help, only the application context! And I need the REAL pixels

  • prom85
    prom85 almost 8 years
    returns the same values... I really need to know the real physical size of the device
  • prom85
    prom85 almost 8 years
    returns the same values... I really need to know the real physical size of the device
  • ViramP
    ViramP almost 8 years
    You can't get device physical size in all device because that depends on device as well. ie. Check two devices Nexus 5 Lenovo K3 both size is 1080X1920 but when you call above function then get different values. so you check hardware button with device and marge those height with device height so at end you can get actual physical size which manufacture displaying at product.
  • A P
    A P over 7 years
    How can i call this method from my class
  • ViramP
    ViramP over 7 years
    WindowManager wm = (WindowManager) this.getSystemService(Context.WINDOW_SERVICE); Display display = wm.getDefaultDisplay(); DisplayMetrics metrics = new DisplayMetrics(); display.getMetrics(metrics); int width = metrics.widthPixels; int height = metrics.heightPixels;
  • Alexey Ozerov
    Alexey Ozerov about 6 years
    No, as getMetrics subtracs decor size. Use getRealSize()