Android более быстрый способ захвата экрана?

Мне нужно захватить основной макет на экране или просто весь экран, если это быстрее. Я пробовал два метода, и оба вызывают заметную задержку.

Метод 1: кеш отрисовки - занимает около 80 мс

setDrawingCacheEnabled (true);
Bitmap oldLayout = Bitmap.createBitmap (getDrawingCache ());
setDrawingCacheEnabled (false);

Метод 2: рисование на холсте - занимает около 50 мс

Bitmap oldLayout = Bitmap.createBitmap (getWidth (), getHeight (), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas (oldLayout);
int wSpec = MeasureSpec.makeMeasureSpec (getWidth (), MeasureSpec.EXACTLY);
int hSpec = MeasureSpec.makeMeasureSpec (getHeight (), MeasureSpec.EXACTLY);
measure (wSpec, hSpec);
layout (0, 0, getWidth (), getHeight ());
draw (canvas);

Кажется, если бы я мог снимать прямо с экрана, это было бы быстрее. Однако я не видел способа сделать это. Есть ли другие методы, которые стоит попробовать?

if I could capture directly from the screen that would be faster вы имеете ввиду без написания кода?
Sagar 02.05.2018 03:37

Я думаю, что у ИИ еще есть путь, чтобы мы могли программировать компьютеры без написания кода :)

Peri Hartman 02.05.2018 03:40

Я имел в виду, собираетесь ли вы использовать студию Android для захвата снимка экрана или хотите добиться этого программно. Фраза directly from the screen сбивала с толку. Вы пробовали ложка, он доступен только для тестирования жестких

Sagar 02.05.2018 04:12

Захват в коде. Говоря «прямо с экрана», я предполагаю, что есть аппаратная память для того, что отображается на экране. Очевидно, что на каком-то уровне ОС существует способ чтения и записи этой памяти. Это, в том числе время, необходимое Java для выделения памяти для растрового изображения, займет крайне незначительное количество времени.

Peri Hartman 02.05.2018 06:13

Посмотрел только ложку - в исходниках нашел снимок экрана. Они используют метод 2, описанный выше. За исключением того, что они не выполняют шаги измерения и разметки. Я понял, что мне это тоже не нужно, и вынул их. К сожалению, это не имело большого значения во времени.

Peri Hartman 02.05.2018 06:36

Удалось ли вам количественно оценить улучшение? Было бы здорово, если бы вы могли обновить свой вопрос этой информацией.

Sagar 02.05.2018 07:57

Незначительный. Измерения варьируются от испытания к испытанию - не знаю почему - и разница была в пределах этого разброса. Итак, не имеет значения.

Peri Hartman 02.05.2018 15:46
1
7
85
0

Другие вопросы по теме