Почему я не могу прочитать данные из / dev / graphics / fb0? - PullRequest
2 голосов
/ 09 сентября 2011

Я использую эмулятор.Так что определенно у меня есть разрешение 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?

1 Ответ

1 голос
/ 04 марта 2012

Поскольку fb0 является буферным файлом, это постоянно изменяющийся файл, вы должны скопировать его в определенный ДОСТУПНЫЙ пункт назначения, а затем прочитать его с помощью FileInputStream, легко имея правильные данные.

Например:

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

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

и все готово:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...