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 :)
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
. :)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With