我只需要得到相机预览数据,但不可见的预览。 因为我做的这一切都在一个服务,我不得不创建一个虚拟SurfaceView,这工作得很好。
我从这个答案使用的代码: https://stackoverflow.com/a/10268650/1395697
然而,随着TYPE_SYSTEM_OVERLAY
没有奏效。 它是无形的,但没有收到任何预览数据(在onPreviewFrame()
当我改变这个参数为0,我得到的预览数据,但SurfaceView
是可见的。
你知不知道任何其他方式做到这一点?
我现在做的只是做一个可见SurfaceView
与宽度和高度1,然后我创建一个ImageView
覆盖与特定的颜色,让你看不到的颜色变化SurfaceView
。 但是,这是不是整齐的一切,我真的很想做一个好一点。
我也用同样的StackOverflow的答案,并获得相同的problem.so:
我已经添加了这个代码
this.setZOrderOnTop(true);
SurfaceHolder h = this.getHolder();
h.setFormat(PixelFormat.TRANSPARENT);
我surfaceChanged方法,而不是活动(或在我的情况下,服务),并得到了它trasparent,但日志上抱怨被遗弃的帧:(
你实际上并没有放置SurfaceView你的UI可言。 我们遇到了同样的问题,并提出了虚拟SurfaceView。 下面是我们的代码:
SurfaceView dummy = new SurfaceView(c);
try {
mCamera.setPreviewDisplay(dummy.getHolder());
} catch (IOException e) {
}
mCamera.setPreviewCallback(this);
mCamera.startPreview();