public async void CapturePhotoAsync(object sender, EventArgs e) { try { if (!CrossMedia.Current.IsCameraAvailable || !CrossMedia.Current.IsTakePhotoSupported) { await DisplayAlert("No hay cámara", "La cámara no se encuentra disponible", "OK"); return; } var lastImage = App.ImageGuiaDatabase.GetLastImageGuia(); int id = (lastImage != null) ? (lastImage.Id + 1) : 1; string fileName = guiaSelected.GuiaNumero + "-" + id; var _mediaFile = await CrossMedia.Current.TakePhotoAsync(new StoreCameraMediaOptions { PhotoSize = PhotoSize.Small, Directory = "ImagesGuias", Name = fileName + ".jpg" }); if (_mediaFile == null) { return; } // Mapeamos la imagen, para así poderla // asociar a su guía correspondiente ImageGuia imageGuia = new ImageGuia { Path = _mediaFile.AlbumPath, Comment = "", RegisterDate = DateTime.Now, Id_guia = guiaSelected.Id }; // Guardamos el registro de la imagen en la BD App.ImageGuiaDatabase.SaveImageGuia(imageGuia); // Por último refrescamos el listado de imágenes RefreshList(); } catch (Exception error) { Debug.WriteLine("Error: " + error.Message); } }
public ImageGuia GetLastImageGuia() { lock (locker) { ImageGuia lastImageGuia = new ImageGuia(); try { lastImageGuia = (from i in database.Table <ImageGuia>() select i).ToList().OrderByDescending(i => i.Id).FirstOrDefault(); } catch (SQLiteException e) { Debug.WriteLine("Error: " + e.Message); } return(lastImageGuia); } }
public int SaveImageGuia(ImageGuia imageGuia) { lock (locker) { try { if (imageGuia.Id > 0) { database.Update(imageGuia); return(imageGuia.Id); } else { return(database.Insert(imageGuia)); } } catch (SQLiteException e) { Debug.WriteLine("Error: " + e.Message); return(0); } } }
private async Task OpenCamera(object sender, EventArgs e) { try { if (!CrossMedia.Current.IsCameraAvailable || !CrossMedia.Current.IsTakePhotoSupported) { await DisplayAlert("No hay cámara", "La cámara no se encuentra disponible", "OK"); return; } var lastImage = App.ImageGuiaDatabase.GetLastImageGuia(); int id = (lastImage != null) ? (lastImage.Id + 1) : 1; string fileName = guiaSelected.GuiaNumero + "-" + id; MediaFile _mediaFile = await CrossMedia.Current.TakePhotoAsync(new StoreCameraMediaOptions { PhotoSize = PhotoSize.Small, Directory = "ImagesGuias", Name = fileName + ".jpg" }); if (_mediaFile == null) { return; } // Mapeamos la imagen, para así poderla // asociar a su guía correspondiente ImageGuia imageGuia = new ImageGuia { Path = _mediaFile.AlbumPath, Comment = "", RegisterDate = DateTime.Now, Id_guia = guiaSelected.Id }; // Convertimos la imagen en base 64 var stream_file = _mediaFile.GetStream(); var bytes = new byte[stream_file.Length]; await stream_file.ReadAsync(bytes, 0, (int)stream_file.Length); string base64 = Convert.ToBase64String(bytes); // Guardamos el registro de la imagen en la BD App.ImageGuiaDatabase.SaveImageGuia(imageGuia); // Actualizamos el valor de la imagen en bd local guiaSelected.Imagen = base64; // Llamamos al método que guarda los cambios de la guía en BD App.GuiaDatabase.SaveGuia(guiaSelected); // Guardamos y posterioremente enviamos la información al servicio await SaveChangesAsync(); } catch (Exception ex) { Debug.WriteLine("Error: " + ex); } }