Androelpha
Androelpha

Reputation: 387

getoutputmediafileuri method is not accessible?

I'm learning how to take a picture and save it's path into a file.

According to the tutorials offers on android developers website, the method

getoutputmediafileuri() is used, however, when I tried to use that method, i found that it's

not accessible or undefined, i mean eclipse underlines this method with redline. I don't know

how to fix this error.

Please find below the code

public class SaveCameraImageDemoActivity extends Activity {
/** Called when the activity is first created. */

Button btn01;
private Uri fileURI;

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

    btn01 = (Button) findViewById(R.id.btn01);
    btn01.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub

            Intent intenet = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
            fileURI = getoutputmediafileuri();
            //intenet.putExtra("output", uri.getPath());
            startActivityForResult(intenet,0);
        }
    });
}

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

  }
}

Upvotes: 15

Views: 18010

Answers (3)

Peter Zhu
Peter Zhu

Reputation: 1194

Now the document has added the code. Just paste the at the end of your Class, it work well for me. Code See As Below.

public static final int MEDIA_TYPE_IMAGE = 1;
public static final int MEDIA_TYPE_VIDEO = 2;

/** 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), "MyCameraApp");
    // 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("MyCameraApp", "failed to create directory");
            return null;
        }
    }

    // Create a media file name
    String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
    File mediaFile;
    if (type == MEDIA_TYPE_IMAGE){
        mediaFile = new File(mediaStorageDir.getPath() + File.separator +
    "IMG_"+ timeStamp + ".jpg");
    } else if(type == MEDIA_TYPE_VIDEO) {
        mediaFile = new File(mediaStorageDir.getPath() + File.separator +
        "VID_"+ timeStamp + ".mp4");
    } else {
        return null;
    }

    return mediaFile;
}

Upvotes: 2

Jeff Buck
Jeff Buck

Reputation: 109

The getoutputmediafileuri() method is defined here: http://developer.android.com/guide/topics/media/camera.html#saving-media

Upvotes: 11

user370305
user370305

Reputation: 109247

There is no inbuilt method getoutputmediafileuri() in android. It is a custom method someone write for getting file URI to store captured images in particular directory. You have to defined and put logic for it. Instead of that use this code,

EDIT:

btn01.setOnClickListener(new OnClickListener() {
   @Override
    public void onClick(View v) {

       Intent imageIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
       File imagesFolder = new File(Environment.getExternalStorageDirectory(), "MyImages");
       imagesFolder.mkdirs(); // <----
       File image = new File(imagesFolder, "image_001.jpg");
       Uri uriSavedImage = Uri.fromFile(image);
       imageIntent.putExtra(MediaStore.EXTRA_OUTPUT, uriSavedImage);
       startActivityForResult(imageIntent,0);
  }
});

Now this will store your camera captured images in MyImages directory in sdcard with image_001.jpg name.

Upvotes: 21

Related Questions