Android:onPreviewFrame从未在没有SurfaceView的情况下调用

时间:2012-05-28 14:22:37

标签: android camera surfaceview preview

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

如何做到这一点?我可以通过编程方式创建SurfaceView并将其设置为Camera::setPreviewDisplay吗?

这一定是否可行?

它适用于几乎所有没有SurfaceView的手机,但不适用于HTC One X和Google Nexus One ......

3 个答案:

答案 0 :(得分:4)

根据this question,在代码中创建SurfaceView可以正常工作。虽然我认为你不能通过服务创建它。

另一种方法是在SurfaceView内创建1px-1px RelativeLayout并将其隐藏在其上方的其他视图中。 (可见性仍应为VISIBLE)。我们将这个技巧用于Path相机用户界面,我们通过OpenGL渲染预览缓冲区并且工作正常。

答案 1 :(得分:1)

根据配置简单的文档,可以显示可见和显示的表面视图以激活相机预览。它可能会重叠

答案 2 :(得分:0)

从API 11开始,您可以使用SurfaceTexture代替SurfaceView来获取相机中的帧。然后,不要使用Camera.setPreviewDisplay,只需使用Camera.setPreviewTexture

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