截取Android屏幕截图并保存到SD卡

时间:2011-05-08 18:30:31

标签: java android screenshot sd-card

这里有一些关于捕获Android应用程序截图的问题。但是,我还没有找到一个可靠的解决方案,如何使用android SDK或任何其他方法以编程方式截取屏幕截图。

所以我想我会再次提出这个问题,希望能找到一个好的解决方案,希望能够捕捉全长的图像,我可以保存到SD卡或类似的地方。

我提供任何帮助

4 个答案:

答案 0 :(得分:3)

这不可能直接在设备/模拟器上进行,除非它是root。

  诚实地说我需要的是仿真器,因为这是用于PC上的测试应用程序

这听起来像是monkeyrunner的工作。

答案 1 :(得分:1)

monkeyrunner工具可以使用adb命令为你完成工作,[python script]

from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice
//waits for connection
device = MonkeyRunner.waitForConnection()
//take the current snapshot
device.takeSnapshot()
//stores the current snapshot in current dir in pc
device.writeToFile('current.png')\
//copy it to the sd card of device
os.subprocess.call('adb push current.png /sdcard/android/com.test.myapp/current.png')

注意:调用此jython脚本文件
    monkeyrunner.bat<文件名>

答案 2 :(得分:0)

你很可能对这个答案不满意,但我见过的唯一一个涉及使用本机代码或执行本机命令。

编辑: 我以前没见过这个。你试过吗?: http://code.google.com/p/android-screenshot-library/

Edit2:检查了该库,这也是一个糟糕的解决方案。需要您从PC启动服务。所以我的初步答案仍然存在:)

Edit3:您应该可以通过执行与此类似的操作将视图另存为图像。您可能需要稍微调整一下,以便获得视图的宽度/高度。 (我正在给布局充气,并在布局代码时指定宽度/高度)

View content = getView();
Bitmap bitmap = Bitmap.createBitmap(width, height, Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
File file = new File(pathAndFilename);              
file.createNewFile();
FileOutputStream ostream = new FileOutputStream(file);
bitmap.compress(CompressFormat.PNG, 100, ostream);
ostream.close();

答案 3 :(得分:0)

您可以查看http://codaset.com/jens-riboe/droidatscreen/wiki(在http://blog.ribomation.com/2010/01/droidscreen/处写一下):这是一个使用adb捕获屏幕截图的Java库。我已经能够(用大量的肘部油脂)修改源代码,让我自动捕捉定时系列的屏幕截图(我用于演示视频)。

您可以在http://pastebin.com/hX5rQsSR

看到课程结构

编辑:您将调用它(在捆绑所有要求之后),如下所示:

java -cp DroidScreen.jar --adb“” - device“” - prefix“” - interval