我正在为Xamarin Studio编写媒体插件的代码,显然我在尝试构建应用程序时遇到以下错误:
“在当前背景下,'CrossMedia'这个名称并不存在”
我一直试图找到解决问题的方法。下面是代码。
using System;
using Relate.Model;
using Xamarin.Forms;
using System.IO;
namespace Relate.Views
{
public partial class EditMemberPage : ContentPage
{
public EditMemberPage()
{
InitializeComponent();
}
async void TakeaPhoto_OnClicked(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.
var file = await CrossMedia.Current.TakePhotoAsync(mediaOptions);
}
if (CrossMedia.Current.IsCameraAvailable && CrossMedia.Current.IsTakeVideoSupported)
{
// Supply media options for saving our video after it's taken.
var mediaOptions = new Plugin.Media.Abstractions.StoreCameraMediaOptions
{
Directory = "Videos",
Name = $"{DateTime.UtcNow}.mp4"
};
// Record a video
var file = await CrossMedia.Current.TakeVideoAsync(mediaOptions);
}
// Select a photo.
if (CrossMedia.Current.IsPickPhotoSupported)
{
var photo = await CrossMedia.Current.PickPhotoAsync();
}
// Select a video.
if (CrossMedia.Current.IsPickVideoSupported)
{
var video = await CrossMedia.Current.PickVideoAsync();
}
}
async void SaveButton_OnClicked(object sender, EventArgs e)
{
var famMemberItem = (FamMember)BindingContext;
await App.Database.SaveFamMemberAsync(famMemberItem);
await Navigation.PopAsync();
}
}
}
将using Plugin.Media;
添加到文件的开头
尝试初始化插件,然后再使用它,如文档中所述。
await CrossMedia.Current.Initialize();
我知道这是一个老问题,但我在VS2017中使用NuGet Package Manager CLI安装软件包时遇到了同样的问题:
Install-Package Xam.Plugin.Media
似乎安装不是问题,但我错了。我没有意识到的是它只为Android项目而不是所有项目安装它。要做到这一点,你必须右键单击顶部的解决方案,然后选择Manage NuGet Packages for Solution
。单击Xam.Plugin.Media
软件包,在相邻的窗格中,它将告诉您是否已为解决方案中的所有项目安装了复选框。如果您有任何空白,则可以选中复选框并点击Install
以完成设置。我纠正了这个问题后,这是我的: