Already the second day I can not make friends with the camera. I re-read all the articles, tried all the options, and still does not work.

The code to which I came:

private static void takePic(){ camera = Camera.open(); photo = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES); tphoto = new File(photo, "test.jpg"); Camera.Parameters parameters = camera.getParameters(); List<Camera.Size> allSizes = parameters.getSupportedPictureSizes(); Camera.Size size = allSizes.get(0); // get top size for (int i = 0; i < allSizes.size(); i++) { if (allSizes.get(i).width > size.width) size = allSizes.get(i); } parameters.setPictureSize(size.width, size.height); camera.setParameters(parameters); SurfaceHolder surfaceHolder; surfaceHolder = MainActivity.camera.getHolder(); surfaceHolder.addCallback(new SurfaceHolder.Callback() { @Override public void surfaceCreated(SurfaceHolder surfaceHolder) { try { camera.setPreviewDisplay(surfaceHolder); camera.startPreview(); camera.takePicture(null, null, new Camera.PictureCallback() { @Override public void onPictureTaken(byte[] bytes, Camera camera) { Log.i("CAMERA", "SAVE"); try { FileOutputStream fos = new FileOutputStream(tphoto); try { fos.write(bytes); fos.close(); } catch (IOException e) { MainActivity.errors++; Panel.setErrors(MainActivity.errors); e.printStackTrace(); } camera.stopPreview(); camera.release(); } catch (FileNotFoundException e) { MainActivity.errors++; Panel.setErrors(MainActivity.errors); e.printStackTrace(); } } }); } catch (IOException e) { MainActivity.errors++; Panel.setErrors(MainActivity.errors); e.printStackTrace(); } } @Override public void surfaceChanged(SurfaceHolder surfaceHolder, int i, int i1, int i2) {} @Override public void surfaceDestroyed(SurfaceHolder surfaceHolder) {} }); } 

Mistake:

java.lang.RuntimeException: takePicture failed

I'm testing on the Samsung Galaxy S4

    1 answer 1

    Permishena obviously not. If the API level is modern, then the permission should be requested in runtime.

    RTFM

    • I use android 5.0.3. And RTFM from 6.0 - Vitaliy