private static void take_photo_new( CameraDevice cameraDevice, ImageView imageviewer_new_picture, String file_name) { Context context_holder = ApplicationContextProvider.getContext(); CameraManager manager = (CameraManager) context_holder.getSystemService(Context.CAMERA_SERVICE); HandlerThread mBackgroundThread; mBackgroundThread = new HandlerThread("Camera Background"); mBackgroundThread.start(); final Handler mBackgroundHandler = new Handler(mBackgroundThread.getLooper()); try { CameraCharacteristics characteristics = manager.getCameraCharacteristics(cameraDevice.getId()); Size[] jpegSizes = null; if (characteristics != null) { jpegSizes = characteristics .get(CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP) .getOutputSizes(ImageFormat.JPEG); } int width = 640; int height = 480; if (jpegSizes != null && 0 < jpegSizes.length) { width = jpegSizes[0].getWidth(); height = jpegSizes[0].getHeight(); } ImageReader reader = ImageReader.newInstance((width + 1), (height + 1), ImageFormat.JPEG, 1); final CaptureRequest.Builder captureBuilder = cameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_STILL_CAPTURE); captureBuilder.addTarget(reader.getSurface()); captureBuilder.set(CaptureRequest.CONTROL_MODE, CameraMetadata.CONTROL_MODE_AUTO); captureBuilder.set( CaptureRequest.COLOR_CORRECTION_MODE, CameraMetadata.COLOR_CORRECTION_MODE_FAST); captureBuilder.set(CaptureRequest.FLASH_MODE, CameraMetadata.FLASH_MODE_OFF); captureBuilder.set(CaptureRequest.JPEG_THUMBNAIL_QUALITY, null); List<Surface> outputSurfaces = new ArrayList<Surface>(2); outputSurfaces.add(reader.getSurface()); captureBuilder.build(); cameraDevice.createCaptureSession( outputSurfaces, new CameraCaptureSession.StateCallback() { @Override public void onConfigured(CameraCaptureSession session) { try { session.capture(captureBuilder.build(), null, null); } catch (CameraAccessException e) { e.printStackTrace(); } } @Override public void onConfigureFailed(CameraCaptureSession session) {} }, mBackgroundHandler); Log.e("camera", "take picture... sleep"); try { Thread.sleep(2000); } catch (InterruptedException e) { } byte[] bytes; Image image = null; try { // Log.e("camera", " reader"+reader.getHeight()); image = reader.acquireLatestImage(); image.getFormat(); ByteBuffer buffer = image.getPlanes()[0].getBuffer(); bytes = new byte[buffer.capacity()]; buffer.get(bytes); } finally { if (image != null) { image.close(); } } // String file_name = "curent_photo"; FileOutputStream out_put_stream = null; try { out_put_stream = ApplicationContextProvider.getContext() .openFileOutput( file_name + ".jpg", ApplicationContextProvider.getContext().MODE_PRIVATE); } catch (IOException exception) { exception.printStackTrace(); } try { out_put_stream.write(bytes); Log.e("camera", "saved picture! " + file_name); if (imageviewer_new_picture != null) { ImageView cap_picture = (ImageView) imageviewer_new_picture; Bitmap bitmap_found = FileIO.loadBMPPrivate(file_name, Bitmap.CompressFormat.JPEG); cap_picture.setImageBitmap(bitmap_found); } } catch (IOException e) { e.printStackTrace(); } finally { if (null != out_put_stream) { try { out_put_stream.close(); } catch (IOException e) { e.printStackTrace(); } } closeCamera(cameraDevice); } } catch (CameraAccessException e) { e.printStackTrace(); } }