如何在Android中以编程方式截取屏幕截图?

时间:2014-09-06 15:08:15

标签: android screenshot

我想创建一个应用程序,每10秒钟截取设备的屏幕截图,即使应用程序在后台运行也是如此。

我不知道该怎么做。

对于没有植根的设备,有没有办法做到这一点?

3 个答案:

答案 0 :(得分:0)

为了捕获您的活动的ScreenShot,您需要一个来自您的活动的视图,并且该视图不会出现在您的服务中,因此您必须制作一个TimerTask,它将在每个时刻调用您的活动以获取当前视图活动,您可以从中捕获ScreenShot。

否则如果您想拍摄当前设备屏幕或任何其他应用程序的ScreenShot,则必须获得root权限,并读取帧缓冲区,以获取当前屏幕的原始数据,然后将其转换为位图或任何图片文件。

try {
 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();
} catch (IOException e) {
                     e.printStackTrace();
                         }

答案 1 :(得分:0)

Here是如何捕获Android上的屏幕截图。

也是Handler and Timer

的一个例子

一个非常相似的post要求同样的。

答案 2 :(得分:-1)

首先采用代码在android中以编程方式截取屏幕截图。它是可用的堆栈溢出。然后使用handler每隔10秒调用一次该方法。