¿Cómo obtener el tamaño de pantalla del dispositivo Android desde la línea de comando adb?

3 minutos de lectura

avatar de usuario
usuario954469

Necesito una forma de detectar el tamaño y la densidad de la pantalla del dispositivo con adb. Si no hay solución, ¿dónde puedo obtener la lista completa de todos los dispositivos Android existentes con su tamaño y densidad de pantalla?

  • Si usa Appium, puede usar Dimension windowSize = driver.manage().window().getSize();.

    – Josué Pinter

    24 de junio de 2021 a las 21:02

avatar de usuario
Albert-Jan Verhees

También puede acceder a WindowManager a través de ADB:

$ adb shell wm
usage: wm [subcommand] [options]
       wm size [reset|WxH]
       wm density [reset|DENSITY]
       wm overscan [reset|LEFT,TOP,RIGHT,BOTTOM]

Para obtener la resolución de la pantalla:

$ adb shell wm size
Physical size: 2880x1600

Para obtener la densidad de la pantalla:

$ adb shell wm density
Physical density: 320

También puede anular la densidad agregando la nueva densidad:

$ adb shell wm density 160

La densidad de LCD está en build.prop:

adb shell getprop ro.sf.lcd_density

Y la resolución está disponible en el dumpsys de la actividad de entrada:

# windows
adb shell dumpsys window | find "DisplayWidth"
# linux
adb shell dumpsys window | grep DisplayWidth

Funciona en todos los dispositivos con los que he probado (2.2, 2.3.3, 2.3.4, 4.0.3; Acer Liquid E, HTC Wildfire S, HTC Incredible S, Motorola Atrix 4G, Samsung Galaxy Note, Samsung Galaxy Nexus) , así como el emulador, aunque las salidas del emulador son demasiado limpio para servir como un buen ejemplo para analizar.

  • También existe el rango mínimo/máximo de coordenadas de entrada válidas para los controladores de eventos que puede obtener usando getevent -p. Esto es relevante en los casos en los que parte del dispositivo de entrada táctil está debajo del bisel, por lo que el mínimo utilizable en realidad comienza en un valor superior a 0.

    – Nisan.H

    16 de marzo de 2012 a las 16:49

  • ro.sf.lcd_density no funciona para dos dispositivos que probé (GT-P7510 y Dell Streak) y funciona para otros 5 (GT-P1000, Galaxy Nexus, MotoA953, DROID2 GLOBAL, Xoom)

    – stansult

    18 de junio de 2013 a las 20:31


  • Si los comandos anteriores no funcionan, intente con el comando adb shell dumpsys window | encontrar “mUnrestrictedScreen”

    – Vinos

    11 de diciembre de 2013 a las 11:15


avatar de usuario
chr0m4k3y

dumpsys window displays

muestra algo como esto:

Display: mDisplayId=0
  init=1080x1920 480dpi cur=1080x1920 app=1080x1920 rng=1080x1005-1920x1845
  layoutNeeded=false

de otra manera:

dumpsys display

también muestra algunas cosas interesantes como:

mDefaultViewport=DisplayViewport{valid=true, displayId=0, orientation=0, logicalFrame=Rect(0, 0 - 1080, 1920), physicalFrame=Rect(0, 0 - 1080, 1920), deviceWidth=1080, deviceHeight=1920}

y por último pero no menos importante:

dumpsys power

mostrará algo como

Electron Beam State:
  mPrepared=false
  mMode=2
  mDisplayLayerStack=0
  mDisplayWidth=1080
  mDisplayHeight=1920
  mSurfaceVisible=false
  mSurfaceAlpha=0.0

que podría usar fácilmente para grep para mDisplayWidth y mDisplayHeight

avatar de usuario
Ilya Saunkin

Para obtener la información requerida de ADB, el siguiente comando ejecutado desde la línea de comando devolverá muchas propiedades útiles sobre los dispositivos conectados

> adb shell getprop

Para filtrar a través de estas propiedades

en Unix usa grep como

> adb shell getprop | grep density

en Windows usa buscar como

> adb shell getprop | findstr "density"

El valor devuelto parece

[ro.sf.lcd_density]: [240]

para tamaño de pantalla poner display en lugar de densidad

El trabajo es bueno:

dumpsys window | grep Display

retorno: Pantalla: init=320×480 cur=320×480 app=320×480 rng=320×295-480×455

ANDROID:/ # dumpsys window | grep  mGlobalConfiguration                                                                                                                                                
mGlobalConfiguration={1.0 ?mcc?mnc [en_US] ldltr sw720dp w1920dp h532dp 160dpi

Entonces la resolucion es 1920×720

avatar de usuario
Narcis Calvet

Puede obtener las dimensiones de la pantalla con este código:

public int getScreenHeight() {
    return getDisplay().getHeight();
}

private Display getDisplay() {
    return ((WindowManager) getContext().getSystemService(
            Context.WINDOW_SERVICE)).getDefaultDisplay();
}


public int getScreenWidth() {
    return getDisplay().getWidth();
}

Una vez que tenga la pantalla en el código anterior, puede usar Métricas de visualización para obtener la densidad. DisplayMetrics también le dará una visualización absoluta con y altura.

  • No puedo iniciar ninguna aplicación en los dispositivos.

    – usuario954469

    23 de septiembre de 2011 a las 10:50

¿Ha sido útil esta solución?