如何在 Android 上以编程方式截取屏幕截图? [复制]

Posted

技术标签:

【中文标题】如何在 Android 上以编程方式截取屏幕截图? [复制]【英文标题】:How to take screenshot programmatically on Android? [duplicate] 【发布时间】:2011-11-22 18:44:25 【问题描述】:

我想以编程方式截取全屏截图, 例如,android 主屏幕或菜单之一。 如何在我的应用程序中查看主屏幕? 我想以编程方式接受它!!! 是否需要root模式也没关系!

请帮助我,对不起我的英语!

【问题讨论】:

> 你试过 > this > 吗?或者在法语中你可以read > that 编辑:所以如果你想编程,你可以点击这些链接:-command line solution(在 Java 中可用)-你可能会得到一些信息here 哦,快!刚刚意识到(当然是在发布我的答案之后-_-):您的意思是来自 android 应用程序吗? 我想以编程方式接受它!!! 是的,我做到了!但我想以编程方式接受它!!! 这个问题呢***.com/questions/2661536/screenshot-android 【参考方案1】:

使用以下代码

Bitmap bitmap;
View v1 = MyView.getRootView();
v1.setDrawingCacheEnabled(true);
bitmap = Bitmap.createBitmap(v1.getDrawingCache());
v1.setDrawingCacheEnabled(false);

这里的 MyView 是我们需要包含在屏幕中的视图。

【讨论】:

这只是截取活动应用程序的屏幕截图。不是整个安卓屏幕。 @NguyenMinhBinh ..请看一下..***.com/questions/3067586/… .....这可能对您有所帮助...【参考方案2】:

点击链接 https://code.google.com/p/android-screenshot-library/downloads/list 它允许您对任何屏幕进行完整截图,而不仅仅是您的应用

adb shell /system/bin/screencap -p /sdcard/img.png 这是一个shell命令,截图简单快速

试试这个

Process sh = Runtime.getRuntime().exec("su", null,null);
   OutputStream  os = sh.getOutputStream();
   os.write(("/system/bin/screencap -p " + "/sdcard/img.png").getBytes("ASCII"));
            os.flush();
            os.close();
            sh.waitFor();

【讨论】:

我有 2 台设备(Android v2.2 和 v2.3.3)在 /system/bin 目录中没有 screencap 文件。所以它不适合我。 @ares 你可以试试上面的链接。 你能描述一下我试过但我没有得到结果的 cz 吗? @user2078315 你运行的是哪个版本的android,确保/system/bin里面有一个叫screencap的文件存在,然后在程序中运行上面的代码就可以了【参考方案3】:

在 adb shell 中,您可以使用命令作为

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

我在 How to take a screenshot on Android 上的本指南上找到了此代码。您可以参考它以获取更多详细信息。希望这会有所帮助。

【讨论】:

以上是关于如何在 Android 上以编程方式截取屏幕截图? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

您如何以编程方式在 Android ICS 及更高版本上截取屏幕截图?

如何以编程方式截取可扩展的uitableview的屏幕截图

我如何同时传递 x 和 y 轴以及屏幕的高度和宽度以快速以编程方式截取屏幕截图

iOS - 以编程方式截取跳板(主屏幕)的屏幕截图

以编程方式截取特定区域的屏幕截图

使用 Java 代码在 Android 上捕获屏幕截图 [重复]