我是Xamarin的新手,我正在设置Xamarin Forms
应用,并在创建意图并为其启动活动后触发设备的相机。
Xamarin的配方看起来很像,但我使用Forms.Context
作为Activity对象(为了将所有挂钩放在我的内容页面中,而不是将所有内容放在MainActivity.cs
中,如同在Xamarin的食谱中。)
它有效,相机打开。
Intent intent = new Intent(MediaStore.ActionImageCapture);
_file = new File(_dir, String.Format("myPhoto_{0}.jpg", Guid.NewGuid()));
intent.PutExtra(MediaStore.ExtraOutput, Uri.FromFile(_file));
Forms.Context.StartActivity(intent, Bundle.Empty);
事情是,我想要将照片刚刚放入ImageView
的配方功能相同。
recipe's code在MainActivity.cs
内生成用户界面(以及其他所有内容)。我想在XAML
文件中单独声明视图。
据我了解,我需要能够将axml
安卓资源文件嵌入到xaml
中,因为MainActivity
中的代码已经安装了Android,并且Android可以引用视图/控件仅由其资源ID(在view/ui container
文件夹下创建axml
作为Resources/layout
文件后自动生成。
如何完成最后一步以使“拍照”样本正常工作 - 在MainActivity
之外编码?
截图:
以下是Xamarin配方如何将图片放入图像查看器中。
答案 0 :(得分:1)
如果您正在使用Xamarin Forms并希望拍摄照片然后使用Image
进行显示 - 我建议您使用https://github.com/jamesmontemagno/MediaPlugin允许用户拍照(或选择一张照片)从电话)。结果可以设置为ImageSource
的{{1}}。
关于原始问题,您是否可以将本机android元素嵌入到xamarin表单中 - 您可以查看https://developer.xamarin.com/guides/xamarin-forms/user-interface/layouts/add-platform-controls/
答案 1 :(得分:1)
我认为解决这个问题的正确方法是使用DependencyService来访问Android原生功能,具体来说就是调用本机拍照并保存图片的方法。如果您只想拍照并使用Image显示,可以使用DependencyService
实现此平台特定功能并在xaml中设计布局,无需在XAML中嵌入axml。
如果要在Xaml中嵌入相机预览,建议的方法是使用Custom Renderers使用目标平台的本机控件渲染界面。这意味着,您不需要在Android项目中创建axml来显示摄像头预览,您可以在PCL中创建自定义渲染器(控件/视图),并在Android项目中实现此控件。官方doc和demo指导我们实施视图以显示相机预览。