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

℡╲_俬逩灬. 提交于 2019-12-07 21:34:16

问题


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

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


回答1:


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 :)



来源:https://stackoverflow.com/questions/7356503/why-cannot-i-read-data-from-dev-graphics-fb0

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!