Using the phone’s camera after capturing image activity does not return to a specific activity

I am extracting the image from my application using the phone camera and using the android.provider.MediaStore.ACTION_IMAGE_CAPTURE file.

After pressing the capture button, save or reset is displayed. By clicking the "Save" button, he returns back to the camera, and not to the application. and the image is saved in the gallery not to the output file that I announced.

Below is my code

    @Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    Intent in=new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
    startActivityForResult(in, 0);

}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
if (resultCode==RESULT_OK) {
    Bitmap bm=(Bitmap) data.getExtras().get("data");
    ByteArrayOutputStream bytes = new ByteArrayOutputStream();
    bm.compress(Bitmap.CompressFormat.JPEG, 40, bytes);

    //you can create a new file name "test.jpg" in sdcard folder.
    File f = new File(Environment.getExternalStorageDirectory()
                            + File.separator + "player1.jpg");
    try {
        f.createNewFile();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    //write the bytes in file
    FileOutputStream fo = null;
    try {
        fo = new FileOutputStream(f);
    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    try {
        fo.write(bytes.toByteArray());
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }finally{
        Intent pic=new Intent(pic1.this, GameMenu.class);
        startActivity(pic);
        finish();
    }
}
else {
    Toast.makeText(getApplicationContext(), "Canceled", Toast.LENGTH_LONG).show();
    Intent pic=new Intent(pic1.this, Menu.class);
    startActivity(pic);
    finish();
}

Please suggest if any solution .. Thanks in advance ...

EDIT 1: I checked this code on samsung galaxy y duos (android 2.3.6), which does not work properly. And I checked the same thing on the galaxy pop (2.2.1) and HTC wildfire (2.3.5), that it works fine.

+5
5

, g etTempFile() - ,

Intent photoPickerIntent= new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                       photoPickerIntent.putExtra(MediaStore.EXTRA_OUTPUT, getTempFile());

                       photoPickerIntent.putExtra("outputFormat",Bitmap.CompressFormat.JPEG.toString());
                       photoPickerIntent.putExtra("return-data", true);
                       startActivityForResult(photoPickerIntent,TAKE_PICTURE);

getTempFile:

private Uri getTempFile() {


        File root = new File(Environment.getExternalStorageDirectory(), "Directory");
        if (!root.exists()) {
            root.mkdirs();
        }
             File file;

             file = new File(root,filename+".jpeg" );

             muri = Uri.fromFile(file);
             photopath=muri.getPath();

              Log.e("getpath",muri.getPath());
              return muri;

           }

+2

, setContentView(); , .

  @Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
     // setContentView() here
    Intent in=new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
    startActivityForResult(in, 0);

}

onActivityResult()?

0

, , . , . .

0

, . URI :

/**
 * Capturing Camera Image will lunch camera app request image capture
 */
private void captureImage() {

    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

    fileUri = getOutputMediaFileUri();

    intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);

    // start the image capture Intent
    startActivityForResult(intent, CAMERA_CAPTURE_IMAGE_REQUEST_CODE);
}

this is how i create the file:

/**
 * Creating file uri to store image
 * 
 * 
 * @return Uri
 */
public Uri getOutputMediaFileUri() {
    return Uri.fromFile(getTempOutputMediaFile());
}

/**
 * returning File
 * 
 * 
 * @return File
 */
private File getTempOutputMediaFile() {

    File appDirectory = this.getFilesDir();

    File mediaStorageDir = new File(APP_NAME,
                YOUR_IMAGE_DIRECTORY_NAME);

    Log.i("mediaStorageDir", mediaStorageDir.getAbsolutePath());

    // Create the storage directory if it does not exist
    if (!mediaStorageDir.exists()) {
        if (!mediaStorageDir.mkdirs()) {
            Log.i(YOUR_IMAGE_DIRECTORY_NAME,
                    "Oops! Failed create "
                            + YOUR_IMAGE_DIRECTORY_NAME
                            + " directory");
            return null;
        }
    }

    // Create a media file name
    UUID temporaryImageUuid = UUID.randomUUID();
    File mediaFile;

    mediaFile = new File(mediaStorageDir.getPath() + File.separator
            + temporaryImageUuid + "." + YOUR_EXTENSION);

    return mediaFile;
}
0
source

hi check the following code. After capturing the image, use startPreview () for release.it works for me

        captureButton.setOnClickListener(new View.OnClickListener() {
                        @Override
            public void onClick(View v) {
                            mCamera.autoFocus(null);
                mCamera.takePicture(null, null, mPicture);
                Log.e("in capture button","onclick of this button"+ mCamera);
                mCamera.startPreview();
                                }
        });
0
source

All Articles