を記述することなく、Javaでそれを取得し、私は1つがテイクスクリーンショットやファイル
$ adb shell screencap -p /mnt/sdcard/sc.png
$ adb pull /mnt/sdcard/sc.png
とADB経由でAndroidデバイスからのスクリーンショットを取ることができることを知っているが、これはお使いの携帯電話上とあなたのPC上のファイルを書き込み私は避けたいものです。
私は次のような問題を発見しました。答えは、ファイルを指定しないとイメージがStd出力に出力されることを示唆しました。 これをコンソールからテストしたところ、バイナリデータが実際にコンソールに出力されました。
Android: It there a way to read screenshot from memory without saving to internal/external storage?
今私は、この技術を利用し、Javaからプロセスを開始し、
adb shell screencap
コマンドを実行し、出力を読み、出力からBufferedImageを作成したいです。
私は不幸私のコードでかなりの数の問題がある。この
ProcessBuilder pb = new ProcessBuilder("cmd");
Process start = pb.start();
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(outputStream));
bw.write("adb shell screencap");
bw.newLine();
bw.flush();
// wait some time for the process to print the image to the console
start.waitFor(10, TimeUnit.SECONDS);
StringBuilder sb = new StringBuilder(9000000);
Scanner s = new Scanner(start.getInputStream());
while (s.hasNext()) {
sb.append(s.next());
}
String result = sb.toString();
のようなものを試してみました。
プログラムは、スクリーンショットを取得した後に終了しません - 私はそれが
を動作するように望んでいたようにstart.waitForはかなりの仕事をしません現在、私のコードは、文字を読み、私は実際にバイト
を読みたい場所文字/数百万バイトを読み込むときにスキャナで読み込ん- は
はたぶん誰かが私はそれが仕事を得ることができるような方向に私を指すことができる種類の遅いようです。 ありがとう!
なぜJavaを使用して 'adb'を呼び出すのですか? –
私は、その画像をさらに処理するJavaプログラムを持っています –