【问题标题】:Android: onPreviewFrame never called without SurfaceViewAndroid:在没有 SurfaceView 的情况下永远不会调用 onPreviewFrame
【发布时间】:2012-06-02 21:54:54
【问题描述】:

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

如何做到这一点?我可以通过编程方式创建一个SurfaceView 并使用Camera::setPreviewDisplay 进行设置吗?

这一定是可能的吗?

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

【问题讨论】:

    标签: android camera surfaceview preview


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        从 API 11 开始,您可以使用 SurfaceTexture 而不是 SurfaceView 从相机获取帧。然后,不要使用Camera.setPreviewDisplay,而是使用Camera.setPreviewTexture

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

        【讨论】:

          猜你喜欢
          • 2017-04-25
          • 1970-01-01
          • 2012-01-16
          • 2020-08-10
          • 2014-06-16
          • 1970-01-01
          • 2020-07-30
          • 1970-01-01
          • 2013-06-22
          相关资源
          最近更新 更多