//================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
            });
        }
Exemplo n.º 2
0
        //=================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));
        }