我知道,人們可以採取截圖經由ADB的Android設備與採取截圖與亞洲開發銀行和檢索它的無渣寫入文件
$ adb shell screencap -p /mnt/sdcard/sc.png
$ adb pull /mnt/sdcard/sc.png
然而,這寫在手機上和電腦上的文件,我想避免。
所以我找到了以下SO問題,並且答案顯示,當您不指定文件時,圖像會打印到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程序,然後將進一步處理該圖像 –