Как фотографировать непрерывно с помощью 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-й раз, я нажал "Отмена" в левом нижнем углу, чтобы остановить цикл
Спасибо!