Xam.Plugin.Media异常错误

时间:2016-03-26 06:30:42

标签: xamarin plugins xamarin.forms

我有一个用Xamarin.Forms构建的跨平台应用程序,我需要在所有平台上访问相机,所以我下载并设置了Xam.Plugin.Media,这是每个设备本机相机应用程序的跨平台实现。但是当我将它实现到我的项目并运行它时,我得到以下异常:

Exception thrown: 'Windows.UI.Xaml.Markup.XamlParseException' in Plugin.Media.DLL
 Exception thrown: 'Windows.UI.Xaml.Markup.XamlParseException' in mscorlib.ni.dll
 Exception: Windows.UI.Xaml.Markup.XamlParseException: XAML parsing failed.
 at Windows.UI.Xaml.Application.LoadComponent(Object component, Uri resourceLocator, ComponentResourceLocation componentResourceLocation)
 at DMX.Helper.CameraCaptureUI.InitializeComponent()
 at DMX.Helper.CameraCaptureUI..ctor()
 at Plugin.Media.MediaImplementation.d__16.MoveNext()
 --- End of stack trace from previous location where exception was thrown ---
 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
 at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
 at App.UploadImagePage.d__6.MoveNext()

这是我的Xaml这个页面:

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="App.UploadImagePage"
             BackgroundColor="Blue"
             BackgroundImage="Images/background.png"
             Title="Upload Image Page">
  <AbsoluteLayout VerticalOptions="FillAndExpand"
                HorizontalOptions="FillAndExpand">
    <StackLayout AbsoluteLayout.LayoutBounds="0, 0, 1, .4"
                AbsoluteLayout.LayoutFlags="All"

                   VerticalOptions="Center" >
      <Grid BackgroundColor="#005dab">
        <Label Text="Upload Image"
             TextColor="White"
             FontSize="Medium"
             VerticalOptions="Center"
             HorizontalOptions="Center"
             BackgroundColor="#005dab"
          />
        <Button Image="Images/logout.png" Clicked="LogoutButton_OnClicked"
               HorizontalOptions="End"
                BorderColor="#005dab"/>
      </Grid>
      <Grid>
        <Grid.RowDefinitions>
          <RowDefinition Height="*"></RowDefinition>
          <RowDefinition Height="*"></RowDefinition>
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
          <ColumnDefinition Width="*"></ColumnDefinition>
          <ColumnDefinition Width="*"></ColumnDefinition>
        </Grid.ColumnDefinitions>

        <Button x:Name="CreditButton" Grid.Row="0" Grid.Column="0" Clicked="CreditButton_OnClicked"
                  Text="  Credit Applications  "
                  BackgroundColor="#005dab"
                  TextColor="White"
                  BorderColor="#005dab"
                HorizontalOptions="End"
            />
        <Button x:Name="SalesButton" Grid.Row="0" Grid.Column="1" Clicked="SalesButton_OnClicked"
               Text="  Sales Agreements  "
               BackgroundColor="White"
               TextColor="#005dab"
               BorderColor="White"
               HorizontalOptions="Start"
            />
      </Grid>
    </StackLayout>
    <Grid    AbsoluteLayout.LayoutBounds="0.5, 0.5, 1, .75"
                    AbsoluteLayout.LayoutFlags="All"
      >
      <StackLayout Padding="10"
                   Spacing="15"
                   VerticalOptions="Center" >
        <Image Source="Images/pdf_icon.png"/>
        <Label Text="Insert Your PDF"
               HorizontalOptions="Center"
               FontSize="Medium"
               FontAttributes="Bold"
               TextColor="#005dab"/>

      </StackLayout>
    </Grid>
    <Grid    AbsoluteLayout.LayoutBounds=".98, .95, .98, .05"
                      AbsoluteLayout.LayoutFlags="All"
      >
      <Grid>
        <Grid.RowDefinitions>
          <RowDefinition Height="*"></RowDefinition>
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
          <ColumnDefinition Width="*"></ColumnDefinition>
          <ColumnDefinition Width="*"></ColumnDefinition>
        </Grid.ColumnDefinitions>

        <Label Grid.Row="0" Grid.Column="0" Text="0 Images"
               HorizontalOptions="Start"
               FontSize="Medium"
               TextColor="Black"/>
        <Button Grid.Row="0" Grid.Column="1" Clicked="UploadButton_OnClicked"
               Text="  Upload Photo  "
               BackgroundColor="#005dab"
               TextColor="White"
               BorderColor="#005dab"
               HorizontalOptions="End"
            />
      </Grid>
    </Grid>
  </AbsoluteLayout>
</ContentPage>

这是背后的代码:

private async void camera()
{
    try
    {
        Image image = new Image();

        await CrossMedia.Current.Initialize();

        if (!CrossMedia.Current.IsCameraAvailable || !CrossMedia.Current.IsTakePhotoSupported)
        {
            DisplayAlert("No Camera", ":( No camera available.", "OK");
            return;
        }

        var file = await CrossMedia.Current.TakePhotoAsync(new Plugin.Media.Abstractions.StoreCameraMediaOptions
        {
            Directory = "Sample",
            Name = "test.jpg"
        });

        if (file == null)
            return;

        await DisplayAlert("File Location", file.Path, "OK");

        image.Source = ImageSource.FromStream(() =>
        {
            var stream = file.GetStream();
            file.Dispose();
            return stream;
        });

    }
    catch (Exception e)
    {
        Debug.WriteLine("Exception: " + e);
    }
}

0 个答案:

没有答案