android - 无法获取三星 Galaxy Note 10.1 (N8010) 帧缓冲区,fb0 仅显示顶栏
问题描述
我的最终目标是在真正的 android 设备屏幕上非常快速地获得某些像素值,我希望我可以通过分析像素值并通过 adb 执行相应的触摸操作来自动化某些应用程序/游戏。
使用像使用 ADB 捕获屏幕这样的普通屏幕捕获程序太慢了。另外,我不需要读取和转换所有屏幕像素,我只需要读取一个或几个像素的值。
这应该有效:如何通过 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
结果是这样的: 从 fb0 转换的图像
当我使用以下方法将随机值插入 fb0 时:
cat /dev/urandom > /dev/graphics/fb0
我只能看到屏幕的顶部充满了随机值。
我确实在 /dev/graphics 中看到有一个大小为 1701000 字节的 fb12 文件,但我不知道如何转换它,因为它不是 1280 屏幕大小的倍数,所以我不能使用 ffmpeg 命令。
我找到了这个链接:https://github.com/meefik/linuxdeploy/wiki/Framebuffer-notes那里的人说 fb3 是他设备的正确帧缓冲区,但我测试了图形文件夹中的所有 fbX 并且它们都不是正确的。
有谁知道从 Galaxy Note 10.1 N8010 获取帧缓冲区?
解决方案
推荐阅读
- reactjs - 从 github repo 自动部署到 web 主机
- kubernetes - 使用 kubernetes 和 YAML 创建 Pod 时出现问题
- delphi - ADODataSet.Open 绕过 try catch 与 `ArgumentOutOfRange` 异常,挂起应用程序 - Delphi 10.2
- node.js - 运行 docker-compose up 时出现此错误 - TypeError: redis.createCient({}) is not a function
- php - PHP中真正奇怪的substr行为,输出不一致
- c - C中的贪心计算器
- javascript - 有没有办法通过firebase函数中的httpsCallable发送文件?
- angular - 如何隐藏spotfire中的工具栏但保留过滤选项?
- c# - 提高 F# 地图插入性能
- excel - 在 Excel 中,当列号是函数的结果并且结果不同时,如何复制列?