3

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

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

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

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

4

1 回答 1

1

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

更好的答案是检查 adbd 在您的特定版本上做了什么。看

安卓/平台/系统/核心/adb/framebuffer_service.c

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

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

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

于 2012-07-19T16:17:31.800 回答