无头模式下的Android屏幕截图很难看

时间:2013-07-18 17:33:53

标签: android image android-emulator screenshot headless

我想在无头模式下截取Android设备的截图,也就是说我这样创建它:

echo no | /opt/android/android-sdk-linux/tools/android create avd \ 
         -n test01 -t android-17 -f -p some/dir -c 128 --abi x86

然后我就像

一样开始
/opt/android/android-sdk-linux/tools/emulator -avd test01 -no-skin \
-no-audio -no-window -memory 256 -nocache -no-snapshot-save -no-snapstorage

我正在拍这样的画面:

adb shell screencap -p /sdcard/screen.png
adb pull /sdcard/screen.png

然而,截图看起来像这样:

taken screenshot is ugly

两个问题:

1)我如何摆脱“让自己回家”的欢迎废话?我处于无头模式,所以我根本无法点击“确定”按钮。

2)如何指定屏幕大小以启动模拟器?它似乎以某种方式变形,我不知道如何以及为什么。我打赌这将是启动参数的一些错误配置。

对我来说更重要的是第一个问题,第二个问题是在执行该模拟器时通过命令行上的某些开关进行调整。

非常感谢

更新

所以我尝试在应用程序运行后截取屏幕截图,我只使用了一些实际上什么都不做的测试应用程序,你只需点击并填充一些文本区域,所以...我正在截取它后面的截图安装(这是合乎逻辑的,因为我正在截取该应用程序的截图)但屏幕的尺寸没有改变,它看起来像这样:

deformed application size

只要在无头模式下拍摄这些屏幕截图并且应用程序没有变形,我就会感到满意。怎么做那个geeez ......

4 个答案:

答案 0 :(得分:2)

如果有人仍然遇到此问题,请使用' -no-window'但不是' -no-skin'使截图尺寸看起来更好。

答案 1 :(得分:1)

这对我来说有助于获得正确的屏幕分辨率, “echo qemu.sf.lcd_density = 120>> /system/build.prop”

你应该拥有root权限!!!

答案 2 :(得分:0)

对于#1,就像你说的那样,如果你之后自动安装并启动自己的应用程序,Activity生命周期就会按照预期的那样运行,第一个Activity就会消失。

即使有adb kill命令,你只会干扰Android的正常行为方式,这只会将你的测试环境与应用程序运行的环境区分开来(这不符合你的目的)任何方式)。

关于问题#2,如果没有进行任何调整,请在应用程序启动后尝试截屏。我有一种感觉,这个特殊的覆盖屏幕可能是首先搞砸了显示器。

答案 3 :(得分:0)

在create avd命令中指定-s“1080x1920”为我解决了这个问题。我正在使用的完整命令:

echo "no" | android create avd --force --device "Nexus 5" --name test --target android-22 --abi google_apis/armeabi-v7a -s "1080x1920" --sdcard 512M