博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#使用Xamarin开发可移植移动应用终章(11.获取设备信息与常用组件,开源一个可开发模版.)...
阅读量:5763 次
发布时间:2019-06-18

本文共 3507 字,大约阅读时间需要 11 分钟。

原文:

前言

系列目录

源码地址:

可以Star一下,随意 - -

说点什么..

本系列,终于要终章了..感觉有点小失落

把我最终的成果模版开源出来吧地址如下:

效果如图:

基本算是涵盖了常见APP大部分的功能吧..

WebView,二维码扫描,开灯,地图,定位,终端设备的信息

 

正文

Xamarin在社区中其实有很多比较方便的组件,方便大家直接使用.

而且Xamarin团队将这些社区组件整理成了一个列表,方便我们查询.

列表的Github地址如下:

 

今天我们主要是以设备信息组件为例子介绍一下如何使用社区组件

首先我们需要查询到自己需要使用的组件.

因为是英文,而且单词比较简单,所以我直接用谷歌翻译了,表格如下:

名称 描述 的NuGet 文档和来源 创造者
录音机 在设备的麦克风输入上录制音频。
电池状态 收集电池电量,充电状态和类型。
扫码机 使用ZXing.NET.Mobile扫描和创建条形码。
蓝牙LE 扫描并连接到蓝牙设备。
日历 查询和修改设备日历
罗盘 访问设备指南针标题。
配置 为每个将运行的环境定义应用程序的设置。
连接 获取网络连接信息,如类型和连接是否可用。
加密 PCL Crypto提供了一套一致的便携式加密API。
设备信息 有关设备的属性,如OS,Model和Id。
设备运动 提供对加速计,陀螺仪,磁力计和指南针的访问。
嵌入式资源 解压嵌入式资源跨平台。
外部地图 从经纬度或地址启动外部地图。
文件存储/文件系统 PCL存储提供跨平台的存储API。
文件选择器 选择并保存文件。
文件上传 使用多部分请求上传文件。
指纹 在iOS,Android和Windows上访问指纹传感器。
FFImageLoading 图像加载与缓存,占位符,转换和更多
地理围栏 当用户进入/退出时监控区域。
Geolocator 轻松检测设备的GPS位置。
HTTP传输 在后台下载或上传文件。提供速度指标和估计
iBeacon&Estimote 范围和监视蓝牙信标。
应用内结算 制作,查询并获取应用内购买和订阅。
访问LED
本地通知 显示本地通知
本地通知 管理本地通知
管理睡眠 管理自动睡眠/自动锁定。
媒体 拍照或录像。
媒体经理 播放音频。
消息 拨打电话,发送短信,并发送电子邮件
微软乐队 从共享代码连接并与Microsoft Band进行通信!
Mono.Data.Sqlite 将Mono.Data.Sqlite添加到任何Xamarin或Windows .NET应用程序。
权限 轻松检查并请求运行时权限。
持久的键值存储 Akavache是​​一个异步持久(即写入磁盘)键值存储。
便携式剃刀 用于移动的ASP.NET MVC API的轻量级实现。
推送通知 跨平台iOS和Android推送通知。
安全存储 为关键值对数据提供安全存储
设置 简单和一致的跨平台设置API。
分享 轻松共享文本,链接或打开浏览器。
传感器 设备传感器 - 加速度计,环境光,气压计,指南针,设备方位,陀螺仪,磁力计,计步器和接近
套接字 TCP和UDP侦听器和客户端+ UDP多播。
语音识别 语音到文本。
简单的音频播放器 从共享库播放多个MP3或波形文件。
文字转语音 从共享代码中回复文本。
烤面包 显示吐司/弹出式通知的简单方法。
用户对话框 消息框样式对话框。
版本跟踪 跟踪用户以前安装的应用程序的版本。
颤动 振动任何设备。
设备方向 插件用于屏幕方向(更改和锁定)

 

我们今天要使用设备信息的组件.,所以直接找到设备信息,然后进入nuget界面,引用.

注意,这里要强调的一点是,当你使用这些组件的时候,一定需要PCL项目加上客户端项目,都要引用

也就是如图:

 

红框中的三个项目,都需要引用同样的nuget库.因为PCL中是接口,各个平台客户端才是具体实现.

需要仔细看文档说明,有些插件是需要初始化的,所以需要你在客户端项目中初始化,比如二维码插件( ZXing.Net.Mobile)

剩下的代码就很简单了,我们先创建一个Page,并添加listView控件如下:

 

 然后直接F7,进入后台代码,编写代码如下:

public partial class SheBeiInfoPage : ContentPage    {        List
date = new List
(); public SheBeiInfoPage() { InitializeComponent(); AddPhoneInfo(); ItemsListView.ItemsSource = date; } public void AddPhoneInfo() { string model = CrossDeviceInfo.Current.Model; string Version = CrossDeviceInfo.Current.Version; string VersionNumber = CrossDeviceInfo.Current.VersionNumber.ToString(); string Platform = CrossDeviceInfo.Current.Platform.ToString(); date.Add(new { TextName = model, Name = "设备名称" }); date.Add(new { TextName = Version, Name = "设备版本" }); date.Add(new { TextName = VersionNumber, Name = "设备版本号" }); date.Add(new { TextName = Platform, Name = "设备平台" }); } }

 

 因为封装的已经很完善了,直接通过静态类CrossDeviceInfo,就可以获取相关的设备信息.

tip:最新的版本新增了判断是否为模拟器的功能,但是nuget好像没加入,需要使用的话可以从github自行编译.

 

关于绑定Jar类库

本来打算这篇文章讲绑定类库,但是看了一下,网上已经很多这类的文章了,本来操作也比较简单...我就不过多的哗众取宠了.

唯一要解释的一点,

就是关于绑定了类库之后,会类名,变量名报错的问题.

很多文章都是一笔带过..让大家修改Metadate.xml更改绑定规则就完事了..

不过我觉得 授人以鱼不如授人以渔.

出现这个错误的主要原因是:

GAPI这个工具,会将java代码自动化解析成C#代码,但是,完美的解析,是不可能的.

所以会出现少量的错误信息,需要我们配置这个xml文件来特殊配置这些错误的节点.

我们应该用的最多的就是attr这个节点,如下:

DefaultActivated

 

我们可以使用它来更改任何现有属性的值,或将新属性插入API文件中的任何元素。

<attr>元素有两个属性path和name,使用path来标识要更改的元素,并使用name来标识元素上的属性名称。

当然,各位如果想更深入的了解这个可以把java变成C#的神奇神器..可以到如下地址查看

 

写在最后

结束了..Xamarin说难,其实也不难,说简单,其实你需要了解的东西还是挺多的.

希望开源出来的项目模版能帮到大家..

最后,真诚的感谢大家对本系列的支持.

 

我的博客即将同步至腾讯云+社区,邀请大家一同入驻。

转载地址:http://ihgkx.baihongyu.com/

你可能感兴趣的文章
【技术分享】开Oracle调优鹰眼,深入理解AWR性能报告
查看>>
linux环境下firfox flash插件问题~
查看>>
【嵌入式】——内存对齐(转)
查看>>
winform下Textbox的AutoComplete功能
查看>>
Swipebox – 用于触屏设备的精美 jQuery Lightbox 插件
查看>>
jquery的动画
查看>>
淘宝核心系统团队博客 | linux异步IO编程实例分析
查看>>
从键盘输入一个日期,格式为yyyy-M-d 要求计算该日期与1949年10月1日距离多少天...
查看>>
Oracle:RAC的grid用户群集监听 ? oracle用户的节点监听
查看>>
字符串:KMP Eentend-Kmp 自动机 trie图 trie树 后缀树 后缀数组 - 星星的日志 - 网易博客...
查看>>
Metasploitable 2 备译
查看>>
分享:const、static关键字
查看>>
ASP.NET MVC+EF框架+EasyUI实现权限管理系列(9)-TT模板的学习
查看>>
[转]maven环境快速搭建
查看>>
图像对象paip.Image对象出现“对象当前正在其他地方使用或者GDI+中发生一般性错误的解决...
查看>>
温度转换程序流程图
查看>>
android 动画
查看>>
函数式编程学习之路(11)
查看>>
FlipReverseRotate Lab Report
查看>>
删除WSUS SERVER,也不是那么容易的
查看>>