現在、写真を撮ることができる共有ライブラリを使用してクロスプラットフォーム アプリを開発しています。このアプリを実行するために XLabs.Forms V2.0.5782 パッケージを使用しています。このシンプルなアプリの開発に成功しましたが、一度に1 枚の写真しか撮れません 。
コードをいじって、なんとか複数の写真を撮ることができましたが、問題は、[写真を使用] をクリックするとカメラが閉じられ、次の写真を撮るために再度開いてしまうことです。私が望んでいたのは、「写真を使用」をクリックすると、カメラが閉じて再び開くのではなく、その場で再び開くことです。
複数の写真を撮るために私が行ったコードは次のとおりですが、それが正しい方法ではないことはわかっています。ボタンクリックイベントにあります。
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 for Mac バージョン プレビュー 9 (7.0 ビルド 2943) を使用しています
iOS 10.2 を実行している iPhone でのみテストしました。Android デバイスではまだテストしていません
これは、私のアプリの例を示す gif です。これにより、私が何を望んでいるのか、何が起こっているのかをよりよく理解できるようになると思います
この例では 3 枚の写真が撮影されていることに注意してください。カメラは 4 回開きます。それぞれの写真を撮った後、右下の [写真を使用] をクリックし、4 回目にカメラが開いたときに、左下の [キャンセル] をクリックしてループを停止しました。
ありがとうございました!