We can choose a photo from many source places. For example: photos, camera, file manager, etc.
Get a photo from camera.
We can choose a photo from many source places. For example: photos, camera, file manager, etc.
Get a photo from camera.
public static final CAMERA_REQUEST_CODE = 5566; | |
public static Uri imageUri = null; | |
// Trigger a build-in camera application. | |
public onPickPhotoThruCamera() | |
{ | |
// Create intent for taking a picture and choose it. | |
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); | |
// Set a file path for putting the picture temporally. | |
File file = new File(Environment.getExternalStorageDirectory() + File.separator + "image.jpg"); | |
if (file.exists()) | |
{ | |
file.delete(); | |
file = new File(Environment.getExternalStorageDirectory() + File.separator + "image.jpg"); | |
} | |
imageUri = Uri.fromFile(file); | |
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri); | |
// If you call startActivityForResult() using an intent that no app can handle, your app will crash. | |
// So as long as the result is not null, it's safe to use the intent. | |
if (intent.resolveActivity(getPackageManager()) != null) | |
{ | |
// Bring up gallery to select a photo | |
startActivityForResult(Intent.createChooser(intent, "Take a picture"), CAMERA_REQUEST_CODE); | |
} | |
} | |
@Override | |
public void onActivityResult(int requestCode, int resultCode, Intent data) | |
{ | |
Uri selectedImageUri = imageUri; | |
getContentResolver().notifyChange(selectedImageUri, null); | |
try | |
{ | |
this.getFragmentObject(R.id.fragmentContainer, TantraFragment.class).sendPhotoToServer(selectedImageUri.toString()); | |
Toast.makeText(this, selectedImageUri.toString(), Toast.LENGTH_LONG).show(); | |
} | |
catch (Exception e) | |
{ | |
Toast.makeText(this, "Failed to load", Toast.LENGTH_SHORT).show(); | |
} | |
} |
<?xml version="1.0" encoding="utf-8"?> | |
<manifest xmlns:android="http://schemas.android.com/apk/res/android" | |
...> | |
<!- ... --> | |
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> | |
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> | |
<!- ... --> | |
</manifest> |
// PICK_PHOTO_CODE is a constant integer | |
public final static int PICK_PHOTO_CODE = 1046; | |
// Trigger gallery selection for a photo | |
public void onPickPhoto(View view) | |
{ | |
// Create intent for picking a photo from the gallery | |
Intent intent = new Intent(Intent.ACTION_PICK, | |
MediaStore.Images.Media.EXTERNAL_CONTENT_URI); | |
// If you call startActivityForResult() using an intent that no app can handle, your app will crash. | |
// So as long as the result is not null, it's safe to use the intent. | |
if (intent.resolveActivity(getPackageManager()) != null) | |
{ | |
// Bring up gallery to select a photo | |
startActivityForResult(intent, PICK_PHOTO_CODE); | |
} | |
} | |
@Override | |
public void onActivityResult(int requestCode, int resultCode, Intent data) | |
{ | |
if (data != null) | |
{ | |
Uri photoUri = data.getData(); | |
// Do something with the photo based on Uri | |
Bitmap selectedImage = MediaStore.Images.Media.getBitmap(this.getContentResolver(), photoUri); | |
// Load the selected image into a preview | |
ImageView ivPreview = (ImageView) findViewById(R.id.ivPreview); | |
ivPreview.setImageBitmap(selectedImage); | |
} | |
} |
// PICK_PHOTO_CODE is a constant integer | |
public final static int PICK_PHOTO_CODE = 1046; | |
// Trigger gallery selection for a photo | |
public void onPickPhoto(View view) | |
{ | |
// Create intent for picking a photo from the gallery | |
Intent intent = new Intent(Intent.ACTION_PICK); | |
intent.setType("image/*"); | |
intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true); | |
// If you call startActivityForResult() using an intent that no app can handle, your app will crash. | |
// So as long as the result is not null, it's safe to use the intent. | |
if (intent.resolveActivity(getPackageManager()) != null) | |
{ | |
// Bring up gallery to select a photo | |
startActivityForResult(Intent.createChooser(intent, "Select Picture"), PICK_PHOTO_CODE); | |
} | |
} | |
@Override | |
public void onActivityResult(int requestCode, int resultCode, Intent data) | |
{ | |
if (PICK_PHOTO_CODE == resultCode && null != data) | |
{ | |
if (null != data.getClipData()) | |
ClipData mClipData = data.getClipData(); | |
mArrayUri = new ArrayList<Uri>(); | |
mBitmapsSelected = new ArrayList<Bitmap>(); | |
for (int i = 0; i < mClipData.getItemCount(); i++) | |
{ | |
ClipData.Item item = mClipData.getItemAt(i); | |
mArrayUri.add(item.getUri()); | |
// !! You may need to resize the image if it's too large | |
Bitmap bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), photoUri); | |
mBitmapsSelected.add(bitmap); | |
} | |
} | |
} | |
} |