众所周知,我们可以选择TextureView、SurfaceView 和GLSurfaceView 进行android 相机预览。
哪个是相机预览的最佳选择?我专注于相机性能。
最佳答案
从性能的角度来看,SurfaceView 是赢家。
在 SurfaceView 中,帧来自相机并被转发到系统图形合成器 (SurfaceFlinger),无需复制。在大多数情况下,任何缩放都将由显示处理器而不是 GPU 完成,这意味着像素只扫描一次以进行缩放并再次扫描出,而不是扫描一次。
GLSurfaceView 是一个 SurfaceView,带有一些处理 EGL 设置和线程管理的包装类。你不能在接收相机帧的 Surface 上使用 OpenGL ES,所以你在做额外的工作而没有任何好处。 (开销是次要的一次性设置,而不是每帧,因此您可能无法衡量差异。)
TextureView 接收 SurfaceTexture 中的帧作为“外部”OpenGL ES 纹理,然后使用 GLES 将它们渲染到应用程序的 UI 表面上。缩放和渲染由 GPU 执行,然后将结果转发给 SurfaceFlinger。这是最慢的选项,但也是最灵活的 View 。
如果您想了解有关系统工作原理的更多信息,请参阅 Android Graphics Architecture document .
关于android - 哪个 View 是 android 相机预览的最佳选择?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30771732/