Как фотографировать непрерывно с помощью XLabs

В настоящее время я разрабатываю кроссплатформенное приложение с использованием Shared Library, которое может делать фотографии Я использую пакет XLabs.Forms V2.0.5782, чтобы сделать это приложение. Я успешно разработал это простое приложение, но оно позволяет мне делать только одну фотографию за раз.

Я возился с кодами, и мне удалось сделать несколько снимков, но проблема в том, что камера будет закрыта, когда я нажму "Использовать фото", и снова открою, чтобы сделать следующую фотографию. Что я хотел, так это то, что когда я нажал "Использовать фото", камера снова откроется на месте, а не закроется и снова откроется.

Вот код, который я сделал, чтобы сделать несколько снимков, но я знаю, что это неправильный способ сделать это. Именно в событии нажата кнопка.

IDevice device = Resolver.Resolve<IDevice>();
IMediaPicker media = device.MediaPicker;

//More codes here

async void TakePicture(object sender, System.EventArgs e)
{
    var options = new CameraMediaStorageOptions()
    {
        PercentQuality = 50,
        DefaultCamera = CameraDevice.Rear,
        MaxPixelDimension = 250
    };

    var cancel = false;

    while (!cancel)
    {
        await media.TakePhotoAsync(options).ContinueWith(t =>
        {
            if (t.IsFaulted) //If there's an error when taking photos
            {
                DisplayAlert("Error", "An error occurred when taking photo.\nPlease try again.", "OK");
            }
            else if (t.IsCanceled) //When the user click 'Cancel'
            {
                cancel = true;
            }
            else //When the user click 'Use Photo' - Here's the part where the camera will close and reopen until user click 'Cancel'
            {
                var img = ImageSource.FromStream(() => t.Result.Source);
                picList.Add(img);
            }
        });
    }

    if (picList.Count > 0)
    {
        scrollParent.IsVisible = true;
        imageScroll.Children.Clear();

        foreach (var pl in picList)
        {
            var image = new Image()
            {
                Source = pl,
                HeightRequest = 150,
                HorizontalOptions = LayoutOptions.Start,
                Aspect = Aspect.AspectFit,
                Margin = new Thickness()
                {
                    Right = 10
                }
            };

            imageScroll.Children.Add(image);
        }
    }
}

Могу ли я сделать несколько снимков с помощью XLabs.Forms и есть ли правильный способ? Я искал везде, но ничего не нашел по этому поводу. Любая помощь будет высоко ценится. Спасибо!

Замечания:

  • Я использую Visual Studio для Mac Version Preview 9 (7.0 build 2943)

  • Я тестировал только на iPhone под управлением iOS 10.2. Еще не тестировали на устройстве Android

Вот рисунок, показывающий пример моего приложения. Я думаю, это поможет вам лучше понять, что я хочу и что происходит

Обратите внимание, что в этом примере сделаны 3 фотографии. Камера открывается четыре раза. Сделав каждую фотографию, я щелкнул "Использовать фото" в правом нижнем углу, а когда камера открылась в 4-й раз, я нажал "Отмена" в левом нижнем углу, чтобы остановить цикл

Спасибо!

0 ответов

Другие вопросы по тегам