ankit aggarwal ankit aggarwal -4 years ago 140
Android Question

How to get image from camera from fragment in Android

In my code I got null on bitmap but Image created successfully and uri is fine but BitmapFactory.decodeFile() return null.

I used fragment below code:

public class CameraImage extends Fragment {

private static final int TAKE_PHOTO_CODE = 1888;
Button button;
private Uri fileUri1,fileUri;
ImageView imageView;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {

final View rootView = inflater.inflate(R.layout.camera_image,
container, false);

button = (Button) rootView.findViewById(R.id.button);
imageView = (ImageView) rootView.findViewById(R.id.imageview);

button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {

Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
fileUri1 = getOutputMediaFileUri();
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);
startActivityForResult(cameraIntent, TAKE_PHOTO_CODE);

}
});

return rootView;

}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == TAKE_PHOTO_CODE) {
if (resultCode == Activity.RESULT_OK) {

BitmapFactory.Options options;


try {
Bitmap bitmap = BitmapFactory.decodeFile(pathname);
showDialog(bitmap, 1);
} catch (OutOfMemoryError e) {
try {
options = new BitmapFactory.Options();
options.inSampleSize = 2;
Bitmap bitmap = BitmapFactory.decodeFile(pathname, options);
imageView.setImageBitmap(bitmap);
} catch (Exception e2) {
Log.e("Camera", "" + e2 + " " + e);
}
}
}
}
} }

public Uri getOutputMediaFileUri() {
return Uri.fromFile(getOutputMediaFile());
}

private static File getOutputMediaFile() {

File mediaStorageDir = new File(
Environment
.getExternalStoragePublicDirectory(MyApplication.getAppContext().getFilesDir().getAbsolutePath()),
IMAGE_DIRECTORY_NAME);

if (!mediaStorageDir.exists()) {
if (!mediaStorageDir.mkdirs()) {
Log.d(IMAGE_DIRECTORY_NAME, "Oops! Failed create "
+ IMAGE_DIRECTORY_NAME + " directory");
return null;
}
}
// Create a media file name
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss",
Locale.getDefault()).format(new Date());
File mediaFile;

try {
mediaFile = File.createTempFile(
"IMG_" + timeStamp,
".jpg",
mediaStorageDir
);
} catch (Exception e) {
Log.e("Camera", "" + e);
mediaFile = new File(mediaStorageDir.getPath() + File.separator
, "IMG_" + timeStamp + ".jpg");
}
return mediaFile;
}


In above code I got null on bitmap in onActivityResult but I got uri from this image is present at that location.

Answer Source

I solved my question:

by changing cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);

to

cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri1);
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download