在某些设备上,如果没有设置 SurfaceView
来显示相机预览,则不会调用 onPreviewFrame
。
但是,我在服务中处理相机,所以我无法设置 SurfaceView
但无论如何我都不想看到可见的预览。
如何做到这一点?我能否以编程方式创建一个 SurfaceView
并使用 Camera::setPreviewDisplay
进行设置?
这一定是可能的还是不可能的?
它适用于几乎所有没有 SurfaceView
的手机,但不适用于 HTC One X 和 Google Nexus One...
最佳答案
根据 this question ,在代码中创建一个 SurfaceView
效果很好。尽管我不认为您可以通过服务来创建它。
另一种方法是在 RelativeLayout
中创建一个 1px-1px SurfaceView
并将其与其他 View 一起隐藏在其上。 (可见性仍应为 VISIBLE
)。我们将此技巧用于 Path我们通过 OpenGL 渲染预览缓冲区的相机 UI,它工作正常。
关于Android:在没有 SurfaceView 的情况下从未调用过 onPreviewFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10786213/