//================Private methods=============// /*return copied image info or null if image copy was not successful;*/ private ImageInfo TryImportImageFromGallery(Stream imageInputStream) { if (ExtStorageUtils.IsExtStorageWritable()) { string imgName = Guid.NewGuid().ToString(); string newImgFile = Path.Combine(mImagesPath, imgName); using (imageInputStream) using (var outputStream = new FileStream(newImgFile, FileMode.CreateNew)) { try { imageInputStream.CopyTo(outputStream); // Saving copied image info to the database. long dbRowId = DbDao.GetInstance().InsertImageInfo(mContext, imgName); return(new ImageInfo { DbRowId = dbRowId, ImageName = imgName }); } catch (Exception) { } } } return(new ImageInfo { DbRowId = -1, ImageName = null }); }
//=================Constructor==============// public DetailedImageModel(Context context) { mContext = context; if (ExtStorageUtils.IsExtStorageWritable()) { mImagesPath = ExtStorageUtils.GetExtStoragePubDir( mContext.GetString(Resource.String.images_directory_name), Android.OS.Environment.DirectoryPictures); } }
//==============Activity result=====================// protected override void OnActivityResult(int requestCode, Result resultCode, Intent data) { base.OnActivityResult(requestCode, resultCode, data); if (IMPORT_IMAGE_FROM_GALLERY_REQUEST_CODE == requestCode && resultCode == Result.Ok) { Android.Net.Uri imgUri = data.Data; try { Stream imgInputStream = ContentResolver.OpenInputStream(imgUri); var fragment = (OverviewImageGalleryFragment) FragmentManager.FindFragmentByTag(OverviewImageGalleryFragment.TAG); if (fragment != null) { fragment.ImportImageFromGallery(imgInputStream); } } catch (Exception) { } } else if (IMPORT_IMAGE_FROM_CAMERA_REQUEST_CODE == requestCode) { if (resultCode == Result.Ok) { var fragment = (OverviewImageGalleryFragment) FragmentManager.FindFragmentByTag(OverviewImageGalleryFragment.TAG); if (fragment != null && !String.IsNullOrEmpty(mCameraImgName)) { fragment.ImportImageFromCamera(mCameraImgName); } } else { // Removing unused camera file. if (ExtStorageUtils.IsExtStorageWritable() && String.IsNullOrEmpty(mCameraImgName)) { string imagesPath = ExtStorageUtils.GetExtStoragePubDir( GetString(Resource.String.images_directory_name), Android.OS.Environment.DirectoryPictures); File.Delete(Path.Combine(imagesPath, mCameraImgName)); } } } }
public override bool OnOptionsItemSelected(IMenuItem item) { switch (item.ItemId) { case Resource.Id.action_image_from_gallery: { Intent intent = new Intent(Intent.ActionGetContent); intent.SetType("image/*"); StartActivityForResult(intent, IMPORT_IMAGE_FROM_GALLERY_REQUEST_CODE); break; } case Resource.Id.action_image_from_camera: { if (ExtStorageUtils.IsExtStorageWritable()) { string imagesPath = ExtStorageUtils.GetExtStoragePubDir( GetString(Resource.String.images_directory_name), Android.OS.Environment.DirectoryPictures); mCameraImgName = Guid.NewGuid().ToString(); string cameraImgFile = Path.Combine(imagesPath, mCameraImgName); Intent intent = new Intent(MediaStore.ActionImageCapture); Java.IO.File file = new Java.IO.File(cameraImgFile); intent.PutExtra(MediaStore.ExtraOutput, Android.Net.Uri.FromFile(file)); if (intent.ResolveActivity(PackageManager) != null) { StartActivityForResult(intent, IMPORT_IMAGE_FROM_CAMERA_REQUEST_CODE); } } break; } } return(base.OnOptionsItemSelected(item)); }