如何创建使用Android的一个摄像机镜头多预览或(How to create multi lens

2019-08-17 02:32发布

我想创造一些像上面,有三个框,就会像一个摄像头预览。 怎样做任何想法或概念?

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

Answer 1:

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

要做到这一点,你只需要打开摄像头一次,然后输出预览数据分成三个部分,你然后显示。

如果您需要前3.0(蜂窝)在Android版本上运行,那么你需要使用预览回调 。 有了它们,你会得到YUV数据的每一帧,然后可以裁剪,转换为RGB,并将其放置在一个ImageView的或SurfaceView一个byte []数组。

在Android 3.0或更高版本,则可以使用setPreviewTexture方法来管预览数据转换成一个OpenGL纹理,然后可以呈现到在GLSurfaceView或等效的多个四边形。



文章来源: How to create multi lenses or preview using one camera in Android