如何创build多镜头或使用Android中的一个相机预览

我想创build一个像上面那样的三个盒子,就像一个相机预览。 任何想法或概念在做什么?

我试图得到相机的实例,并将其放置到三个camerapreview对象,但我得到一个错误消息,我想,这是不允许的。 这里是我的代码:

private CameraPreview mPreview; private CameraPreview mPreview2; private CameraPreview mPreview3; private FrameLayout preview; private FrameLayout preview2; private FrameLayout preview3; mCamera=getCameraInstance(); mCamera2=getCameraInstance(); mCamera3=getCameraInstance(); mPreview=new CameraPreview(getApplicationContext(), mCamera); mPreview2=new CameraPreview(getApplicationContext(), mCamera2); mPreview3=new CameraPreview(getApplicationContext(), mCamera3); preview=(FrameLayout)findViewById(R.id.camSetA_qr1); preview.addView(mPreview); preview2=(FrameLayout)findViewById(R.id.camSetA_qr1); preview2.addView(mPreview2); preview3=(FrameLayout)findViewById(R.id.camSetA_qr1); preview3.addView(mPreview3); 

和我的getinstance代码

  public static Camera getCameraInstance() { Camera c = null; try { c = Camera.open(); } catch (Exception e) { } return c; } 

Solutions Collecting From Web of "如何创build多镜头或使用Android中的一个相机预览"

您只能打开一个给定的相机(正面或背面)一次; 您无法多次打开相机以生成多个预览stream。 事实上,在大多数设备上,无法同时打开前后摄像头,因为摄像头处理pipe道是由两台摄像头共享的。

要做到这一点,您只需打开一次相机,然后将输出预览数据分成三个部分,然后显示。

如果您需要在3.0(Honeycomb)之前的Android版本上运行,那么您需要使用预览callback 。 使用它们,您将获得每帧的YUV数据的byte []数组,然后您可以裁剪,转换为RGB,并放置在ImageView或SurfaceView中。

在Android 3.0或更高版本中,您可以使用setPreviewTexture方法将预览数据传输到OpenGL纹理,然后您可以在GLSurfaceView或同等渲染中渲染多个四边形。