Код: Выделить всё
$ adb shell screencap -p /mnt/sdcard/sc.png
$ adb pull /mnt/sdcard/sc.png
Итак, Я нашел следующий вопрос SO, и ответ показал, что изображение печатается на выходе Std, если вы не указываете файл.
Я тестировал это с консоли, и оно действительно выводило на консоль двоичные данные.
Android: есть ли способ прочитать скриншот из памяти без сохранения во внутреннюю/внешнюю память?
Теперь я хочу использовать эту технику и запустите процесс из Java, выполните
Код: Выделить всё
adb shell screencap
Я попробовал что-то вроде это
Код: Выделить всё
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 работает не совсем так, как я хотел
- сейчас мой код читает символы, где я действительно хочу читать байты
- чтение с помощью сканера кажется медленным при чтении миллионов символов/байт
Спасибо!
Подробнее здесь: https://stackoverflow.com/questions/451 ... ing-a-file