【问题标题】:Take screenshot programmatically of the whole screen以编程方式截取整个屏幕的屏幕截图
【发布时间】:2013-05-25 09:57:05
【问题描述】:

我截图如下:

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

【问题讨论】:

  • 键盘不是您的应用程序布局的一部分。您正在拍摄布局(视图)的屏幕截图。键盘不是您布局的一部分。这就是为什么你看不到它
  • 我知道这一点。关于如何截取整个手机屏幕的任何想法?
  • 试试下面的答案,但如果你在设备上测试,你需要同样的根。这是不对的,因为您不能要求用户根他们的设备。您可以尝试在您的应用程序中创建自己的自定义键盘。然后使用上面的屏幕截图
  • 同样的问题对屏幕上的视频视图有效。当使用上述方法捕获屏幕截图时,屏幕上的视频视图不包含在屏幕截图中,而是一个空白而不是它。我需要一种机制来模拟您按下某些设备按钮(通常是同时按下电源和音量按钮)的影响,并且它可以截取屏幕上的所有内容(包括键盘、视频视图等)。有什么想法吗?

标签: android keyboard screenshot


【解决方案1】:

在论坛上某处了解另一种方式:-

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?

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

【讨论】:

  • su 是超级用户这需要在设备上root吗?
  • 是的。 :D。但我认为没有其他方法可以从应用程序中获取手机的屏幕截图。他最多只能得到他现在得到的截图。
  • 如果他在模拟器上测试我猜它已经扎根了。但是发布你的应用程序要求用户根他们的设备是不好的。任何建议。我把它留给 OP 来决定。无论如何,我都可以从发布的链接中学到新的东西。
【解决方案2】:

似乎没有办法从is not rooted.Here,CommonsWare 说的设备屏幕上获取屏幕截图:

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

虽然你可以在你的应用运行时得到模拟器的截图!

编辑:

但是有一个库叫做ASL(Android Screenshot Library):

Android 屏幕截图库 (ASL) 支持以编程方式捕获 安卓设备截图,无需root 访问权限。相反,ASL 利用运行在 后台,通过 Android Debug Bridge (ADB) 启动一次 设备启动。

我没试过,但你可以在here看到更多细节。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-06
    相关资源
    最近更新 更多