如何延迟相机预览,以便显示x秒钟前发生的情况?

时间:2019-03-15 10:41:58

标签: android kotlin camera android-camera2

我有一个带有摄像头预览的简单android应用。

我想设置预览,以便显示x秒钟前发生的事情。

我正在尝试做一个缓冲区,但似乎无法控制预览中的内容。

我使用camera2textureView进行预览。

您有什么想法或图书馆可以帮助我吗? 谢谢!

2 个答案:

答案 0 :(得分:0)

为此使用处理程序:

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

运行方法将在一秒钟后被调用,您可以根据需要进行更改。

答案 1 :(得分:0)

您需要以某种方式缓存约30个预览缓冲区。

一种可能的方法是使用ImageReader,在其中获取30个onImageAvailable回调之前先触发,然后再获取第一个Image。但这要求您一旦开始获取图像,就需要自己将图像绘制到预览TextureView上,这在使用用法标记构造函数的Android Q的ImageReader之前很难正确完成。

您还可以在OpenGL中缓存内容;使用SurfaceTexture和GLSurfaceView,然后将SurfaceTexture帧复制到圆形缓冲区中其他30个纹理的列表中,然后在绘制第30个纹理时开始渲染。但是需要实现大量的脚手架代码。