/// <summary> /// Select a picture from library. /// </summary> /// <param name="options">The storage options.</param> /// <returns>Task with a return type of MediaFile.</returns> /// <exception cref="System.NotSupportedException">Throws an exception if feature is not supported.</exception> public Task <MediaFile> SelectPhotoAsync(CameraMediaStorageOptions options) { if (!IsCameraAvailable) { throw new NotSupportedException(); } options.VerifyOptions(); return(TakeMediaAsync("image/*", Intent.ActionPick, options)); }
/// <summary> /// Takes the picture. /// </summary> /// <param name="options">The storage options.</param> /// <returns>Task with a return type of MediaFile.</returns> /// <exception cref="System.NotSupportedException">Throws an exception if feature is not supported.</exception> public Task <MediaFile> TakePhotoAsync(CameraMediaStorageOptions options) { if (!IsCameraAvailable) { throw new NotSupportedException(); } options.VerifyOptions(); return(TakeMediaAsync("image/*", MediaStore.ActionImageCapture, options)); }
/// <summary> /// Takes the picture. /// </summary> /// <param name="options">The storage options.</param> /// <returns>Task<IMediaFile>.</returns> /// <exception cref="InvalidOperationException">Only one operation can be active at a time</exception> /// <exception cref="System.NotImplementedException"></exception> public Task <MediaFile> TakePhotoAsync(CameraMediaStorageOptions options) { options.VerifyOptions(); var ntcs = new TaskCompletionSource <MediaFile>(options); if (Interlocked.CompareExchange(ref _completionSource, ntcs, null) != null) { throw new InvalidOperationException("Only one operation can be active at a time"); } _cameraCapture.Show(); return(ntcs.Task); }