Xamarin.Forms 之我的花园 - 2.从照片库选择图片和拍照功能

本文介绍了如何在Xamarin.Forms应用中利用MediaPlugin实现从照片库选择图片和拍照功能,详细讲解了iOS和Android的权限设置,包括在Info.plist和AndroidManifest.xml中的配置,以及MainActivity.cs的修改。通过提供的代码示例,展示了如何在SavePlantPage.cs中实现这一功能。
摘要由CSDN通过智能技术生成

1.介绍

本文基于上一篇文章《Xamarin.Forms 之我的花园-1.增删查改》的基础上实现了照片选择和拍照两个功能,这样我们就可以在添加新植物时给花花草草拍摄真实的照片。这两个功能主要通过MediaPlugin来实现,其中还会涉及到一些iOS和安卓系统下的权限获取知识。

2.预览

功能 iOS模拟器 Android模拟器
照片库
拍照
图片选择

3.调试方式对比

总结了一下VS Mac目前调试Xamarin.Forms app 尝试过以下3种方式,遇到各种问题,最后还是只能在模拟器运行了:

系统/调试方式 真机调试 Xamarin Live Player 模拟器
iOS 缺点是要99美元的开发者账号 之前安装了一个版本,编译运行时总有各种错误,而且无法更新了,官网显示还不支持了iOS?? 无法调用摄像头
Android 这里不得不吐个嘈,之前唯一用于真机的小米手机,由于更新的MIUI,发现更新后没有安装SIM卡无法通过USB进行安装,所以无奈只能在模拟器上进行了。看来以后要买张电话卡或者重新刷机才能测试了。估计除了小米手机以外,其他安卓机还好吧? 有很多限制 模拟摄像头

4.MediaPlugin

实现拍照功能我们主要用到MediaPlugin, 但同时MediaPlugin会用到PermissionsPlugin做权限检查和设置, 而Android系统下PermissionsPlugin会用到CurrentActivityPlugin来获取Current Activity,因此这三个库需要有所了解。

在MyGarden.Tutorial1(Xamarin.Froms)项目中通过NuGet搜索’Xam.Plugin.Media’来进行安装。

5.权限设置

5.1 iOS权限设置

iOS只要在MyGarden.Tutorial1.iOS项目中的Info.plist文件的Source页签中添加以下信息(String 右边的描述可以根据需要进行修改):
这里写图片描述

5.2 Android权限设置

安卓权限设置相对繁琐,需要在MyGarden.Tutorial1.Android项目中修改以下几个文件:

1.修改MainActivity.cs

在MainActivity.cs文件中添加Current Activity 插件的初始化设置和Permissions Plugin 权限请求设置。

[Activity(Label = "MyGarden", Icon = "@mipmap/icon", Theme = "@style/MainTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
    public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
    {
   
        protected override void OnCreate(Bundle bundle)
        {
   
            ...
            // 初始化 Current Activity Plugin
            CrossCurrentActivity.Current.Init(this, bundle);
            ...
        }

        public override void OnRequestPermissionsResult(int requestCode, string[] permissions, Android.Content.PM.Permission[] grantResults)
        {
   
	        //用于Android 6.0 之后的版本,弹出用户请求对话框,获取相应权限
            PermissionsImplementation.Current.OnRequestPermissionsResult(requestCode, permissions, grantResults);
           ...
        }
    }

2.File Provider 配置

1)Properties文件夹的AndroidManifest.xml

把下面内容:

	<application android:label="MyGarden.Tutorial1.Android"></application>

替换为以下内容,配置

	<application android:label="MyGarden" 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值