Как я могу отложить предварительный просмотр камеры, чтобы она показала, что произошло х секунд раньше? - PullRequest
0 голосов
/ 15 марта 2019

У меня есть простое приложение для Android с предварительным просмотром камеры.

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

Iя пытаюсь создать буфер, но похоже, что нет способа контролировать содержимое предварительного просмотра.

Я использую camera2 и textureView для предварительного просмотра.

есть какие-нибудь идеи или библиотека, которая может мне помочь?Спасибо!

Ответы [ 2 ]

0 голосов
/ 16 марта 2019

Вам нужно как-то кешировать ~ 30 буферов предварительного просмотра.

Один из возможных способов - это использовать ImageReader, где вы ожидаете 30 обратных вызовов onImageAvailable, чтобы сработать, прежде чем вы получите первое изображение. Но для этого необходимо нарисовать изображение самостоятельно в PreviewView TextureView, как только вы начнете их получать, что трудно сделать правильно до использования ImageReader в Android Q с конструктором флагов использования.

Вы также можете кэшировать вещи в OpenGL; используйте SurfaceTexture и GLSurfaceView и скопируйте кадры SurfaceTexture в список из 30 других текстур в круговом буфере, затем начните рендеринг, когда будет нарисован 30-й. Но для реализации требуется совсем немного кода скаффолдинга.

0 голосов
/ 15 марта 2019

Используйте для этого обработчик:

new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                // do your preview task here
            }
        },1000);  // 1000 mili sec = 1 sec

метод run будет вызван через одну секунду, вы можете изменить его в соответствии с вашими требованиями.

...