Tuesday, January 4, 2011

Save the camera image using MediaStore

Further work on the last exercise "Implement takePicture function of Android Camera". Modify onPictureTaken() method to save the captured image in Android standard location for images, using Android's MediaStore.

Save the camera image using MediaStore

 PictureCallback myPictureCallback_JPG = new PictureCallback(){


@Override
public void onPictureTaken(byte[] arg0, Camera arg1) {
// TODO Auto-generated method stub
/*Bitmap bitmapPicture
= BitmapFactory.decodeByteArray(arg0, 0, arg0.length); */

Uri uriTarget = getContentResolver().insert(Media.EXTERNAL_CONTENT_URI, new ContentValues());

OutputStream imageFileOS;
try {
imageFileOS = getContentResolver().openOutputStream(uriTarget);
imageFileOS.write(arg0);
imageFileOS.flush();
imageFileOS.close();

Toast.makeText(AndroidCamera.this,
"Image saved: " + uriTarget.toString(),
Toast.LENGTH_LONG).show();

} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

camera.startPreview();
}};



Download the files.

- Download the project


next:
- Start Camera auto-focusing, autoFocus()



12 comments:

  1. i test it in the phone with android 2.2 but i don't see the pictures saved
    what's wrong?

    ReplyDelete
  2. hello inotfortoni,

    Try the proect: Download the project.

    Tested on Nexus One.

    ReplyDelete
  3. Thank you very much.... Great tutorial... I searched so many sites for camera application.. am satisfied with your tutorial.. I tried your code and its working..
    Thanks again...

    ReplyDelete
  4. Hi
    Excellent tutorial, thanks for sharing your knowledge, I have a
    query ... I add an opaque background and an image on the view (macro)...but when I
    take a photo not recorded...this is the image http://dl.dropbox.com/u/46059390/fotos/imageOverlayAndroid.JPG
    the upper image is in main.xml and the other in the same control.xml ...have any idea how to do this

    ReplyDelete
  5. App crashes when clicking the button, unless you add



    to the manifest.
    Great tutorial!

    ReplyDelete
  6. hello widi,

    In the code, u know where the image saved. Such that you can load the image from it. Refer to Scale bitmap Efficiently.

    ReplyDelete
  7. Very well-explained tutorial...

    now I can make a working front camera app by following your step by step explanation

    I Like it :D

    ReplyDelete
  8. Best tutorial on camera.Great work.

    I got a question. Lets say i took a picture and saved it then i wanted to leave AndroidCamera actiity and start another one.
    How can i do that? I've tried many ways but it always crashes. I guess it's because of SurfaceView.

    Can you please help me about that?

    ReplyDelete
  9. tks for tutorial. But how can I take byte[] from a picture to so something else?

    I have public byte[] and do this
    Camera.PictureCallback myPictureCallback_JPG = new Camera.PictureCallback(){

    @Override
    public void onPictureTaken(byte[] arg0, Camera arg1) {
    // TODO Auto-generated method stub
    pictureBin = arg0;
    bitmapPicture = BitmapFactory.decodeByteArray(arg0, 0, arg0.length);

    }};

    But it's alway null when I take picture ??

    ReplyDelete
  10. Why the pictures I take are black?

    ReplyDelete