5

我正在截屏如下:

 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。我单击它并弹出键盘,但屏幕截图不包含使用这种方式的键盘。如何以编程方式截取屏幕截图也可以捕获键盘?

4

2 回答 2

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。

编辑:

找到帖子的链接 -如何截取屏幕截图?

用户说,截图对他有用。我认为这应该符合您的要求。

于 2013-05-25T10:12:36.680 回答
3

似乎没有办法从设备的屏幕上获取屏幕截图is not rooted在这里CommonsWare说:

如果您的意思是“其他人活动的屏幕截图”,则出于明显的隐私和安全原因,这是不受支持的。

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

编辑:

但是存在一个名为ASL(Android Screenshot Library)的库:

Android 屏幕截图库 (ASL) 能够以编程方式从 Android 设备捕获屏幕截图,而无需拥有 root 访问权限。相反,ASL 使用在后台运行的本机服务,每次设备启动时通过 Android 调试桥 (ADB) 启动一次。

我没有尝试过,但您可以在此处查看有关它的更多详细信息。

于 2013-05-25T11:19:32.233 回答