我的最终目标是非常快地在真实的android设备屏幕上获取某些像素值,我希望我可以通过分析像素值并相应地通过adb执行触摸操作来自动执行某些应用/游戏。
使用Using ADB to capture the screen之类的常规屏幕捕获程序太慢。另外,我不需要读取和转换所有屏幕像素,只需要读取一个或几个像素的值即可。
这应该可以工作:How can I get the color of a screen pixel THROUGH ADB,但是似乎当我从我的Galaxy note 10.1中读取fb0时,只有前48行像素存储在fb0中。
当我这样做时:
cat /dev/graphics/fb0 > /sdcard/screen.raw
生成的文件只有245,760字节(等于1280x800x4x48)。当我使用ffmpeg将此文件转换为
ffmpeg -vcodec rawvideo -f rawvideo -pix_fmt rgb32 -s 1280x48 -i screen -f image2 -vcodec png image.png
结果是这样的: converted image from fb0
当我使用以下命令将随机值插入fb0时:
cat /dev/urandom > /dev/graphics/fb0
我只能看到屏幕顶部充满了随机值。
我确实在/ dev / graphics中看到了一个fb12文件,大小为1701000字节,但是我不知道如何转换它,因为它不是1280屏幕尺寸的倍数,所以我不能使用ffmpeg命令。
我找到了此链接:https://github.com/meefik/linuxdeploy/wiki/Framebuffer-notes,该人员说fb3是其设备的正确帧缓冲区,但我测试了图形文件夹中的所有fbX,但都不正确。
有人知道要从Galaxy Note 10.1 N8010获取帧缓冲区吗?