(翻译)Xamarin.Essentials: 移动应用的跨平台 API
原文地址:https://blog.xamarin.com/xamarin-essentials-cross-platform-apis-mobile-apps/
当使用 Xamarin 开发 IOS 和 Android 应用的时候,开发人员通过 C# 可以访问每一个原生平台 API。这些绑定不仅使 C# 平台 API 暴露出来,也添加了强大的 C# 特性,例如 async/await,event,delegate 等。这对开发人员来说是一个巨大的优势,因为他们不需要离开 C# ,无论是写共享业务逻辑,用户界面或者访问原生特性。一个关键的特性是当使用 Xamarin 开发跨平台应用时,开发者从共享代码中经常寻找一种访问共享的原生特性,无需编写他们自己的抽象或者找一个社区创建的开源插件。
一个单一的 API 访问诸如地理定位、传感器、安全存储和更多功能的梦想现在对于用 Xamarin 与 Xamarin.Essentials 创建的任何应用程序来说成为了现实。
Xamarin.Essentials API
在可用的第一个预览版中,Xamarin.Essentials API 提供了从单一跨平台 API 库访问超过25个原生特性的功能,无论用户界面是如何创建的都可以从共享代码中访问。这意味着你可以在一个单一的 Xamarin.Android 应用或者目标为 IOS,Android 和 UWP 的 。Xamarin.Forms 应用中使用 Xamarin.Essentials API。即使它包括了这些特性,仍然充分优化了性能和应用大小最小的影响,因为这个库充分利用了连接器安全的优势。这意味着只有你使用的 API 和特性会包含在你的应用程序中,其余的将在你便宜你的应用程序时被删除。
这个初始跨平台 API 集的预览版本,可以通过 NuGet 安装到你的应用中:
- Accelerometer: 在三维空间中检索设备的加速度数据。
- App Information: 查找有关应用程序的信息。
- Battery: 容易的检测电池的电压,电量和状态。
- Clipboard: 快速并且容易的设置或读取剪贴板上的文本
- Compass: 监视罗盘的变化。
- Connectivity: 检查连接状态并检测更改。
- Data Transfer: 向其他应用程序发送文本和网站URI。
- Device Display Information: 获取设备的屏幕指标和方向。
- Device Information: 轻松的找出设备信息。
- Email: 轻松的发送电子邮件。
- File System Helpers: 轻松的保存文件到应用程序数据。
- Flashlight: 一个简单的方法来打开手电筒/关闭手电筒。
- Geocoding: 轻松的获取地理编码和反向地理编码。
- Geolocation: 检索设备的GPS位置。
- Gyroscope: 检索设备的三轴陀螺仪的旋转。
- Magnetometer: 检测设备相对于地球磁场的方向。
- Open Browser: 快速和方便地打开浏览器到一个特定的网站。
- Phone Dialer: 打开电话拨号器。
- Preferences: 快速且容易地添加持久的参数选择。
- Screen Lock: 保持设备屏幕唤醒。
- Secure Storage: 安全地存储数据。
- SMS: 轻松发送 SMS 短信。
- Text-to-Speech: 在设备上转换文本成声音
- Version Tracking: 跟踪应用程序版本和生成号码。
- Vibrate: 使设备振动。
这个初始 API 集是基于 Xamarin 开发人员的反馈,包括他们希望从跨平台 API 库中看到的。随着时间的推移,我们会继续添加更多特性。
入门
在新的或者已经存在的应用程序中开始使用 Xamarin.Essentials API 是很容易的,只需几个简单的步骤:
- 打开一个存在的项目或者通过 Visual Studio C# 下的空白应用模板创建一个新的项目(Android,iPhone&iPad 或者 跨平台)。
- 添加 Xamarin.Essentials NuGet 包到项目中:
1. Visual Studio:在解决方案面板中,在解决方案名字上右键并选择管理 NuGet。搜索 Xamarin.Essentials 并安装包到所有项目中,包括 iOS,Android,UWP 和 .NET Standard 库。
2. Visual Studio for Mac:在解决方案面板中,在解决方案名字上右键并选择 添加 -> 添加 NuGet 包.... 搜索 Xamarin.Essentials 并安装包到所有项目中,包括 iOS,Android,UWP 和 .NET Standard 库。 - 在任意 C# 类中添加 Xamarin.Essentials 的引用来引用 API。
using Xamarin.Essentials;
- Xamarin.Essentials 需要在 Android 项目上添加小的附加平台特定的设置来访问特定的特性:
在 Android 项目 MainLauncher 或者 Activity 启动 Xamarin.Essentials 必须在 OnCreate 方法中初始化:Xamarin.Essentials.Platform.Init(this, bundle);
在 Android Xamarin.Essentials 操作运行时权限必须接受任何 `OnRequestPermissionsResult`。添加下边代码到所有 Activity 类中:
public override void OnRequestPermissionsResult(int requestCode, string[] permissions, [GeneratedEnum] Android.Content.PM.Permission[] grantResults)
{
Xamarin.Essentials.Platform.OnRequestPermissionsResult(requestCode, permissions, grantResults); base.OnRequestPermissionsResult(requestCode, permissions, grantResults);
}
就是这样!现在你可以在你的应用中开始使用 Xamarin.Essentials API 了。每个API都有完整的文档,代码段可以复制到您的应用程序中。
更多细节请确认务必阅读我们的完整入门向导。
创建一个指南针
在 Microsoft Build 2018 我的一个会议中,我展示了如何结合 Xamarin.Forms 和 Xamarin.Essentials API 在 10分钟内构建一个跨平台指南针。它就像在应用中添加几张指南针图片和少量用户界面一样简单:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions> <Image HorizontalOptions="FillAndExpand"
VerticalOptions="FillAndExpand"
Source="compass.png"/> <Image HorizontalOptions="Center"
VerticalOptions="Center"
Source="arrow.png"
x:Name="ImageArrow"/> <Label Grid.Row="1"
x:Name="LabelInfo"
VerticalOptions="Center"
HorizontalOptions="Center" />
</Grid>
我可以在这个页面的后置代码中使用 Xamarin.Essentials 中的 Compass API 来注册一些事件,当指南针改变并且更新标签文本和图像旋转时只需要几行代码。
using Xamarin.Forms;
using Xamarin.Essentials; namespace MyCompass
{
public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent(); // Register for reading changes
Compass.ReadingChanged += Compass_ReadingChanged;
} void Compass_ReadingChanged(CompassChangedEventArgs e)
{
LabelInfo.Text = $"Heading: {e.Reading.HeadingMagneticNorth}";
ImageArrow.Rotation = e.Reading.HeadingMagneticNorth;
} protected override void OnAppearing()
{
base.OnAppearing();
Compass.Start(SensorSpeed.Ui);
} protected override void OnDisappearing()
{
base.OnDisappearing();
Compass.Stop();
}
}
}
就像这样,一个指南针应用创建完了!你可以在我的 GitHub 上找到完整的源代码和图片。
下一步是什么
Xamarin.Essentials 已经经过了严格的测试,但是我们请求你在这个尖端的预览周期内提供反馈。请在你的应用中试用这个库,你在运行中遇到的任何问题请报告到 Xamarin.Essentials 的 GitHub 仓库。
我们将此库作为 Xamarin 平台的核心基础部分,并知道它是所有开发人员和应用程序的基础构建模块。因此,我们将会整合 Xamarin.Essentials NuGet 包到 Visual Studio 和 Visual Studio for Mac 内置的每一个 iOS,Android 和 Xamarin.Forms 模板中,所以开发人员可以从项目开始时就访问这些 API。
在线观看
你可以观看到来自 Microsoft Build 2018 我用 Visual Studio 构建移动应用和 Xamarin 会议关于 Xamarin,Xamarin.Forms 和 Xamarin.Essentials 的全面概述。
——这里是个 youtube 视频,反正国内看不了,就假装有吧
(翻译)Xamarin.Essentials: 移动应用的跨平台 API的更多相关文章
- (翻译)Xamarin.Essentials 最新预览版的更多跨平台 API
原文地址:https://blog.xamarin.com/cross-platform-apis-xamarin-essentials-latest-preview/ 在 Microsoft Bui ...
- Xamarin+Prism小试牛刀:定制跨平台Outlook邮箱应用
通过本文你将学会如下内容: 1,如何使用Xamarin开发跨平台(Windows,Android,iOS)应用. 2,如何使用微软的登录界面登入Microsoft账号. 3,如何使用Outlook邮箱 ...
- Xamarin+Prism小试牛刀:定制跨平台Outlook邮箱应用(后续)
在[Xamarin+Prism小试牛刀:定制跨平台Outlook邮箱应用]里面提到了Microsoft 身份认证,其实这也是一大块需要注意的地方,特作为后续补充这些知识点.上章是使用了Microsof ...
- Xamarin Essentials教程获取路径文件系统FileSystem
Xamarin Essentials教程获取路径文件系统FileSystem 文件系统用于管理设备内的各类文件.通过文件系统,应用程序可以创建永久文件和临时文件,也可以获取预先打包的文件,如预设数据库 ...
- Xamarin.Android 入门之:Android API版本设置
一.引言 Xamarin.Android有几个Android API级别设置,确定多个版本的Android应用程序的兼容性.本博客解释了这些设置意味着什么,如何配置它们,以及它们在运行时对您的应用程序 ...
- Xamarin Essentials教程打开文件
Xamarin Essentials教程打开文件 FileSystem类的OpenAppPackageFileAsync()方法可以用来打开App包中特定的文件,其语法形式如下: public sta ...
- Xamarin Essentials教程实现数据的传输功能实例
Xamarin Essentials教程实现数据的传输功能实例 [示例1-1]以下将实现数据的传输功能.代码如下: public async Task ShareUri(string text, st ...
- Xamarin Essentials教程构建共享请求
Xamarin Essentials教程构建共享请求 共享请求类ShareTextRequest可以用于构建复杂形式的数据,用于向其他应用传输.例如,它可以指定共享内容的主题Subject,用于给邮件 ...
- Xamarin Essentials教程数据处理传输数据
Xamarin Essentials教程数据处理传输数据 在移动应用程序中,除了常规的数据处理,还涉及数据存储.数据传输.版本数据多个方面.Xamarin.Essentials组件提供了多个数据处理相 ...
随机推荐
- caffe数据集——LMDB
LMDB介紹 Caffe使用LMDB來存放訓練/測試用的數據集,以及使用網絡提取出的feature(為了方便,以下還是統稱數據集).數據集的結構很簡單,就是大量的矩陣/向量數據平鋪開來.數據之間沒有什 ...
- MySQL 5.6 for Windows 解压缩版配置安装(转载)
原文地址:点击这里 MySQL是一个小巧玲珑但功能强大的数据库,目前十分流行.但是官网给出的安装包有两种格式,一个是msi格式,一个是zip格式的.很多人下了zip格式的解压发现没有setup.exe ...
- Maven命令创建java项目
------------------------------java项目搭建--------------------------- 使用Maven构建一个简单的Java项目 1.进入命令行,执行下面的 ...
- eclipse如何远程debug/断开远程debug
eclipse如何远程debug? 当你的代码已经部署到生产或者测试环境的时候,你如何debug判断线上的问题呢? debug之前必须保证本地代码和远程代码完全一致,否则将不能建立连接 在eclips ...
- 【设计模式】 模式PK:门面模式VS中介者模式
1.概述 门面模式为复杂的子系统提供一个统一的访问界面,它定义的是一个高层接口,该接口使得子系统更加容易使用,避免外部模块深入到子系统内部而产生与子系统内部细节耦合的问题.中介者模式使用一个中介对象来 ...
- linux sh脚本异常:/bin/sh^M:bad interpreter: No such file or directory
在Linux中执行.sh脚本,异常/bin/sh^M: bad interpreter: No such file or directory.这是不同系统编码格式引起的:在windows系统中编辑的. ...
- sqlserver xml转表 及(cross apply与outer apply)
一. 需求是需要把','分割的字符串转为表,便于做关联查询,于是发现可以通过xml转为表,如下: declare @XXX xml set @XXX = ' <v> <aa>1 ...
- 【TYVJ】P1038 忠诚
[算法]线段树 #include<cstdio> #include<algorithm> using namespace std; ]; ,inf=0x3f3f3f3f; in ...
- Docker explainations
What does docker run --link mean, what's the usage? link 是在两个contain之间建立一种父子关系,父container中的web,可以得到子 ...
- IT培训班123
最近20年,IT行业一直处于上升期,程序员的工资越来越高了,年薪几十万的程序员大有人在.根据国家统计局发布的2016年各行业平均工资报表,程序员已经是工资最高的一个群体,超过了金融行业. IT行业的火 ...