我有一个简单的Android应用程序与相机预览。
我想设置预览,以便显示x秒之前发生的事情。
我正在尝试做一个缓冲区,但看起来没有办法控制预览中的内容。
我使用camera2
和textureView
进行预览。
你有任何想法或图书馆可以帮助我吗?谢谢 !
使用处理程序:
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
// do your preview task here
}
},1000); // 1000 mili sec = 1 sec
run方法将在一秒后调用,您可以根据您的要求进行更改。
你需要以某种方式缓存~30个预览缓冲区。
一种可能的方法是使用ImageReader,等待30个onImageAvailable回调在获取第一个Image之前触发。但是这需要您在开始获取它们时自己将图像绘制到预览TextureView,这在Android Q的带有使用标记构造函数的ImageReader之前很难正确完成。
你也可以在OpenGL中缓存东西;使用SurfaceTexture和GLSurfaceView,并将SurfaceTexture帧复制到循环缓冲区中30个其他纹理的列表中,然后在绘制第30个纹理时开始渲染。但需要相当多的脚手架代码来实现。