2013-07-18 20 views
2

我想利用Android设备的屏幕截图在无头模式,也就是我创造这样的:在无头模式的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)如何指定屏幕大小以启动模拟器?它似乎有点变形,我不知道如何以及为什么。我敢打赌,这将是一些启动参数的错误配置。

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

谢谢你很多

UPDATE

于是,我就采取截图的应用程序运行后,我用的只是一些测试应用程序,它不会做任何事情其实,你只要按一下周围并填充一些文本区域,所以...我安装后截图(这是合乎逻辑的,因为我正在截取该应用程序的屏幕截图),但屏幕的尺寸没有改变,看起来像这样:

deformed application size

我只会在无头模式下拍摄这些屏幕截图并且应用程序不会变形。如何做到这一点...

+0

第一问题,我会尝试解决使用操作系统的快照(我第一次手动保存)。是否有一个原因,你不能这样做?否则,我会认为这个“让自己在家信息”是某种广播接收器在启动后启动的活动,希望它的广播接收器的优先级不会设置为1. –

+0

感谢提示,2分,你认为“hop它的广播接收机的优先级不会设置为1“,这对我有什么帮助?第二个,我想尽可能避免快照,因为我在按需动态启动仿真器时正在进行无头功能测试,因此我无法使用一些事先调整过的图像来摆脱它。我需要使用'android'生成的原始图像是否有可能在外部杀死它,比如'adb shell kill_that_welcome'?顺便说一句,这是如此重要?如果我安装并启动一些本地应用程序,它应该覆盖欢迎屏幕,不是吗? – stewenson

回答

0

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

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

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

+0

请回顾我更新的问题。非常感谢您的任何建议。 – stewenson

2

如果有人仍然遇到这个问题,使用'-no-window'而不是'-no-skin'会使屏幕尺寸看起来更好。

+1

删除'--no-skin'有助于提高屏幕的大小。 – Luke

1

这对我获得正确的屏幕分辨率, “echo qemu.sf.lcd_density = 120 >>/system/build。。托”

你应该有root权限!

0

指定-s‘在修复了这个问题对我来说是创建AVD命令1080×1920’的完整命令我使用:

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