Lorem ipsum dolor sit amet, consectetur adipiscing elit. Test link

setUpCameraPreview in Android

CameraManager in Android


private CameraManager cameraManager;
private String cameraId;
private CameraDevice cameraDevice;
private CameraCaptureSession captureSession;
private CaptureRequest.Builder previewRequestBuilder;

private void setUpCameraPreview() {
    cameraManager = (CameraManager) getSystemService(Context.CAMERA_SERVICE);
    try {
        String[] cameraIds = cameraManager.getCameraIdList();
        for (String id : cameraIds) {
            CameraCharacteristics characteristics = cameraManager.getCameraCharacteristics(id);
            Integer facing = characteristics.get(CameraCharacteristics.LENS_FACING);
            if (facing != null && facing == CameraCharacteristics.LENS_FACING_BACK) {
                cameraId = id;
                break;
            }
        }
        if (cameraId == null) {
            cameraId = cameraIds[0];
        }

        CameraDevice.StateCallback stateCallback = new CameraDevice.StateCallback() {
            @Override
            public void onOpened(@NonNull CameraDevice camera) {
                cameraDevice = camera;

                SurfaceTexture surfaceTexture = previewSurface.getSurfaceTexture();
                surfaceTexture.setDefaultBufferSize(previewSize.getWidth(), previewSize.getHeight());
                Surface previewSurface = new Surface(surfaceTexture);

                try {
                    previewRequestBuilder = camera.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW);
                    previewRequestBuilder.addTarget(previewSurface);

                    List<Surface> targets = Arrays.asList(previewSurface, imageReader.getSurface());
                    camera.createCaptureSession(targets, new CameraCaptureSession.StateCallback() {
                        @Override
                        public void onConfigured(@NonNull CameraCaptureSession session) {
                            captureSession = session;

                            previewRequestBuilder.set(CaptureRequest.CONTROL_MODE, CaptureRequest.CONTROL_MODE_AUTO);
                            previewRequestBuilder.set(CaptureRequest.CONTROL_AE_MODE, CaptureRequest.CONTROL_AE_MODE_ON);
                            previewRequestBuilder.set(CaptureRequest.CONTROL_AE_TARGET_FPS_RANGE, new Range<>(30, 30));
                            previewRequestBuilder.set(CaptureRequest.CONTROL_SCENE_MODE, CaptureRequest.CONTROL_SCENE_MODE_ACTION);

                            CaptureRequest previewRequest = previewRequestBuilder.build();
                            captureSession.setRepeatingRequest(previewRequest, null, null);
                        }

                        @Override
                        public void onConfigureFailed(@NonNull CameraCaptureSession session) {
                            // Handle configuration failures
                        }
                    }, null);
                } catch (CameraAccessException e) {
                    // Handle camera access exceptions
                }
            }

            @Override
            public void onDisconnected(@NonNull CameraDevice camera) {
                // Handle camera disconnect event
            }

            @Override
            public void onError(@NonNull CameraDevice camera, int error) {
                // Handle camera errors
            }
        };

        cameraManager.openCamera(cameraId, stateCallback, null);
    } catch (CameraAccessException e) {
        // Handle camera access exceptions
    } catch (SecurityException e) {
        // Handle camera security exceptions
    }
}

        

Post a Comment