1

我有一个项目,其中包括android 内容的根视图的屏幕截图。但是,如果有人单击编辑文本并打开虚拟键盘,我无法在我的图片中获得此键盘视图。我的意思是 android 内容的根视图不包含虚拟键盘。我怎样才能添加它?这是我的屏幕截图代码:

Bitmap bitmap;
    View v1 = this.findViewById(android.R.id.content).getRootView();
    v1.setDrawingCacheEnabled(true);
    bitmap = Bitmap.createBitmap(v1.getDrawingCache());
    v1.setDrawingCacheEnabled(false);
    OutputStream fout = null;
    imageFile = new File(filePath);
    try {
        fout = new FileOutputStream(imageFile);
        bitmap.compress(Bitmap.CompressFormat.JPEG, 70, fout);
        fout.flush();
        fout.close();
    }catch (Exception e) {
        e.printStackTrace();
    }

而且我正在研究android模拟器。感谢您从现在开始的回复。

4

1 回答 1

2

您不能这样做,因为您只能在自己的应用程序中获取视图的内容。在 Android 上,键盘算作第三方应用程序,您无法获取其视图内容。

如果您可以使用 Android 4.0 或更高版本(或其他一些运行较低版本但具有制造商添加的屏幕截图功能的设备(如某些三星 Galaxy 系列设备)),您可以通过按电源按钮和降低音量按钮(非 Nexus 设备上的组合键可能不同)。

除此之外,您可以尝试解析帧缓冲区,这需要在某些设备上进行 root 访问。帧缓冲区通常位于/dev/fb0/dev/graphics/fb0。在某些设备(如 LG Optimus One)上,无需 root 权限即可访问,但在大多数设备(如 Nexus S)上,您需要为此获得 root 权限。出于安全原因,通常不允许这样做,因为恶意应用程序可能会在后台截取屏幕截图并将其发送到远程服务器,从而泄露电子邮件 ID 和密码等信息,在某些情况下还会泄露银行账户详细信息。

于 2012-12-24T11:11:14.950 回答