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

7

我想创建像上面那样的东西,那三个框将会像相机预览一样。你有什么想法或概念可以做到这点吗?

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

2
也许您可以在相机屏幕上方放置一张图片,带有三个透明的正方形? - Guntis Treulands
是的,我也考虑过那个选项,但除此之外还有其他选择吗? - She Smile GM
1
我建议选择这个选项,因为它可以节省宝贵的内存。也许还可以将相机输出存储在缓冲区中,然后每帧在你的每个正方形图像中表示?但是我不知道其他可能性,因为我是一个iPhone人。 - Guntis Treulands
我明白了,谢谢你的想法,非常感激,我会尝试你的方法。 :D - She Smile GM
1个回答

3
你只能打开一个摄像头(前置或后置)一次;你不能多次打开相机以产生多个预览流。事实上,在大多数设备上,你不能同时打开前置和后置摄像头,因为相机处理管道是两个相机之间共享的。
要做到这一点,你需要仅打开相机一次,然后将输出预览数据分成三个部分,然后显示。
如果你需要在 Android 3.0(蜂巢)之前的版本上运行,则需要使用 预览回调。使用它们,你将获得每帧的 YUV 数据的 byte[] 数组,然后可以将其裁剪、转换为 RGB,并放置在 ImageView 或 SurfaceView 中。
在 Android 3.0 或更高版本上,你可以使用 setPreviewTexture 方法将预览数据传输到 OpenGL 纹理中,然后在 GLSurfaceView 或等效的多个四边形中渲染。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接