带有虚拟键盘的 Android 屏幕截图(以编程方式)

标签 android android-emulator keyboard screenshot

我得到一个项目,其中包括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/

相关文章:

安卓: "Error parsing XML: must not undeclare prefix"

android - 如何将数据从一个 Activity 发送到另一个 ListView ?

android - 如何从 whatsapp fileprovider 获取 txt 文件

android - 打开跟踪文件时出错 : No such file or directory (2)

android - 未启动调试器,因为进程无法加载 jdwp 代理

delphi - 为什么 Alt 键没有触发我的低级键盘 Hook ?

java - 如果数据库查询低于 100 毫秒,我应该线程化吗

android - Android Studio 模拟器没有声音

jquery - 使用Jquery模拟键盘按键

XCode自定义键盘无法连接 socket