强制使用xam.plugin.media拍摄和存储用户照片的要求



我有一个PCL类型应用程序,我正在使用Xam.Plugin.Media插件。我需要它以确保用户在继续之前从相机中提交照片。

为此,我从按钮点击事件中显示了相机页面,我想确保如果用户取消该应用程序再次启动相机,这将重复直到存储照片。

当前我的应用程序属于MainApplication文件的onActivityResumed方法,当用户取消相机

附加了我的代码的照片。

 private async void TakePicture()
        {
            await CrossMedia.Current.Initialize();
            if (!CrossMedia.Current.IsCameraAvailable || !CrossMedia.Current.IsTakePhotoSupported)
            {
                await App.Current.MainPage.DisplayAlert("No Camera", ":( No camera available.", "Aceptar");
            }

            file = await CrossMedia.Current.TakePhotoAsync(new Plugin.Media.Abstractions.StoreCameraMediaOptions
            {
                Directory = "Sample",
                Name = "test.jpg",
                PhotoSize = PhotoSize.Small,
            });
            //IsRunning = true;

            if (file != null)
            {
                ImageSource = ImageSource.FromStream(() =>
                {
                    var stream = file.GetStream();
                    return stream;
                });
            }
            IsRunning = false;
        }

除了迫使用户进入任何事物的事实外,问题仍然有一些优点。

这是我要考虑的方法,它涉及递归。

    private async void TakePicture()
    {
        await CrossMedia.Current.Initialize();
        if (!CrossMedia.Current.IsCameraAvailable || !CrossMedia.Current.IsTakePhotoSupported)
        {
            await App.Current.MainPage.DisplayAlert("No Camera", ":( No camera available.", "Aceptar");
        }
        file = await CrossMedia.Current.TakePhotoAsync(new Plugin.Media.Abstractions.StoreCameraMediaOptions
        {
            Directory = "Sample",
            Name = "test.jpg",
            PhotoSize = PhotoSize.Small,
        });
        //IsRunning = true;
        if (file != null)
        {
            ImageSource = ImageSource.FromStream(() =>
            {
                var stream = file.GetStream();
                return stream;
            });
        }
        else
        {
            // Recursion - I believe that this would continue until the file is not null, then it would carry on.
            TakePicture();
        }
        IsRunning = false;
    }

我不能说我经常使用递归,但是我认为它可能在这里有用。

最新更新