The following code is in service that takes picture in background. It is working fine for all the version below lollipop but gives 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();
}
}
the error
come in lollipop only
the code is in service that take picture in 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)