开发者

Why cannot I read data from /dev/graphics/fb0?

I am using the emulator. So definitely I have the root permission. I use command:

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

and then use my program to read this file and generate a bmp. It is successful. But when I use pure java code to do this:

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

process.waitFor();

InputStream is = process.getInputStream();

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

The buffer can not get the correct data. All the data is 0, while the correct is 0xFF at the first several line.

Then I tried:

adb shell

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

开发者_StackOverflow中文版

The tmp file also got the correct data. Why the pure java code failed? Is the way I used the Process class wrong?


Since the fb0 is a buffer file, it is an always-changing file, you should copy it to a certain ACCESSIBLE destination then read it with FileInputStream, easily having the correct data.

Like:

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

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

and you're done :)

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜