开始开发Xamarin的应用程序首先需要安装Visual Studio或Xamarin的工作室,并确保包括所有必要Xamarin的组件。对于这个示例,我们将使用Visual Studio。在这链接你可以阅读一步一步如何下载并安装Visual Studio Xamarin的应用程序。
在本节中,我们已经基本解释这个演示项目是如何发展。如果你需要更详细的解释和更多信息请检查的对象和方法链接
一旦你完成安装打开Visual Studio,遵循这些步骤:
1。去文件- >新建- >项目。
2。创建手机应用程序(Xamarin.Forms)。
3所示。选择空白应用程序的模板安卓和iOS平台和net标准代码共享策略。
这个解决方案包含三个项目:
1。便携式类库(PCL)项目
便携类库(PCL)是一种特殊类型的项目,可以使用跨不同的CLI平台如Xamarin的。iOS和Xamarin的。安卓, as well as WPF, Universal Windows Platform, and Xbox. The library can only utilize a subset of the complete .NET framework, limited by the platforms being targeted.
2。安卓平台的应用程序项目
安卓特定于平台的项目必须引用所需的程序集绑定Xamarin的。Android平台SDK以及核心,共享代码项目。
3所示。iOS平台的应用程序项目
iOS特定于平台的项目必须引用所需的程序集绑定Xamarin的。iOS平台SDK以及核心,共享代码项目。
在便携式项目主页所有主要的列表,ProductItemPage为一个特定的列表,显示所有产品EditModalPage是一个自定义弹出编辑列表/产品名称,MainListItem和ProductListItem模型当前列表项的列表/产品,ScannerControl自定义视图控制。
ScannerControl是一个类继承自Xamarin.Forms。视图控制和我们添加一些额外的自定义属性和事件处理程序。以后我们将实现自定义渲染器这个类的特定于平台的项目。
在这里,我们使用的是ScannerControl在ProductItemPage添加新的或编辑现有条目。
在代码后面我们首先需要初始化,连接和配置scannerControl为了开始扫描过程
与scannerControl.StartScanning ()我们开始扫描过程
在这个项目中我们将所有的设置,我们需要为android平台(min android版本、目标android版本、应用名称、包名称. .),我们需要需要权限,添加对android平台的资源,为android平台创建自定义渲染器,等。必威随行版官网
首先,我们将检查相机为这个应用程序所需的权限。
接下来将添加资源(我们使用在必威随行版官网便携式项目)在可拉的文件夹。
现在我们需要参考XamarinDataManLibrary.dll为了使用cmbSDK。
编写本文档的时候,有一个bug Xamarin的形式和android平台上的导航栏图标,这就是为什么在这个项目中我们有一个小修改Toolbar.axml有一个自定义渲染器导航页面(CustomNavigationRenderer)。
在这里,我们将创建自定义渲染器ScannerControl为Android平台(PCL定制控制)。你不需要编辑这个类。在您的项目中使用相同的一个
(组装:Xamarin.Forms.ExportRenderer (typeof (ShoppingCart.ScannerControl), typeof (ShoppingCart.Droid.ScannerControl)))名称空间ShoppingCart。Droid{公共类ScannerControl: ViewRenderer < ShoppingCart。ScannerControl, RelativeLayout>, IOnConnectionCompletedListener, IReaderDeviceListener, IOnSymbologyListener { private RelativeLayout rlMainContainer; private ReaderDevice readerDevice; private bool availabilityListenerStarted = false; private static Bitmap svgBitmap; public ScannerControl(Context context) : base(context) { } protected override void OnElementChanged(ElementChangedEventArgs e) { base.OnElementChanged(e); if (e.OldElement != null || Element == null) { return; } rlMainContainer = new RelativeLayout(Context) { LayoutParameters = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MatchParent, RelativeLayout.LayoutParams.MatchParent) }; ...
在这个项目中,我们将所有的设置,我们需要为ios平台(部署目标、应用名称、包标识符. .),我们需要需要权限,增加资产,创建自定义渲染器的ios平台,等等……
开放Info.plist文件有一些文本编辑器,并添加以下行:
<键> NSCameraUsageDescription < /关键> <字符串>照相机用于扫描字符串< / >
NSCameraUsageDescription关键是相机的许可。
接下来将资产目录中添加新图标,创建一个资产目录命名ScannerImages在那个目录并添加图标
现在我们需要参考XamarinDataManLibrary.dll为了使用cmbSDK。
ScannerControl类是自定义渲染器ScannerControl (PCL定制控制)在iOS平台。
(组装:Xamarin.Forms.ExportRenderer (typeof (ShoppingCart.ScannerControl), typeof (ShoppingCart.iOS.ScannerControl)))名称空间ShoppingCart。iOS{公共类ScannerControl: ViewRenderer < ShoppingCart。ScannerControl, UIView>, ICMBReaderDeviceDelegate { private UIView container; private CMBReaderDevice readerDevice; private CDMCameraMode cameraMode = CDMCameraMode.NoAimer; private UIAlertController connectingAlert; private NSObject didBecomeActiveObserver; protected override void OnElementChanged(ElementChangedEventArgs e) { base.OnElementChanged(e); if (e.OldElement != null || Element == null) { return; } container = new UIView(); if (Control == null) SetNativeControl(container); ...
如果您计划使用cmbSDK移动扫描与智能手机或平板电脑(没有MX移动终端),SDK要求安装许可证密钥。没有许可密钥,SDK还是操作,虽然扫描结果将模糊随机替换字符(SDK将扫描结果与星号字符)。
联系你Cognex销售代表信息如何获得许可密钥包括30天试用许可证可用于评估SDK。
在获得你的许可密钥有两种方法可以向应用程序添加您的许可证密钥。
为Android平台打开你的清单文件并添加这个meta标签在应用程序标签
<元数据android: name = " MX_MOBILE_LICENSE " android: value = " YOUR_MX_MOBILE_LICENSE " / >
或者你可以直接从代码当你注册你的SDK创建相机扫描仪
/ /创建一个扫描仪设备私有空白CreateScannerDevice(){/ / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * / /创建一个照相扫描器/ / / /注意:SDK需要许可证密钥。参考/ / SDK文档获得许可证密钥以及方法/ /传递的关键SDK(在这个例子中,我们依靠一个条目在/ / plist.info和androidmanifest。xml——还sdk键可以/ /作为一个参数传递(GetPhoneCameraDevice)构造函数)。/ / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * scannerControl.GetPhoneCameraDevice (ScannerCameraMode。NoAimer ScannerPreviewOption。违约,假的,“SDK_KEY”);/ /连接到设备scannerControl.Connect ();}
为iOS平台开放Info.plistfile and add this key
<键> MX_MOBILE_LICENSE < /关键> <字符串>你的许可证密钥< /字符串>
或者你可以直接从代码当你注册你的SDK创建相机扫描仪
/ /创建一个扫描仪设备私有空白CreateScannerDevice(){/ / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * / /创建一个照相扫描器/ / / /注意:SDK需要许可证密钥。参考/ / SDK文档获得许可证密钥以及方法/ /传递的关键SDK(在这个例子中,我们依靠一个条目在/ / plist.info和androidmanifest。xml——还sdk键可以/ /作为一个参数传递(GetPhoneCameraDevice)构造函数)。/ / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * scannerControl.GetPhoneCameraDevice (ScannerCameraMode。NoAimer ScannerPreviewOption。违约,假的,“SDK_KEY”);/ /连接到设备scannerControl.Connect ();}
这个演示使用科尔多瓦插件建立与Cognex移动条形码SDK。
Cognex移动条形码SDK (cmbSDK)是一个简单,但功能强大的工具,用于开发手机条码扫描应用程序。
基于Cognex旗舰,DataMan技术和Cognex条形码扫描SDKcmbSDK为开发人员提供了一个强大的工具来创建条形码扫描应用程序在整个范围的移动扫描设备:智能手机和平板电脑的MX系列高性能、工业条码扫描仪。
通过遵循一些简单的指南,开发人员可以编写的应用程序将与任何受支持的MX移动终端或智能手机与很少或没有条件代码。SDK实现这通过抽象设备通过“读者”连接层:一旦应用程序建立连接与期望的读者,一个单一的、统一的API是用于配置和接口设备。
SDK提供了两个基本的读者:一个“MX读者”的条形码扫描设备像MX - 1000和MX - 1502,和一个“相机读者条形码扫描使用内置摄像头的移动设备。
这是一个如何将整合的例子cmbSDK在一个离子移动应用。
离子用于混合、跨平台移动应用开发利用HTML和JavaScript的用户界面,而电容器很容易构建现代web应用程序运行iOS、Android,和网络。
这为开发人员提供了可重用的代码,可以跨平台执行。它对电容器和PhoneGap /科尔多瓦插件启用本地访问每个平台。这个练习的目的是试图展示Cognex移动条形码扫描器SDK可以使用在现实生活中的应用,使用离子构建跨平台的框架。
现在你可以下载我们的样例应用程序
npm安装
npm安装cmbsdk-cordova
离子电容器添加安卓
离子电容器运行android
6.1如果我们想要有现场重新加载运行
离子电容器运行android - l -外部
离子电容器添加ios
离子电容器构建ios
一旦建设完成XCode将被打开。<键> NSCameraUsageDescription < /关键> <字符串>所需扫描字符串< / >
如果您使用的是7.3 cmbSDK MX移动终端,您还需要添加支持外部附属协议或UISupportedExternalAccessoryProtocols来com.cognex.dmcc在你的项目的Info.plist。(你必须创建一个小额信贷机构请求之前,在这种情况下发布你的应用在苹果应用商店。你可以阅读更多细节让你的MX支持移动终端的应用程序到应用程序商店部分。)
<键> UISupportedExternalAccessoryProtocols < /关键> <字符串> com.cognex.dmcc < /字符串>
7.4运行XCode的应用程序或使用CLI命令
离子电容器运行ios
可能首先访问,是cmbscanner。位于ts提供者
/ / cmbscanner / cmbscanner.ts project_folder / src /提供者
这是我们配置的各种cmbSDK设置。
作为一般规则处理cmbSDK时我们想启用象征学或更改默认输出在全球setConnectionStateDidChangeOfReaderCallback。一旦我们收到connectionState =连接,我们可以做我们想要的魔法的象征学启用或其他设置,我们的目标是使用。
cmbScanner。setConnectionStateDidChangeOfReaderCallback ((connectionState:数量)= > {this.events.publishConnectionChange (connectionState)如果(connectionState = = cmbScanner.CONSTANTS.CONNECTION_STATE_CONNECTED){/ /图像结果应设置后我们有一个连接到读者cmbScanner.enableImage (this.settings.enableImage);cmbScanner.enableImageGraphics (this.settings.enableImageGraphics);this.settings.enabledSymbols.forEach ((v) = > {this.allDone.push (cmbScanner。真正的setSymbologyEnabled (v)。然后((symbResult:任何)= >{返回symbResult;}));});Promise.all (this.allDone)。(结果= >{/ /当也说了,该做的也做了这个。结束= true;/ /设置结束标志}); this.connected = true; cmbScanner.setTriggerType(this.settings.triggerType); } else if (connectionState == cmbScanner.CONSTANTS.CONNECTION_STATE_DISCONNECTED) { this.connected = false; } });
如果你有一个有效的许可证密钥,你想使用它之前loadScanner ()。
cmbScanner.registerSDK(“关键”);/ /你可以在这里添加您的许可证密钥
或者,您可以直接添加的关键在manifest文件(android)或在ios的plist文件:
或为IOS平台
连接的应用程序有两种模式。将使用照相手机的相机连接器作为一个扫描仪,和MX连接器,这将使用MX设备作为扫描仪
它也有两种触发模式。你可以扫描代码和获得返回结果,或在连续模式,继续扫描,扫描项目被添加到一个列表。
这个示例还使用电容器存储服务。我们希望我们的设置是持久的,但不想使事情复杂化,这就是为什么电容器存储服务是适合我们的任务。
使用的存储,我们可以有我们的扫描结果保存和重用(或检查)在稍后的日期。