【问题标题】:Why cannot I read data from /dev/graphics/fb0?为什么我无法从 /dev/graphics/fb0 读取数据?
【发布时间】:2011-09-09 02:18:13
【问题描述】:

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

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

然后用我的程序读取这个文件并生成一个bmp。这是成功的。但是当我使用纯java代码来做到这一点时:

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

process.waitFor();

InputStream is = process.getInputStream();

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

缓冲区无法获取正确的数据。数据全部为0,正确的是前几行的0xFF。

然后我尝试了:

adb shell

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

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

【问题讨论】:

    标签: android screen snapshot


    【解决方案1】:

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

    喜欢:

    ("cat /dev/graphics/fb0 > /dev/myRawFrame.raw");
    
    File CurrentRawFile = new File("/dev/myRawFrame.raw");
    

    你就完成了:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-02
      • 2011-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-26
      相关资源
      最近更新 更多