我只需要获取相机预览数据,而不是可见预览。 由于我在服务中执行所有这些操作,因此我必须创建一个虚拟 SurfaceView,它运行良好。
我使用了这个答案中的代码: https://stackoverflow.com/a/10268650/1395697
但是,对于 TYPE_SYSTEM_OVERLAY
它不起作用。它是不可见的,但没有收到预览数据(在 onPreviewFrame()
中)。当我将此参数更改为 0 时,我得到了预览数据,但是 SurfaceView
是可见的。
你知道其他方法吗?
我现在所做的只是制作一个宽度和高度为 1 的可见 SurfaceView
,然后我创建一个具有特定颜色的 ImageView
叠加层,这样您就不会查看 SurfaceView
的颜色变化。但这一点都不整洁,我真的很想做得更好。
最佳答案
我也使用了相同的 stackOverflow 答案,得到了同样的问题。所以:
我已经添加了这段代码
this.setZOrderOnTop(true);
SurfaceHolder h = this.getHolder();
h.setFormat(PixelFormat.TRANSPARENT);
到我的 surfaceChanged 方法,而不是 Activity (或我的情况下的服务),并使其透明,但日志提示废弃的帧:(
关于android - 用于相机预览的隐形 SurfaceView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10959767/