如何在Android中使用一个摄像头创建多镜头或预览

如何在Android中使用一个摄像头创建多镜头或预览,android,android-layout,android-camera,Android,Android Layout,Android Camera,我想创建类似上面的东西,三个盒子,就像一个相机预览。关于该做什么有什么想法或概念吗 我尝试获取相机的实例并将其放置到三个camerapreview对象,但我得到一条错误消息,我想,这是不允许的。这是我的密码: private CameraPreview mPreview; private CameraPreview mPreview2; private CameraPreview mPreview3; private FrameLayout preview; private

我想创建类似上面的东西,三个盒子,就像一个相机预览。关于该做什么有什么想法或概念吗

我尝试获取相机的实例并将其放置到三个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;
 }

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

为此,只需打开相机一次,然后将输出预览数据拆分为三个部分,然后显示

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


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

也许您可以将图像放置在摄像头屏幕上方,并使用三个透明正方形?耶,我也想到了这一点,但除此之外还有其他选择吗?我建议使用此选项,因为它将节省宝贵的内存。也许也可以将相机输出存储在缓冲区中,然后每个帧在每个正方形图像中表示?但我还是不知道还有什么可能,因为我是一个iPhone迷。我明白了,谢谢你的想法,非常感谢,我会试试你的方法D