Пример #1
0
        async void TakePhotoButtonTapped(object sender, EventArgs e)
        {
            if (isLoading)
            {
                return;
            }
            camera.StopPreview();
            isLoading = true;
            MessagingCenter.Send <CustomCameraPage>(CustomCameraPage.getInstance(), "StartLoading");

            var image = textureView.Bitmap;

            try
            {
                var absolutePath = Android.OS.Environment.GetExternalStoragePublicDirectory(Android.OS.Environment.DirectoryDcim).AbsolutePath;
                var folderPath   = absolutePath + "/Camera";
                var filePath     = System.IO.Path.Combine(folderPath, string.Format("photo_{0}.jpg", Guid.NewGuid()));

                FileStream fileStream = new FileStream(filePath, FileMode.Create);
                await image.CompressAsync(Bitmap.CompressFormat.Jpeg, 50, fileStream);

                var intent = new Android.Content.Intent(Android.Content.Intent.ActionMediaScannerScanFile);
                var file   = new Java.IO.File(filePath);

                var uri = Android.Net.Uri.FromFile(file);
                intent.SetData(uri);
                MainActivity.Instance.SendBroadcast(intent);

                Stream stream = fileStream as Stream;

                //MessagingCenter.Send<CustomCameraPage>(CustomCameraPage.getInstance(), "Navigation");
                //MessagingCenter.Send<CustomCameraPage, string>(CustomCameraPage.getInstance(), "PathSend", filePath);

                List <Species> speciesList = await CameraHelper.CommonOperationCameraLibPictures(stream);

                MessagingCenter.Send <CustomCameraPage, List <Species> >(CustomCameraPage.getInstance(), "StreamSend", speciesList);
                //MessagingCenter.Send<CustomCameraPage, Stream>(CustomCameraPage.getInstance(), "StreamSend", stream);

                fileStream.Close();
                image.Recycle();
            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.WriteLine(@"				", ex.Message);
            }

            isLoading = false;
            MessagingCenter.Send <CustomCameraPage>(CustomCameraPage.getInstance(), "StopLoading");
            camera.StartPreview();
        }
Пример #2
0
        async void GalleryButtonTapped(object sender, EventArgs e)
        {
            if (isLoading)
            {
                return;
            }

            if (!CrossMedia.Current.IsPickPhotoSupported)
            {
                return;
            }
            var file = await Plugin.Media.CrossMedia.Current.PickPhotoAsync(new Plugin.Media.Abstractions.PickMediaOptions
            {
                PhotoSize = Plugin.Media.Abstractions.PhotoSize.Medium,
            });

            if (file == null)
            {
                return;
            }

            MessagingCenter.Send <CustomCameraPage>(CustomCameraPage.getInstance(), "StartLoading");
            camera.StopPreview();
            isLoading = true;

            Stream stream = file.GetStream();


            List <Species> speciesList = await CameraHelper.CommonOperationCameraLibPictures(stream);

            MessagingCenter.Send <CustomCameraPage, List <Species> >(CustomCameraPage.getInstance(), "StreamSend", speciesList);

            MessagingCenter.Send <CustomCameraPage>(CustomCameraPage.getInstance(), "StopLoading");
            isLoading = false;
            file.Dispose();
            camera.StartPreview();
        }