C# Xamarin媒体插件在拍摄第二张照片时崩溃
我正在为Xamarin使用Plugin.Media(jamesmontemagno/MediaPlugin)插件,我在接受图片时遇到了问题。当我拍摄第二张照片(第一张照片很好)并点击接受图像时,整个应用程序崩溃,没有关于错误的输出。我已尝试捕获错误,但找不到错误发生的位置。我建议从Android清单中删除min SDK,但崩溃仍然发生 我曾尝试在VisualStudio中查看输出,但它总是不同的。我假设代码在获取图像并返回数据时起作用,很明显,它只在尝试接受第二个图像时发生C# Xamarin媒体插件在拍摄第二张照片时崩溃,c#,xamarin,plugins,C#,Xamarin,Plugins,我正在为Xamarin使用Plugin.Media(jamesmontemagno/MediaPlugin)插件,我在接受图片时遇到了问题。当我拍摄第二张照片(第一张照片很好)并点击接受图像时,整个应用程序崩溃,没有关于错误的输出。我已尝试捕获错误,但找不到错误发生的位置。我建议从Android清单中删除min SDK,但崩溃仍然发生 我曾尝试在VisualStudio中查看输出,但它总是不同的。我假设代码在获取图像并返回数据时起作用,很明显,它只在尝试接受第二个图像时发生 private st
private string GetTimestamp(DateTime value)
{
string timestamp = value.ToString("yyyyMMddHHmmssfff");
string filename = timestamp + ".jpg";
return filename;
}
public Command CaptureImage => new Command(TakePicture);
private async void TakePicture()
{
await CrossMedia.Current.Initialize();
if (!CrossMedia.Current.IsCameraAvailable || !CrossMedia.Current.IsTakePhotoSupported)
{
//Some message
return;
}
var file = await CrossMedia.Current.TakePhotoAsync(new Plugin.Media.Abstractions.StoreCameraMediaOptions
{
Directory = "FoodSnap",
Name = GetTimestamp(DateTime.Now) //Gets a unique file name,
PhotoSize = Plugin.Media.Abstractions.PhotoSize.Custom,
CustomPhotoSize = 50
});
if (file == null)
return;
FilePath = file.Path;
}
我完全不明白为什么会发生这种情况。当用于拍摄图像的页面中的数据发生更改时,我也无法刷新ViewModel。我不禁怀疑这是否与此有关。我通过测试每一行代码解决了这个问题。一旦我删除
PhotoSize=Plugin.Media.Abstractions.PhotoSize.Custom
我就可以根据需要拍摄任意多的照片。我确实在插件中使用了Github信息
我想知道我做错了什么导致了这个错误。我认为我误解了Github上的教程。对此不确定,但您是否尝试过将扩展名添加到文件名中?(比如+“.jpg”)即使它似乎与ViewModel有关,也没有太多其他的东西可以在MediaPlugin中检查。有一个崩溃日志将有助于了解什么是错误的!我有一个添加文件扩展名的方法。如前所述,它将处理第一个图像,但不处理第二个图像及其后的图像。我想它抓住了第一个图像并崩溃了……我又试了两次,这是崩溃前的最后一次输出:07-12 22:35:05.395 E/mono rt(4442):ed1c3000-ed1c4000--p 00000000:00[anon:bionic TLS guard page]07-12 22:36:07.929 E/mono rt(4687):f0478000-f047c000 rw-p 00000000:01 12615/dev/ashmem/dalvik thread local mark stack(已删除)这可能是模拟器的一个问题,因为我刚刚验证它在我的像素上工作。