CameraDevice failed to create session [Camera2]

I am trying to use the Camera2 API to transfer camera data to SurfaceView . I follow this guide: Camera2 Guide

I can not get past step 5

MainActivity.java::onCreate ()

 setContentView(R.layout.activity_main); surfaceView = (SurfaceView)findViewById(R.id.surface); manager = (CameraManager)getSystemService(Context.CAMERA_SERVICE); 

MainActivity.java::onClick ()

 for (String id : manager.getCameraIdList()) { CameraCharacteristics characteristics = manager.getCameraCharacteristics(id); Integer direction = characteristics.get(CameraCharacteristics.LENS_FACING); if (direction != null && direction == CameraCharacteristics.LENS_FACING_BACK) { if (checkCallingOrSelfPermission("android.permission.CAMERA") == PackageManager.PERMISSION_GRANTED) manager.openCamera(id, new StateCallback(), null); break; } } 

MainActivity.java.StateCallback :: onOpened (Camera CameraDevice)

 List<Surface> surfaces = new LinkedList<>(); surfaces.add(surfaceView.getHolder().getSurface()); CaptureRequest.Builder builder = camera.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW); builder.addTarget(surfaces.get(0)); camera.createCaptureSession(surfaces, new CameraCaptureSession.StateCallback() { @Override public void onConfigured(CameraCaptureSession session) { Log.i(TAG, "Configured"); } @Override public void onConfigureFailed(CameraCaptureSession session) { Log.e(TAG, "Configured failed"); // Ends up in this function :( } }, null); 

The program ends in the onConfigureFailed() function. I don’t know what could be a mistake, and I don’t know how to verify this.

I suppose I missed something in CaptureRequest , but I have no idea what.

I am running on a Samsung Galaxy S4 .

+7
source share
2 answers

Override onConfigureFailed() as follows:

  @Override public void onConfigureFailed(CameraCaptureSession session) { ImageReader mReader = ImageReader.newInstance(640, 480, ImageFormat.JPEG, 1); takePicture() // function to get image createCameraPreview(); // function to set camera Preview on screen } 

Call the createCameraPreview function to restart the camera, otherwise it will remain stuck. You can change ImageReader with new values

 ImageReader mReader = ImageReader.newInstance(640, 480, ImageFormat.JPEG, 1); 

And takePicture() function takePicture() so that the user no longer has to click to take a picture.

+1
source

add to onConfigured:

  if (null == cameraDevice) { Log.e(TAG, "updatePreview error, return"); return; } captureRequestBuilder.set(CaptureRequest.CONTROL_MODE, CameraMetadata.CONTROL_MODE_AUTO); try { cameraCaptureSessions.setRepeatingRequest(captureRequestBuilder.build(), null, mBackgroundHandler); } catch (CameraAccessException e) { e.printStackTrace(); } 
0
source

All Articles