当我尝试使用await CrossMedia.Current.TakePhotAsync()
打开相机时,我得到以下异常。它不会在应用程序中打开任何相机。
商店
上的字段溢出InterpretedSystem.Runtime.CompilerServices.IAsyncStateMachineVT.<>7__wrap2
我的代码如下,
public UserProfilePage()
{
InitializeComponent();
CameraButton.Clicked += CameraButton_Clicked;
BindingContext = new UserProfileViewModel(this.Navigation);
}
private async void CameraButton_Clicked(object sender, EventArgs e)
{
if (CrossMedia.Current.IsCameraAvailable && CrossMedia.Current.IsTakePhotoSupported)
{
// Supply media options for saving our photo after it's taken.
var mediaOptions = new Plugin.Media.Abstractions.StoreCameraMediaOptions
{
Directory = "Receipts",
Name = $"{DateTime.UtcNow}.jpg"
};
// Take a photo of the business receipt.
try
{
var file = await CrossMedia.Current.TakePhotoAsync(mediaOptions);
}
catch (Exception exception)
{
Console.WriteLine(exception);
throw;
}
}
}
Xaml页面如下,
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Image x:Name="PhotoImage" />
<Button x:Name="CameraButton" Text="Take Photo" Grid.Row="1" />
</Grid>
如何打开相机并在xamarin中拍照。以下是混乱,
Xam.Plugin.Media = v3.1.2
Xamarin.Forms = v2.5.0.121934
VS2017
答案 0 :(得分:1)
当您尝试在 Xamarin Live Player 中运行音频,相机类功能时,会发生此错误。
插入实际的物理设备进行调试或释放将解决问题。
答案 1 :(得分:0)
我认为原因可能在于照片的目标文件名:
Name = $"{DateTime.UtcNow}.jpg"
日期包含文件路径中无效且导致异常的字符。
您可以使用适合文件名的替代格式:
Name = $"{DateTime.UtcNow.ToString("yyyy-dd-M--HH-mm-ss")}.jpg"