隐形SurfaceView相机预览(Invisible SurfaceView for Camera

2019-06-25 09:08发布

我只需要得到相机预览数据,但不可见的预览。 因为我做的这一切都在一个服务,我不得不创建一个虚拟SurfaceView,这工作得很好。

我从这个答案使用的代码: https://stackoverflow.com/a/10268650/1395697

然而,随着TYPE_SYSTEM_OVERLAY没有奏效。 它是无形的,但没有收到任何预览数据(在onPreviewFrame() 当我改变这个参数为0,我得到的预览数据,但SurfaceView是可见的。

你知不知道任何其他方式做到这一点?

我现在做的只是做一个可见SurfaceView与宽度和高度1,然后我创建一个ImageView覆盖与特定的颜色,让你看不到的颜色变化SurfaceView 。 但是,这是不是整齐的一切,我真的很想做一个好一点。

Answer 1:

我也用同样的StackOverflow的答案,并获得相同的problem.so:

我已经添加了这个代码

this.setZOrderOnTop(true);
SurfaceHolder h = this.getHolder();
h.setFormat(PixelFormat.TRANSPARENT);

我surfaceChanged方法,而不是活动(或在我的情况下,服务),并得到了它trasparent,但日志上抱怨被遗弃的帧:(



Answer 2:

你实际上并没有放置SurfaceView你的UI可言。 我们遇到了同样的问题,并提出了虚拟SurfaceView。 下面是我们的代码:

SurfaceView dummy = new SurfaceView(c);
try {
    mCamera.setPreviewDisplay(dummy.getHolder());
} catch (IOException e) {

}
mCamera.setPreviewCallback(this);
mCamera.startPreview();


文章来源: Invisible SurfaceView for Camera Preview