2011-09-09 1 views
2

私はエミュレータを使用しています。だから間違いなく私はroot権限を持っています。その後、なぜ/ dev/graphics/fb0からデータを読み取れないのですか?

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

fb0はバッファファイルなので常に変化するファイルなので、特定のアクセス可能な宛先にコピーしてから、FileInputStreamで簡単に正しいデータを読み取る必要があります。

のように:あなたは

:)終わっ

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

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

関連する問題