Photos not saving anywhere?

  • Replies:5
Vaibhav Gupta
  • Forum posts: 1

Jul 26, 2012, 12:41:01 PM via Website

I am developing an application using custom camera.
Application work fine but when i click capture button image doesnt save anywhere on device(Sony Erricsson Xperia S).
I added the permission to write in menifest also

Take Photo class



import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

import android.app.Activity;
import android.content.Context;
import android.hardware.Camera;
import android.hardware.Camera.PictureCallback;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.FrameLayout;
import android.widget.Toast;

public class TakePhoto extends Activity {
private Camera mCamera;
private CameraPreview mPreview;
public static final int MEDIA_TYPE_IMAGE = 1;
private String test="test";

private PictureCallback mPicture = new PictureCallback() {

@Override
public void onPictureTaken(byte[] data, Camera camera) {

File pictureFile = getOutputMediaFile(MEDIA_TYPE_IMAGE);
if (pictureFile == null) {
Log.d("TakePhoto",
"Error creating media file, check storage permissions: ");
return;
} else {
Log.d("TakePhoto",
"creating media file, check storage permissions: ");
}
try {
//FileOutputStream fos = new FileOutputStream(pictureFile);
FileOutputStream fos = openFileOutput(test, Context.MODE_PRIVATE);
fos.write(data);
fos.close();
Log.d("TakePhoto", "Output Media File "+data);
} catch (FileNotFoundException e) {
Log.d("TakePhoto", "File not found: " + e.getMessage());
} catch (IOException e) {
Log.d("TakePhoto", "Error accessing file: " + e.getMessage());
}

}
};

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.take_photo);

// Create an instance of Camera
mCamera = getCameraInstance();
mCamera.setDisplayOrientation(90);
// Create our Preview view and set it as the content of our activity.
mPreview = new CameraPreview(this, mCamera);
FrameLayout preview = (FrameLayout) findViewById(R.id.camera_preview);
preview.addView(mPreview);

Button captureButton = (Button) findViewById(R.id.bcapture);
captureButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// get an image from the camera
mCamera.takePicture(null, null, mPicture);
Toast.makeText(getBaseContext(), "sup", Toast.LENGTH_SHORT)
.show();
}
});

}

/** A safe way to get an instance of the Camera object. */
public static Camera getCameraInstance() {
Camera c = null;
try {
c = Camera.open(); // attempt to get a Camera instance
} catch (Exception e) {
// Camera is not available (in use or does not exist)
Log.d("TakePhoto", "Camera is not Avialable");
}
return c; // returns null if camera is unavailable
}

/** Create a file Uri for saving an image or video */
private static Uri getOutputMediaFileUri(int type) {
return Uri.fromFile(getOutputMediaFile(type));
}

/** Create a File for saving an image or video */
private static File getOutputMediaFile(int type) {
// To be safe, you should check that the SDCard is mounted
// using Environment.getExternalStorageState() before doing this.

File mediaStorageDir = new File(
Environment
.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES),
"TakePhoto");
// This location works best if you want the created images to be shared
// between applications and persist after your app has been uninstalled.

// Create the storage directory if it does not exist
if (!mediaStorageDir.exists()) {
if (!mediaStorageDir.mkdirs()) {
Log.d("TakePhoto", "failed to create directory");
return null;
}
} else {
Log.d("TakePhoto", "Directory exist");

}

// Create a media file name
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
File mediaFile;

mediaFile = new File(mediaStorageDir.getPath() + File.separator
+ "IMG_" + timeStamp + ".jpg");

Log.d("TakePhoto", mediaFile.toString());

return mediaFile;
}
}




Camera Preview class


import java.io.IOException;

import android.content.Context;
import android.hardware.Camera;
import android.util.Log;
import android.view.SurfaceHolder;
import android.view.SurfaceView;

/** A basic Camera preview class */
public class CameraPreview extends SurfaceView implements SurfaceHolder.Callback {

private SurfaceHolder mHolder;
private Camera mCamera;

public CameraPreview(Context context, Camera camera) {
super(context);
mCamera = camera;

// Install a SurfaceHolder.Callback so we get notified when the
// underlying surface is created and destroyed.
mHolder = getHolder();
mHolder.addCallback(this);
// deprecated setting, but required on Android versions prior to 3.0
mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
}

public void surfaceCreated(SurfaceHolder holder) {
// The Surface has been created, now tell the camera where to draw the preview.
try {
mCamera.setPreviewDisplay(holder);
mCamera.startPreview();
} catch (IOException e) {
Log.d("CameraPreview", "Error setting camera preview: " + e.getMessage());
}
}

public void surfaceDestroyed(SurfaceHolder holder) {
// empty. Take care of releasing the Camera preview in your activity.
}

public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
// If your preview can change or rotate, take care of those events here.
// Make sure to stop the preview before resizing or reformatting it.

if (mHolder.getSurface() == null){
// preview surface does not exist
return;
}

// stop preview before making changes
try {
mCamera.stopPreview();
} catch (Exception e){
// ignore: tried to stop a non-existent preview
}

// set preview size and make any resize, rotate or
// reformatting changes here

// start preview with new settings
try {
mCamera.setPreviewDisplay(mHolder);
mCamera.startPreview();

} catch (Exception e){
Log.d("CameraPreview", "Error starting camera preview: " + e.getMessage());
}
}
}

Reply
Eric McBride
  • Forum posts: 1,790

Aug 15, 2012, 5:32:38 PM via Website

Hey Jeremiah..any way you can help out on this?

Reply
Patricia Hall
  • Forum posts: 41

Aug 28, 2012, 12:09:10 PM via Website

This is really great post and very informative…

Reply
mo non ur business
  • Forum posts: 6

Aug 29, 2012, 4:37:26 AM via App

A better way for us to determine the issue would be a logcat.

Reply
tfrey46r4
  • Forum posts: 8

Aug 30, 2012, 2:44:55 AM via Website

3 days ago ... When we created our premier OIL RIG, Oakley Sunglasses Outletwe put an embargo on conventional thinking and made fossil fuel out of ordinary designs. This Oakley ...

Reply