【问题标题】:Exception throw out when trying to open the camera using Xam.Plugin.Media尝试使用 Xam.Plugin.Media 打开相机时抛出异常
【发布时间】:2018-06-22 15:04:20
【问题描述】:

当我尝试使用 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

【问题讨论】:

  • 您找到解决方案了吗?我在使用 Xamarin 广告身份验证时遇到了类似的问题:商店 InterpretedSystem.Runtime.CompilerServices.IAsyncStateMachineVT.extraQueryParameters 上的字段溢出。
  • 您是否在尝试使用 Xamarin Live 播放器?还是实际的物理设备?
  • 正在尝试使用 Xamarin Live Player。切换到物理设备并开始工作。

标签: c# xamarin xamarin.forms xamarin.android


【解决方案1】:

当您尝试在 Xamarin Live Player 中运行音频、相机类功能时会发生此错误。

插入实际的物理设备进行调试或发布将解决问题。

【讨论】:

    【解决方案2】:

    我认为原因可能在于照片的目标文件名:

    Name = $"{DateTime.UtcNow}.jpg"
    

    日期包含在文件路径中无效并导致异常的字符。

    您可以使用适合文件名的替代格式:

    Name = $"{DateTime.UtcNow.ToString("yyyy-dd-M--HH-mm-ss")}.jpg"
    

    【讨论】:

    • 我已根据您的建议进行了更改。但没有运气。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 2023-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多