Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Camera activity returning null android

I am building an application where I want to capture an image by the default camera activity and return back to my activity and load that image in a ImageView. The problem is camera activity always returning null. In my onActivityResult(int requestCode, int resultCode, Intent data) method I am getting data as null. Here is my code:

public class CameraCapture extends Activity {      protected boolean _taken = true;     File sdImageMainDirectory;     Uri outputFileUri;      protected static final String PHOTO_TAKEN = "photo_taken";     private static final int CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE = 0;      @Override     public void onCreate(Bundle savedInstanceState) {          try {              super.onCreate(savedInstanceState);                setContentView(R.layout.cameracapturedimage);                     File root = new File(Environment                             .getExternalStorageDirectory()                             + File.separator + "myDir" + File.separator);                     root.mkdirs();                     sdImageMainDirectory = new File(root, "myPicName");                    startCameraActivity();          } catch (Exception e) {             finish();             Toast.makeText(this, "Error occured. Please try again later.",                     Toast.LENGTH_SHORT).show();         }      }      protected void startCameraActivity() {          outputFileUri = Uri.fromFile(sdImageMainDirectory);          Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");         intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);          startActivityForResult(intent, CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE);     }      @Override     protected void onActivityResult(int requestCode, int resultCode, Intent data) {          switch (requestCode) {         case CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE:         {             if(resultCode==Activity.RESULT_OK)             {                 try{                 ImageView imageView=(ImageView)findViewById(R.id.cameraImage);                 imageView.setImageBitmap((Bitmap) data.getExtras().get("data"));                 }                 catch (Exception e) {                     // TODO: handle exception                 }             }              break;         }          default:             break;         }     }       @Override     protected void onRestoreInstanceState(Bundle savedInstanceState) {         if (savedInstanceState.getBoolean(CameraCapture.PHOTO_TAKEN)) {             _taken = true;         }     }      @Override     protected void onSaveInstanceState(Bundle outState) {         outState.putBoolean(CameraCapture.PHOTO_TAKEN, _taken);     } } 

Am I doing anything wrong?

like image 837
rawcoder064 Avatar asked Aug 08 '11 12:08

rawcoder064


1 Answers

You are getting wrong because you are doing it wrong way.

If you pass the extra parameter MediaStore.EXTRA_OUTPUT with the camera intent then camera activity will write the captured image to that path and it will not return the bitmap in the onActivityResult method.

If you will check the path which you are passing then you will know that actually camera had write the captured file in that path.

For further information you can follow this, this and this

like image 198
Dharmendra Avatar answered Sep 24 '22 23:09

Dharmendra