在Android应用程序中以编程方式从设备屏幕内容(不是视图)拍照

时间:2012-06-11 08:32:44

标签: android

我正在开发一个应用程序,需要制作从设备屏幕的当前内容拍摄快照的Activity。 注意:我不想从我的活动内容或某些视图中拍摄照片,我想从所有设备屏幕内容中拍摄照片。 (如主屏幕或前景中的每个应用程序)。我用Google搜索了很多次并搜索了很多次。

有一个示例代码:

View screen = (View)findViewById(R.id.screen);
screen.setDrawingCacheEnabled(true);
bmScreen = screen.getDrawingCache();
showBitmap(bmScreen); // function that show my bitmap image 

使用此代码可以捕获我的活动的视图,但我不想只捕获我的活动。我想创建一个捕获设备屏幕及其所有内容的线程。 大家可以帮帮我吗?

1 个答案:

答案 0 :(得分:1)

你不能这样做,主要是出于安全考虑。如果这是可能的,一些流氓应用程序可以默默地捕获并发送您在设备上所做的一切的屏幕截图。

为什么非系统应用无法使用此功能:

Android让我们的SDK应用程序执行某些操作,并明确禁止其他人。应用程序不应该读取其他应用程序的数据,类似地,应用程序无法捕获另一个应用程序的屏幕。谷歌明确表示,第三方应用程序不应该采取其他应用程序的屏幕截图。屏幕捕获API的缺乏是一个深思熟虑的决定,而不是遗漏。 ICS提供屏幕截图功能,但它由系统实现,并且需要硬件触发器以确保第三方应用程序无法启动或访问它。

虽然有办法实现这一点,但它们要么是root(直接读取图形缓冲区,这取决于设备),要么不保证可以在所有设备/版本上工作。