I have updated the following code to following line changes but did not work:
//set the Image location
File file = new File(Environment.getExternalStorageDirectory() + "/Skynet/images/t1.jpg" );
Uri uriTarget = Uri.fromFile(file);
I want to save the jpeg to the above directory, but do not know since it is using the media store. Any tip to do this.
import android.app.Activity;
import android.content.ContentValues;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
public class AndroCamera extends Activity {
private static final int IMAGE_CAPTURE = 0;
private Button startBtn;
private Uri imageUri;
private ImageView imageView;
/** Called when the activity is first created.
* sets the content and gets the references to
* the basic widgets on the screen like
* {@code Button} or {@link ImageView}
*/
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
imageView = (ImageView)findViewById(R.id.img);
startBtn = (Button) findViewById(R.id.startBtn);
startBtn.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
startCamera();
}
});
}
public void startCamera() {
Log.d("ANDRO_CAMERA", "Starting camera on the phone...");
String fileName = "testphoto.jpg";
ContentValues values = new ContentValues();
values.put(MediaStore.Images.Media.TITLE, fileName);
values.put(MediaStore.Images.Media.DESCRIPTION,
"Image capture by camera");
values.put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg");
imageUri = getContentResolver().insert(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1);
startActivityForResult(intent, IMAGE_CAPTURE);
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == IMAGE_CAPTURE) {
if (resultCode == RESULT_OK){
Log.d("ANDRO_CAMERA","Picture taken!!!");
imageView.setImageURI(imageUri);
}
}
}
}
thats because the
Uriyou are using is from the media manager, perhaps if you use the definedUriyou want it to be saved to, it should work.Here is a hint:
in this it was saved to the root, but since you are creating the file, then you can place it wherever you want to. Just make sure the directory exist otherwise create it.
And as @Simon said, make sure you have the permission to write on external storage.
Update 1:
currently you have something like:
so the insert is only inserting the image to the
MediaStoretable… but if thats what you actually need, then you need to override theDatacolumn inMediaStore.adding on your
contentValuessomething like this:if you do not need to use the
MediaStoretable then there is no need to do the insert and therefore theContentValuesaren’t needed.