用于相机预览的隐形SurfaceView

Dom*_*icM 7 camera android preview surfaceview

我只需要获取相机预览数据,但不能看到预览.由于我在服务中完成所有这些工作,因此我必须创建一个虚拟SurfaceView,它可以很好地工作.

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

但是,TYPE_SYSTEM_OVERLAY它没有用.它是不可见的,但没有收到预览数据(in onPreviewFrame()).当我将此参数更改为0时,我获得预览数据,但是SurfaceView可见.

你知道其他任何方法吗?

我现在所做的只是SurfaceView在宽度和高度为1时可见,然后我创建一个ImageView具有特定颜色的叠加层,这样你就看不到颜色的变化了SurfaceView.但这根本不是很好,我真的想做得更好.

Zai*_*ani -1

实际上,您根本不必将 SurfaceView 放置在 UI 上。我们遇到了同样的问题并制作了一个虚拟的 SurfaceView。这是我们的代码:

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

}
mCamera.setPreviewCallback(this);
mCamera.startPreview();
Run Code Online (Sandbox Code Playgroud)

  • 我也是这么想的。在大多数设备上,它甚至可以在没有预览显示的情况下工作,因此您的方法显然也适用于这些设备。但是,在 HTC One X 或 Google Nexus One 等某些设备上,如果没有 SurfaceView 或您的方法,它就无法工作 (2认同)