以编程方式截取整个屏幕的截图

时间:2013-05-25 09:57:05

标签: android keyboard screenshot

我正在拍摄截图如下:

 public static Bitmap takeScreenshot(Activity activity) {  
      View view = activity.getWindow().getDecorView();  
      view.setDrawingCacheEnabled(true);  
      view.buildDrawingCache();  
      Bitmap bitmap = view.getDrawingCache();  
      Rect rect = new Rect();  
      activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(rect);  
      int statusBarHeight = rect.top;  
      int width = activity.getWindowManager().getDefaultDisplay().getWidth();  
      int height = activity.getWindowManager().getDefaultDisplay().getHeight();  
      Bitmap bitmap2 = Bitmap.createBitmap(bitmap, 0, statusBarHeight, width,  
          height - statusBarHeight);  
      view.destroyDrawingCache();  
      return bitmap2;  
    }  

但我的布局中有一个Edittext。我点击它并弹出键盘,但屏幕截图不包含使用这种方式的键盘。如何以编程方式截取屏幕截图,也可以捕获键盘?

2 个答案:

答案 0 :(得分:8)

在论坛的某个地方阅读另一种方式: -

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

你可以尝试一下。不知道它是否有效,只是保存了一个下雨天:P。

编辑:

找到帖子的链接 - How to take a screenshots?

用户说,截图适合他。我认为这应该符合你的要求。

答案 1 :(得分:3)

似乎无法从is not rootedHereCommonsWare说明的设备的屏幕截取屏幕截图:

  

如果您的意思是“其他人的活动截图”,那不是   支持,明显 隐私和安全原因

虽然您可以在应用程序运行时获取模拟器的屏幕截图!

编辑:

但是存在一个名为ASL的库(Android屏幕截图库):

  

Android截图库(ASL)支持以编程方式捕获   来自Android设备的屏幕截图,无需root   访问权限。相反,ASL使用运行的本机服务   背景,通过Android调试桥(ADB)启动一次   设备启动。

我没有尝试过,但你可以看到有关它的更多细节here