J'ai besoin d'un moyen de détecter la taille de l'écran et la densité de l'appareil avec adb. S'il n'y a pas de solution, où puis-je obtenir la liste complète de tous les appareils Android existants avec leur taille et leur densité d'écran?
Vous pouvez également accéder à WindowManager via ADB:
$ adb Shell wm
usage: wm [subcommand] [options]
wm size [reset|WxH]
wm density [reset|DENSITY]
wm overscan [reset|LEFT,TOP,RIGHT,BOTTOM]
La commande suivante vous donnera la densité:
$ adb Shell wm density
Physical density: 320
Vous pouvez également remplacer la densité en ajoutant la nouvelle densité:
$ adb Shell wm density 160
La densité de l'écran LCD est dans le build.prop:
adb Shell getprop ro.sf.lcd_density
Et la résolution est disponible dans les dumpsys de l'activité d'entrée:
# windows
adb Shell dumpsys window | find "DisplayWidth"
# linux
adb Shell dumpsys window | grep DisplayWidth
Il fonctionne sur tous les appareils que j'ai testés (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) , ainsi que l’émulateur, bien que les sorties de celui-ci soient trop propres pour servir d’exemple pour l’analyse .
dumpsys window displays
montre quelque chose comme ça:
Display: mDisplayId=0
init=1080x1920 480dpi cur=1080x1920 app=1080x1920 rng=1080x1005-1920x1845
layoutNeeded=false
autrement:
dumpsys display
montre également des choses intéressantes comme:
mDefaultViewport=DisplayViewport{valid=true, displayId=0, orientation=0, logicalFrame=Rect(0, 0 - 1080, 1920), physicalFrame=Rect(0, 0 - 1080, 1920), deviceWidth=1080, deviceHeight=1920}
et pour couronner le tout:
dumpsys power
affichera quelque chose comme
Electron Beam State:
mPrepared=false
mMode=2
mDisplayLayerStack=0
mDisplayWidth=1080
mDisplayHeight=1920
mSurfaceVisible=false
mSurfaceAlpha=0.0
que vous pouvez facilement utiliser pour grep pour mDisplayWidth et mDisplayHeight
Pour obtenir les informations requises auprès d’ADB, la commande suivante exécutée à partir de la ligne de commande renvoie de nombreuses propriétés utiles concernant les périphériques connectés.
> adb Shell getprop
Pour filtrer à travers ces propriétés
sous Unix, utilisez grep comme
> adb Shell getprop | grep density
sur Windows utiliser trouver comme
> adb Shell getprop | findstr "density"
La valeur renvoyée ressemble à
[ro.sf.lcd_density]: [240]
pour la taille de l'écran mis l'affichage au lieu de la densité
Vous pouvez obtenir des dimensions d'écran avec ce code:
public int getScreenHeight() {
return getDisplay().getHeight();
}
private Display getDisplay() {
return ((WindowManager) getContext().getSystemService(
Context.WINDOW_SERVICE)).getDefaultDisplay();
}
public int getScreenWidth() {
return getDisplay().getWidth();
}
Une fois que vous avez l'affichage dans le code ci-dessus, vous pouvez utiliser DisplayMetrics pour obtenir la densité. DisplayMetrics vous donnera également un affichage absolu avec et la hauteur.
Examinez les résultats de dbbys Shell adb. La taille de l'écran y est affichée à plusieurs reprises, avec de nombreuses autres informations.
... bien que je sois maintenant au bureau, bien que cela fonctionne sur mon téléphone, il est absent de la tablette Galaxy Zut.
Le travail est bon:
dumpsys window | grep Display
return: Display: init = 320x480 cur = 320x480 app = 320x480 rng = 320x295-480x455