Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Take and save picture on button press

Tags:

android

camera

I'm creating an Android application which uses user captured images as part of a larger process. So far my XML layout has a SurfaceView and Button inside a RelativeLayout. I've managed to get the camera preview to show on the SurfaceView but I'm stuck on how to take a picture and save it when a user presses the button.

My class file looks something like the CameraPreview API demo: http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/CameraPreview.html

Ideally, when the button it pressed the camera should autofocus, snap a picture (with the clicky sound), save it to /data/data/app_package_structure/files/file_name.jpg, then pop up a Toast to tell the user their image has been saved.

Any help is much appreciated :)

like image 612
greenie Avatar asked Apr 26 '10 11:04

greenie


1 Answers

I think CommonsWare has really already answered most of this question, but this might work for the auto focus and the shutter sound. This is a guess, since I'm not at a machine where I can compile/test any of this.

In your button-press-handling code, I believe you should call (possibly by message passing)

camera.autoFocus(new Camera.AutoFocusCallback() {
  Camera.ShutterCallback shutterCallback = new Camera.ShutterCallback() {
    public void onShutter() {
      // Play your sound here.
    }
  };
  public void onAutoFocus(boolean success, Camera camera) {
    camera.takePicture(shutterCallback, null, photoCallback);
  }
});  

where camera is your camera object, and photoCallback is the same as in CommonsWare's example.

Exactly what is it that you are stuck on?

Oh, and don't forget to add the <uses-feature> tag android.hardware.camera.autofocus. :)

like image 115
Mikael Ohlson Avatar answered Sep 30 '22 16:09

Mikael Ohlson