我刚刚使用了NUGET并安装了Xam.Plugin.Media,以便我可以使用我的移动应用拍摄照片。
我根据xamarin组件网站中的示例代码在按钮的click事件中编写了以下代码:
private async void btnTake1_Clicked(object sender, EventArgs e)
{
if (!CrossMedia.Current.IsCameraAvailable || !CrossMedia.Current.IsTakePhotoSupported)
{
await DisplayAlert("No Camera", ":( No camera avaialble.", "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");
imgPhoto1.Source = ImageSource.FromStream(() =>
{
var stream = file.GetStream();
file.Dispose();
return stream;
});
}
一切顺利,解决方案正在成功构建,我现在只运行UWP。但当我点击按钮时,它在
中的某个位置处断开if (global::System.Diagnostics.Debugger.IsAttached) global::System.Diagnostics.Debugger.Break();
有人可以帮我这个吗? 提前致谢。 Sarin Gopalan
答案 0 :(得分:1)
根据您的评论,以下内容适用于Xamarin.Forms和UWP
在您的表单项目中,无论您想要显示库选择器(我们通过单击按钮进行操作),您都可以使用如下所示的内容:
private async void ChooseExistingClicked(object sender, EventArgs e)
{
bool hasPermission = false;
try
{
await CrossMedia.Current.Initialize();
hasPermission = CrossMedia.Current.IsPickPhotoSupported;
}
catch (Exception genEx)
{
var Error = genEx;
}
if (!hasPermission)
{
await DisplayAlert("Photos Not Supported", ":( Permission not granted to photos.", "OK");
return;
}
var file = await CrossMedia.Current.PickPhotoAsync();
if (file == null)
return;
image = file;
imagePanel.Source = ImageSource.FromStream(() =>
{
var stream = file.GetStream();
return stream;
});
}
您还需要正确设置权限。因此,在您的UWP项目中,您将看到一个名为' Package.appxmanifext'双击此选项,然后选择“功能”'并确保'图片库'在列表中打勾。
那就是它,应该就是你需要做的一切。
编辑:根据以下要求,您需要为本地平台设置访问照片库的权限。
在您的iOS项目中,您需要打开“信息列表”的代码。将显示XML表的文件。你需要添加:
<key>NSCameraUsageDescription</key>
<string></string>
<key>NSPhotoLibraryUsageDescription</key>
<string>This is used to upload an image of concern along with your report</string>
<key>NSMicrophoneUsageDescription</key>
<string></string>
标签之间的任何地方。
对于您的Android项目,您需要右键单击该项目并选择“&#39;属性”。这将打开一个新窗口,在左侧,您需要选择Android Manifest&#39;然后确保&#39; CAMERA&#39;,&#39; READ_EXTERNAL_STORAGE&#39;和&#39; WRITE_EXTERNAL_STORAGE&#39;我相信这些是画廊和相机访问的主要因素。
答案 1 :(得分:0)