【问题标题】:How do you programmatically take a screenshot on Android ICS and above?您如何以编程方式在 Android ICS 及更高版本上截取屏幕截图?
【发布时间】:2012-07-19 11:22:51
【问题描述】:

我正在尝试编写一个在 Android 4.0+ 上执行屏幕捕获的应用程序。我知道您很可能必须拥有一部已植根的手机,这很好。

我尝试从 /dev/graphics/fb0 获取数据。它可以工作,但只能获得启动屏幕。 (HTC One X) 因此我猜测由于 ICS 完全通过加速渲染,它在启动后不会渲染到帧缓冲区。

虽然网络上有关此问题的信息有限,但还是有一些建议。一种是使用 Android-Screenshot-Library。它不起作用(它从 /dev/fb0 获取帧缓冲区内容)。其他建议仅用于捕获您自己的应用程序的屏幕。我想捕捉用户正在做什么的屏幕(这是为了研究,没有恶意。)

到目前为止,我被困住了,所以欢迎任何想法或建议。

【问题讨论】:

标签: android screen screenshot capture


【解决方案1】:

直接访问帧缓冲区需要特定于设备的知识,并且经常更改图形引擎的模式,因此不推荐。

更好的答案是检查 adbd 在您的特定版本上的作用。见

android/platform/system/core/adb/framebuffer_service.c

在 AOSP 中的标签与您安装的 Android 版本相当(尽管从技术上讲,供应商构建可能具有不同的 adbd 实现屏幕截图功能)。

目前,在 master 中,它正在运行一个名为“screencap”的独立可执行文件,它将数据转储到标准输出。

您可能需要以 graphics 组中的用户身份运行它,即 root 或 adb 的 shell 用户 ID。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-22
    • 2011-01-13
    • 1970-01-01
    • 2023-03-25
    • 2016-03-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多