我得到一个项目,其中包括Android 内容 Root View 的屏幕截图。但是,如果有人单击 edittext 并打开虚拟键盘,我无法在我的图片中获得此键盘 View 。我的意思是 android 内容的 Root View 不包含虚拟键盘。我怎样才能添加它? 这是我的截图代码:
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();
}
我也在开发安卓模拟器。感谢您从现在开始的回复。
最佳答案
您不能这样做,因为您只能在自己的应用程序中获取 View 的内容。在 Android 上,键盘被视为第三方应用程序,您无法获取其 View 内容。
如果您使用的是 Android 4.0 或更高版本(或其他一些运行较低版本但制造商添加了屏幕截图功能的设备(如某些三星 Galaxy 系列设备)),您可以截取整个屏幕按下电源按钮和音量调低按钮(非 Nexus 设备上的组合键可能不同)。
除此之外,您可以尝试解析帧缓冲区,这在某些设备上需要 root 访问权限。帧缓冲区通常位于 /dev/fb0
或 /dev/graphics/fb0
。在某些设备(如 LG Optimus One)上,无需 root 权限即可访问,但在大多数设备(如 Nexus S)上,你需要获得 root 权限。出于安全原因,这通常是不允许的,因为恶意应用可能会在后台截取屏幕截图并将其发送到远程服务器,从而泄露电子邮件 ID 和密码等信息,在某些情况下还会泄露银行账户详细信息。
关于带有虚拟键盘的 Android 屏幕截图(以编程方式),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14020441/