我有一个带有摄像头预览的简单android应用。
我想设置预览,以便显示x秒钟前发生的事情。
我正在尝试做一个缓冲区,但似乎无法控制预览中的内容。
我使用camera2
和textureView
进行预览。
您有什么想法或图书馆可以帮助我吗? 谢谢!
答案 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个纹理时开始渲染。但是需要实现大量的脚手架代码。