簡體   English   中英

如何從 adb 命令行獲取 Android 設備屏幕大小?

[英]How to get the Android device screen size from the adb command line?

我需要一種使用 adb 檢測設備屏幕大小和密度的方法。 如果沒有解決方案,我在哪里可以獲得所有現有 android 設備及其屏幕尺寸和密度的完整列表?

您還可以通過 ADB 訪問 WindowManager:

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

獲取屏幕分辨率:

$ adb shell wm size
Physical size: 2880x1600

要獲取屏幕密度:

$ adb shell wm density
Physical density: 320

您還可以通過添加新密度來覆蓋密度:

$ adb shell wm density 160

LCD 密度在 build.prop 中:

adb shell getprop ro.sf.lcd_density

並且在輸入活動的轉儲系統中可以找到解決方案:

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

它適用於我測試過的所有設備(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) ,以及模擬器,雖然模擬器的輸出太干凈了,不能作為解析.

dumpsys window displays

顯示如下:

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

其他方式:

dumpsys display

還展示了一些有趣的東西,比如:

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

最后但並非最不重要:

dumpsys power

將顯示類似

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

您可以輕松地使用 grep for mDisplayWidth 和 mDisplayHeight

要從 ADB 獲取所需信息,從命令行執行的以下命令將返回有關連接設備的許多有用屬性

> adb shell getprop

篩選這些屬性

在 Unix 上使用 grep 之類的

> adb shell getprop | grep density

在 Windows 上使用 find like

> adb shell getprop | findstr "density"

返回值看起來像

[ro.sf.lcd_density]: [240]

對於屏幕尺寸,將顯示而不是密度

工作很好:

dumpsys window | grep Display

返回:顯示:init=320x480 cur=320x480 app=320x480 rng=320x295-480x455

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

所以分辨率是1920x720

您可以使用以下代碼獲取屏幕尺寸:

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

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


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

在上面的代碼中擁有 Display 后,您可以使用DisplayMetrics來獲取密度。 DisplayMetrics 還將為您提供絕對顯示和高度。

如果您需要了解市場上可用的 Android 設備范圍的當前狀態 屏幕尺寸和密度 單擊此處

此數據基於截至數據收集日期的 7 天內訪問過 Android Market 的 Android 設備數量

查看 adb shell dumpsys 的輸出。 屏幕大小和許多其他信息一起出現在那里好幾次。

...雖然現在我在辦公室,但它可以在我的手機上運行,​​但 Galaxy 平板電腦卻沒有。 該死的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM