我有一个项目,其中包含 android内容根视图的截图。但如果有人点击 edittext 并打开虚拟键盘,我无法在我的图片中看到这个键盘视图。我的意思是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模拟器。感谢您的回复。
答案 0 :(得分:1)
您无法执行此操作,因为您只能在自己的应用中获取视图的内容。在Android上,键盘计为第三方应用,您无法获取其视图内容。
如果您可以访问Android 4.0或更高版本(或其他一些运行较低版本但具有制造商添加屏幕截图功能的设备(如某些三星Galaxy系列设备)),您可以截取整个屏幕按电源按钮和音量减小按钮(非Nexus设备上的按键组合可能不同)。
除此之外,您可以尝试解析帧缓冲,这需要在某些设备上进行root访问。帧缓冲通常位于/dev/fb0
或/dev/graphics/fb0
。在某些设备上(如LG Optimus One),可以在没有root权限的情况下访问它,但是对于它们的大多数(如Nexus S),您需要为此工作。出于安全原因,通常不允许这样做,因为恶意应用程序可以在后台截取屏幕截图并将其发送到远程服务器,显示电子邮件ID和密码等信息,并在某些情况下显示银行帐户详细信息。