AndroidCamera2 API开关后退 - 前置摄像头

问题描述 投票:0回答:3
第一次,它会尽可能地带到前置摄像头,但是每次我再次单击时,开关/交换不再起作用:预览(在前置摄像头上)逐渐消失,例如发生了一些事情,但是仍然在当前选择的摄像头(前摄像头)。

我的代码是我的代码:

中,在RecordVideoFragment中:

onViewCreated

这是

// Switch camera button switchCameraButton = (ImageButton) view.findViewById(R.id.button_switch_camera); // Listener for Switch cameras button switchCameraButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { switchCameras(); } });

函数:

switchCameras()
如果您对正在拯救我的情况有任何想法。我已经为此烦恼了几天。非常感谢
    

您需要做的是介绍新变量:

private void switchCameras() { mCameraOpenCloseLock.release(); mCameraDevice.close(); CameraManager mCameraManager = (CameraManager) getActivity().getSystemService(Context.CAMERA_SERVICE); try { String mCameraId = mCameraManager.getCameraIdList()[0]; if (mCameraId.equals("0")) { // If currently on FRONT camera (0 = CameraCharacteristics.LENS_FACING_FRONT) mCameraId = "1"; // switch to BACK camera (1 = CameraCharacteristics.LENS_FACING_BACK) switchCameraButton.setImageResource(R.drawable.ic_camera_front); } else { // If currently on BACK camera mCameraId = "0"; // switch to front camera switchCameraButton.setImageResource(R.drawable.ic_camera_back); } try { if (ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED) { mCameraManager.openCamera(mCameraId, mStateCallback, null); } else { requestVideoPermissions(); } } catch (CameraAccessException e) { e.printStackTrace(); } } catch (CameraAccessException e) { Toast.makeText(getActivity(), "Cannot access the camera.", Toast.LENGTH_SHORT).show(); getActivity().finish(); } }

opencamera

方法。
public static final String CAMERA_FRONT = "1";
public static final String CAMERA_BACK = "0";

private String cameraId = CAMERA_BACK;

android camera camera2 android-camera2
3个回答
25
投票

中camera2basic

教程,镜头面向方向设置正确的相机,因此我在关闭并重新打开相机之前更改了此方向。
public void switchCamera() {
    if (cameraId.equals(CAMERA_FRONT)) {
        cameraId = CAMERA_BACK;
        closeCamera();
        reopenCamera();
        switchCameraButton.setImageResource(R.drawable.ic_camera_front);

    } else if (cameraId.equals(CAMERA_BACK)) {
        cameraId = CAMERA_FRONT;
        closeCamera();
        reopenCamera();
        switchCameraButton.setImageResource(R.drawable.ic_camera_back);
    }
}

public void reopenCamera() {
    if (mTextureView.isAvailable()) {
        openCamera(mTextureView.getWidth(), mTextureView.getHeight());
    } else {
        mTextureView.setSurfaceTextureListener(mSurfaceTextureListener);
    }
}

HEADER1
HEADER2

14
投票

细胞1

细胞2


0
投票
细胞3
细胞5
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.