10

在某些设备上,如果设置为 no 来显示相机预览,onPreviewFrame则不会调用。SurfaceView但是,我在服务中处理相机,所以我不能设置,SurfaceView但我不想有可见的预览。

如何才能做到这一点?我可以以编程方式创建一个SurfaceView并设置它Camera::setPreviewDisplay吗?

这一定是可能的还是不可能的?

它适用于几乎所有没有SurfaceViewHTC One X 和 Google Nexus One 的手机...

4

3 回答 3

4

根据这个问题,创建SurfaceView代码可以正常工作。尽管我认为您无法通过服务创建它。

SurfaceView另一种方法是在 a内创建一个 1px-1pxRelativeLayout并在其上用其他视图隐藏它。(可见性应该仍然是VISIBLE)。我们将这个技巧用于Path camera UI,我们通过 OpenGL 渲染预览缓冲区,它工作正常。

于 2013-01-04T08:16:13.423 回答
1

根据易于配置的文档,可见和显示的表面视图是激活相机预览所必需的。虽然它可能会被覆盖

于 2013-01-04T09:21:58.710 回答
0

从 API 11 开始,您可以使用 aSurfaceTexture而不是 aSurfaceView从相机获取帧。然后,而不是使用Camera.setPreviewDisplay,只需使用Camera.setPreviewTexture

This answer以及this one讨论了这一点。

于 2014-06-16T07:26:18.630 回答