我需要一种通过adb检测设备屏幕尺寸和像素密度的方法。如果没有解决方案,那么我可以在哪里获取所有现有安卓设备的完整列表,包括它们的屏幕尺寸和像素密度?
你也可以通过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
在build.prop文件中可以找到LCD密度的设置:
adb shell getprop ro.sf.lcd_density
解决方案可以在输入活动的dumpsys中找到:
# 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),并且在模拟器上也能正常工作,尽管模拟器输出的内容过于干净,不适合用作解析的良好示例。
getevent -p
获取。在某些触摸输入设备位于边框下方的情况下,这是相关的,因此可用的最小值实际上从大于0的某个值开始。 - Nisan.H使用dumpsys
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 mDisplayWidth和mDisplayHeight
> adb shell getprop
要筛选这些属性
在Unix上使用类似于grep的命令
> adb shell getprop | grep density
在Windows上使用类似于find的命令
> adb shell getprop | findstr "density"
返回值看起来像
[ro.sf.lcd_density]: [240]
针对屏幕尺寸,请使用"display"而不是"density"
工作是好的:
dumpsys window | grep Display
返回值: 显示: 初始=320x480 当前=320x480 应用程序=320x480 范围=320x295-480x455
ANDROID:/ # dumpsys window | grep mGlobalConfiguration
mGlobalConfiguration={1.0 ?mcc?mnc [en_US] ldltr sw720dp w1920dp h532dp 160dpi
你可以使用以下代码获取屏幕尺寸:
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还将为您提供绝对显示宽度和高度。
查看adb shell dumpsys的输出。屏幕大小会在其中多次显示,以及许多其他信息。
...虽然现在我在办公室,虽然它在我的手机上可以使用,但在Galaxy平板电脑上却不行。真糟糕。
如果你需要获取市场上可用的Android设备范围的当前状态,包括屏幕尺寸和密度点击这里。
这些数据基于在数据收集日期结束的7天内访问Android Market的Android设备数量。
Dimension windowSize = driver.manage().window().getSize();
。 - Joshua Pinter