android - 为什么我不能从/dev/graphics/fb0 读取数据?

标签 android screen snapshot

我正在使用模拟器。所以我肯定有root权限。 我使用命令:

adb pull/dev/graphics/fb0 d:/a

然后用我的程序读取这个文件并生成一个bmp。它是成功的。但是当我使用纯 Java 代码来执行此操作时:

Process process = Runtime.getRuntime().exec("su -c cat/dev/graphics/fb0");

process.waitFor();

InputStream = process.getInputStream();

is.read(buffer, 0, width*height*2);

缓冲区无法获取正确的数据。所有数据都是0,正确的是前几行0xFF。

然后我尝试了:

adb shell

cat/dev/graphics/fb0 >/sdcard/tmp

tmp 文件也得到了正确的数据。 为什么纯java代码失败了?是我使用 Process 类的方式不对吗?

最佳答案

由于 fb0 是一个缓冲文件,它是一个不断变化的文件,您应该将其复制到某个可访问的目的地,然后使用 FileInputStream 读取它,轻松获得正确的数据。

喜欢:

("cat /dev/graphics/fb0 > /dev/myRawFrame.raw");

File CurrentRawFile = new File("/dev/myRawFrame.raw");

大功告成:)

关于android - 为什么我不能从/dev/graphics/fb0 读取数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7356503/

相关文章:

android - 带 header 的 Socket.IO-client Java

java - Android TextView 线条背景

java - 从对话框到 Activity 的按钮位置

javascript - 在服务器端截取 Flash 游戏/动画的屏幕截图? (或者客户端?)

javascript - 从数据快照中检索第一个元素

ios - 如何从 Firebase 检索数据?

java - 方法函数的数组

android - 按国家/地区 Android 绘制的绘图

android,尝试打开某个 Activity 时应用程序崩溃

css - 适用于屏幕媒体但不适用于打印媒体的字体