Xamarin.forms 如何添加拍照功能或 select 从相册中拍照

Xamarin.forms how I can add ability to take photo or select it from Gallery

我正在使用 Xamarin.Forms,如何添加拍照功能或 select 从相册中拍照。 我找了很多解决方案,但没有一个完成。

Xamarin Forms Media plugin 将执行此操作,并包含示例代码

takePhoto.Clicked += async (sender, args) =>
        {

          if (!CrossMedia.Current.IsCameraAvailable || !CrossMedia.Current.PhotosSupported)
          {
            DisplayAlert("No Camera", ":( No camera avaialble.", "OK");
            return;
          }

          var file = await CrossMedia.Current.TakePhotoAsync(new Media.Plugin.Abstractions.StoreCameraMediaOptions
            {

              Directory = "Sample",
              Name = "test.jpg"
            });

          if (file == null)
            return;

          DisplayAlert("File Location", file.Path, "OK");

          image.Source = ImageSource.FromStream(() =>
          {
            var stream = file.GetStream();
            file.Dispose();
            return stream;
          }); 
        };
        var profile = new Image { };
        profile.Source = "profile.png";
        profile.HorizontalOptions = LayoutOptions.StartAndExpand;
        profile.VerticalOptions = LayoutOptions.StartAndExpand;

        var profiletap = new TapGestureRecognizer();

        profiletap.Tapped += async (s, e) =>
        {
           var file = await CrossMedia.Current.PickPhotoAsync();
            if (file == null)
                return;
              await DisplayAlert("File Location", file.Path, "OK");

            im = ImageSource.FromStream(() =>
            {
               var stream = file.GetStream();
                //file.Dispose();
                return stream;

            });

            profile.Source = im;


    //   await Navigation.PushModalAsync(new PhotoPage(im));
        };

        profile.GestureRecognizers.Add(profiletap);

现在可以使用 Xamarin Essentials MediaPicker 轻松实现。

这是 link 的文档和 Android、iOS 和 UWP..

的示例代码

https://docs.microsoft.com/en-us/xamarin/essentials/media-picker?tabs=android