The following code is in a service that takes a snapshot in the background. It works fine for all versions below lollipop, but gives a run-time exception in takePicture(null,null,mcall) . Any ideas ..?
public void takePictures(final int delay) { final Camera.PictureCallback mCall = new Camera.PictureCallback() { @Override public void onPictureTaken(byte[] data, Camera camera) { Log.e(TAG, "Picture taken, saving...."); Uri uriTarget = getContentResolver().insert//(Media.EXTERNAL_CONTENT_URI, image); (MediaStore.Images.Media.EXTERNAL_CONTENT_URI, new ContentValues()); OutputStream imageFileOS; try { imageFileOS = getContentResolver().openOutputStream(uriTarget); imageFileOS.write(data); imageFileOS.flush(); imageFileOS.close(); Log.e("Image saved: ", uriTarget.toString()); savePictures(getRealPathFromURI(uriTarget.toString())); mCamera.stopPreview(); mCamera.release(); mCamera = null; } catch (FileNotFoundException e) { e.printStackTrace(); Log.e("Image not saved: ", e.toString()); } catch (IOException e) { Log.e("Image not saved:2 ", e.toString()); e.printStackTrace(); } } }; if (getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA)) { thread = new Thread(new Runnable() { @Override public void run() { for (int numOfPicturesAlreadyTaken = 0; numOfPicturesAlreadyTaken < numOfPictures; numOfPicturesAlreadyTaken++) { Log.e(TAG, "Opening camera"); mCamera = Camera.open(); //mCamera.setPreviewDisplay(sv.getHolder()); parameters = mCamera.getParameters(); parameters.setRotation(90); mCamera.setParameters(parameters); mCamera.startPreview(); mCamera.takePicture(null, null, mCall); Thread.sleep(delay); } } }); thread.start(); } else { Toast.makeText(this, "No camera found.", Toast.LENGTH_SHORT).show(); } }
mistake go into the lollipop only
the code is in a service that takes a snapshot in the background.
java.lang.RuntimeException: takePicture failed at android.hardware.Camera.native_takePicture(Native Method) at android.hardware.Camera.takePicture(Camera.java:1436) at android.hardware.Camera.takePicture(Camera.java:1381) at com.codebrew.lockdown.services.CameraService$2.run(CameraService.java:133) at java.lang.Thread.run(Thread.java:818)
source share