文章目录
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);
...
}