2014-09-06 43 views
0

我想制作一个应用程序,即使应用程序在后台运行,也会每10秒钟截取一次设备的屏幕截图。如何在Android中以编程方式截图?

我不知道该怎么做。

有没有办法做到这一点与没有根的设备?

+1

可能的[本文]重复(http://stackoverflow.com/questions/20136121/android-how-to-take-screenshot-programatically) – 2014-09-06 15:19:48

回答

-1

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

+0

实际上,只有当应用程序打开时,代码才会截屏。 – 2014-09-06 15:15:50

+0

另外,即使用户使用任何其他应用程序,我也想截图。 – 2014-09-06 15:18:57

0

为了捕获你的活动的ScreenShot,你需要一个来自你的活动的视图,并且它不在你的服务中,所以你必须创建一个TimerTask来随时调用你的活动来获得当前视图该活动,您可以从中捕获ScreenShot。

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

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(); 
         } 
+0

你有代码可以给我当前正在显示的屏幕的原始数据吗? – 2014-09-06 15:21:50

+0

使用代码编辑 – 2014-09-06 15:25:38

+0

此代码需要root访问权限。有什么办法可以让设备没有根源? – 2014-09-06 15:28:35

0

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

另外的Handler and Timer

而一个询问对于相同的非常相似post一个例子。

相关问题