如何在Android上通过编程方式进行屏幕截图?

11
我想要以编程方式获取全屏截图,例如 Android 主屏幕或菜单。如何在我的应用程序中获取主屏幕的视图呢?我希望能够以编程方式实现!如果需要 root 权限也无妨!请帮助我,谢谢!

你试过这个了吗?这个链接。或者如果你想编程实现它,你可以参考以下链接:- 一个命令行解决方案(可在Java中使用)- 你可以在这里获取一些信息。 - Dsandre
哎呀!刚刚意识到(当然是在发布了我的答案之后 -_-):你是指从安卓应用程序中吗? - user658042
8
我想以编程方式实现它! - Nolesh
是的,我做到了!但我想以编程方式实现它!!! - Nolesh
好的,你可以在你的问题上说那个。 - Dsandre
1
这个问题怎么样?https://dev59.com/3nE85IYBdhLWcg3wr1ge - Tima
3个回答

13

使用以下代码

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

这里的MyView是需要在屏幕上包含的视图。


6
仅获取当前应用程序的屏幕截图,而非整个 Android 屏幕。 - Nguyen Minh Binh
@NguyenMinhBinh 请看一下这个链接:https://dev59.com/83A75IYBdhLWcg3w3M9e#8504958 。可能对你有帮助。 - Nirav Dangi

5

请点击链接https://code.google.com/p/android-screenshot-library/downloads/list,这个库可以让你截取任何屏幕的截图,不仅限于你的应用程序。

使用以下命令adb shell /system/bin/screencap -p /sdcard/img.png,可以快速简单地进行截图。

试试吧!

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();

我有两个设备(Android v2.2和v2.3.3),它们的/system/bin目录中没有screencap文件,因此不适合我的需求。 - Nolesh
@ares 你可以尝试上面的链接。 - Viswanath Lekshmanan
你能再详细描述一下吗?我尝试过了,但是没有得到结果。 - Akarsh M
@user2078315,您正在运行哪个版本的Android?请确保在/system/bin目录下存在一个名为screencap的文件,然后在程序中运行上述代码,它应该可以正常工作。 - Viswanath Lekshmanan

0
在 adb shell 中,您可以使用命令:
adb shell screencap -p /sdcard/screen.png
adb pull /sdcard/screen.png
adb shell rm /sdcard/screen.png

我在如何在Android上截屏的指南中找到了这段代码。您可以参考它以获取更多详细信息。希望这可以帮助到您。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接