Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/193.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Camera2BasicFragment-修改切换前/后摄像头时出现问题_Java_Android_Android Camera_Android Camera2 - Fatal编程技术网

Java Camera2BasicFragment-修改切换前/后摄像头时出现问题

Java Camera2BasicFragment-修改切换前/后摄像头时出现问题,java,android,android-camera,android-camera2,Java,Android,Android Camera,Android Camera2,我正在尝试修改Camera2BasicFragment示例项目,以支持前后摄像头之间的切换。 我在预览屏幕上添加了一个切换按钮覆盖,并使用以下代码来处理单击。还有一个类变量camerradirection,用于记住当前正在使用的相机: @Override public void onClick(View view) { switch (view.getId()) { case R.id.button_take_photo: takePicture(

我正在尝试修改Camera2BasicFragment示例项目,以支持前后摄像头之间的切换。 我在预览屏幕上添加了一个切换按钮覆盖,并使用以下代码来处理单击。还有一个类变量
camerradirection
,用于记住当前正在使用的相机:

@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片段实现。

问题在于方法
设置CameraOutputs(int width,int height)
,其中设置了
mCameraId=cameraId,因为正如它在评论中所说的

//在本示例中,我们不使用前置摄像头

我试过了

if(mCameraId==null){
    mCameraId=cameraId;
}
但这还不够,因为它没有为我正确设置预览大小


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

您好,Andrew,您找到解决方案了吗?我也有同样的问题,不幸的是没有。该项目被搁置,所以我没有进一步研究。抱歉。@AndrewFielden有任何更新吗?@Abdenaceurlicheb恐怕没有。很抱歉