【问题标题】:Camera2BasicFragment - problems modifying to switch front/back camerasCamera2BasicFragment - 修改切换前置/后置摄像头的问题
【发布时间】:2016-02-06 19:07:44
【问题描述】:

我正在尝试修改 Camera2BasicFragment 示例项目以支持在前后摄像头之间切换。 我在预览屏幕上添加了一个切换按钮叠加层,以及以下代码来处理点击。还有一个类变量cameraDirection 来记住当前正在使用哪个摄像头:

@Override
public void onClick(View view) {
    switch (view.getId()) {
        case R.id.button_take_photo:
            takePicture();
            break;

        case R.id.button_reverse_camera:
            CameraManager manager = (CameraManager) getActivity().getSystemService(Context.CAMERA_SERVICE);
            try {
                String[] cameraIds = manager.getCameraIdList();
                CameraCharacteristics cameraCharacteristics = manager.getCameraCharacteristics(mCameraId);
                for (String id : cameraIds) {
                    if (! id.equals(mCameraId)) {
                        closeCamera();
                        cameraDirection = cameraDirection == CameraCharacteristics.LENS_FACING_FRONT?CameraCharacteristics.LENS_FACING_BACK:
                                CameraCharacteristics.LENS_FACING_FRONT;
                        mCameraId = id;
                        openCamera(mPreviewSize.getWidth(), mPreviewSize.getHeight());
                    }
                }

            } catch (CameraAccessException e) {
                e.printStackTrace();
            }
            break;

    }
}

烦人的是相机的第一个开关工作正常。但随后的开关不起作用。所发生的情况是预览会稍微变淡,就像发生了什么事一样,但它仍保留在当前选定的相机上。多按几下切换按钮后,应用程序崩溃,更烦人的是没有堆栈跟踪。所以我不知道问题是什么。 我怀疑相机锁没有被正确释放,但这只是猜测。

所以我希望有人成功地修改了这个示例来处理相机切换,或者可以推荐一个替代的 Camera2 片段实现。

【问题讨论】:

  • 嗨,安德鲁,您找到解决方案了吗?我也有同样的问题。
  • 很遗憾没有。项目被搁置,所以我没有进一步追求。对不起。
  • @AndrewFielden 有什么更新吗?
  • @AbdenaceurLichiheb 恐怕不是。对不起。

标签: java android android-camera android-camera2


【解决方案1】:

问题出在方法 setUpCameraOutputs(int width, int height) 中,它设置了 mCameraId=cameraId;,因为正如它在 cmets 中所说的那样

// 我们在此示例中不使用前置摄像头。

我试过了

if(mCameraId==null){
    mCameraId=cameraId;
}

但这还不够,因为它没有为我正确设置预览大小。

您可以将方法修改为setUpCameraOutputs(int width, int height, String cameraId) 并正确进行设置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-29
    • 2015-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多