async void CapturePhoto() { var videoConnection = stillImageOutput.ConnectionFromMediaType(AVMediaType.Video); var sampleBuffer = await stillImageOutput.CaptureStillImageTaskAsync(videoConnection); var jpegImage = AVCaptureStillImageOutput.JpegStillToNSData(sampleBuffer); var photo = new UIImage(jpegImage); NSData imgData = photo.AsJPEG(0.8f); string timestr = DateTime.Now.Ticks.ToString(); //The Folllowing is an answer to quesition that how to Get the selected Crop and Image Name Models.CropModel SelectedCrop = null; string selectedImageName = (MainPage as CameraPage).GetViewModel.Parent.SelectedImagePath; if ((MainPage as CameraPage).GetViewModel.SelectedCrop != null) { SelectedCrop = (MainPage as CameraPage).GetViewModel.SelectedCrop; } //End of var documentsDirectory = Environment.GetFolderPath (Environment.SpecialFolder.MyDocuments); var directory = Path.Combine(documentsDirectory, "Photos"); //string[] files = Directory.GetFiles(directory); if (!Directory.Exists(directory)) { Directory.CreateDirectory(directory); } string jpgFilename = System.IO.Path.Combine(directory, "NEW_IOS_" + timestr + "_Photo.jpg"); // hardcoded filename, overwritten each time NSError err = null; if (imgData.Save(jpgFilename, false, out err)) { BigTed.BTProgressHUD.ShowToast("Photo is taken!!!", toastPosition: BigTed.ProgressHUD.ToastPosition.Bottom, timeoutMs: 1200); //Console.WriteLine("saved as " + jpgFilename); } else { BigTed.BTProgressHUD.ShowToast("Photo is not taken!!!", toastPosition: BigTed.ProgressHUD.ToastPosition.Bottom, timeoutMs: 1200); //Console.WriteLine("NOT saved as " + jpgFilename + " because" + err.LocalizedDescription); } await MainPage.Navigation.PopModalAsync(); }
async void TakePhotoButtonTapped(object sender, EventArgs e) { camera.StopPreview(); var image = textureView.Bitmap; try { var absolutePath = Android.OS.Environment.GetExternalStoragePublicDirectory(Android.OS.Environment.DirectoryDcim).AbsolutePath; var folderPath = absolutePath + "/Camera"; //The Folllowing is an answer to quesition that how to Get the selected Crop and Image Name Models.CropModel SelectedCrop = null; string selectedImageName = (MainPage as CameraPage).GetViewModel.Parent.SelectedImagePath; FarmerModel selectedFarmer = (MainPage as CameraPage).GetViewModel.Parent.SelectedFarmer; FieldModel selectedField = (MainPage as CameraPage).GetViewModel.Parent.SelectedField; var filePath = string.Empty; if (!string.IsNullOrEmpty(selectedImageName)) { filePath = System.IO.Path.Combine(folderPath, string.Format("{0}.jpg", selectedImageName)); File.Delete(filePath); } if ((MainPage as CameraPage).GetViewModel.SelectedCrop != null) { SelectedCrop = (MainPage as CameraPage).GetViewModel.SelectedCrop; } filePath = System.IO.Path.Combine(folderPath, string.Format("NEW_{0}_{1}_{2}.jpg", SelectedCrop.Crop_Name, selectedField.FieldGuid, SelectedCrop.Crop_ID.ToString())); //End of var fileStream = new FileStream(filePath, FileMode.Create); await image.CompressAsync(Bitmap.CompressFormat.Jpeg, 80, fileStream); fileStream.Close(); image.Recycle(); AndHUD.Shared.ShowToast(activity, "Photo saved!!!", MaskType.Clear, TimeSpan.FromMilliseconds(1500)); 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); //Forms.Context.SendBroadcast(intent); Context.SendBroadcast(intent); await MainPage.Navigation.PopModalAsync(); } catch (Exception ex) { AndHUD.Shared.ShowToast(activity, "Photo can not taken!!!", MaskType.Clear, TimeSpan.FromMilliseconds(1500)); System.Diagnostics.Debug.WriteLine(@" ", ex.Message); } //camera.StartPreview(); }