以编程方式从服务中截取屏幕截图

Posted

技术标签:

【中文标题】以编程方式从服务中截取屏幕截图【英文标题】:Programmatically take a screenshot from service 【发布时间】:2012-05-15 22:32:34 【问题描述】:

这段代码很容易

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

而且效果很好,但如果有活动,情况就是这样。

如何从服务中截取屏幕截图?

我的目标是在一小时内截屏,例如每小时关闭屏幕,例如在 12 然后在 1 然后在 2 .... 等等

【问题讨论】:

屏幕关闭非常重要!...如果您找到解决方案,请告诉我 你找到解决办法了吗?请让我知道......关于这个 【参考方案1】:

要为您的活动捕获 ScreenShot,您必须需要您的活动的 View,并且您的服务中不存在哪个活动,因此您必须制作一个TimerTask 将每小时调用您的活动,并且您的活动以当前出现的视图对其进行响应,您可以从中捕获ScreenShot。 (我认为这是解决您问题的唯一方法。)

或者,如果您想截取当前设备屏幕(任何应用程序)的屏幕截图,那么您必须获得 root 权限,并阅读 framebuffer 以获取当前屏幕的原始数据将其转换为位图或您可以在服务中执行的任何图片文件。

【讨论】:

嗨@user370305,你能给我一些读取帧缓冲区的示例代码吗...我需要一个紧急需求... @kalandar - 看看pocketmagic.net/2010/11/…【参考方案2】:

android 屏幕截图库 (ASL) 提供了拍摄手机屏幕快照的方法,无需签署您的应用程序或拥有对 Android 系统的特权(根)访问权限 Click here for ASL

【讨论】:

以上是关于以编程方式从服务中截取屏幕截图的主要内容,如果未能解决你的问题,请参考以下文章

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

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

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

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

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

以编程方式截取 iOS 中另一个应用程序的整个可滚动区域的屏幕截图