Android более быстрый способ захвата экрана? - PullRequest
0 голосов
/ 02 мая 2018

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

Способ 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);

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

...