要开始开发Xamarin应用程序,首先需要安装Visual Studio或Xamarin Studio,并确保包含所有必要的Xamarin组件。对于本例,我们将使用Visual Studio。在这链接你可以一步一步地阅读如何下载和安装Xamarin应用程序的Visual Studio。
在本节中,我们将基本解释这个演示项目是如何开发的。如果你需要更详细的解释和更多关于对象和方法的信息,请查看这个链接
安装完成后,打开Visual Studio,按照以下步骤操作:
1.去File ->新建->项目。
2.创建手机应用(Xamarin.Forms)。
3.选择空白应用程序的模板安卓而且iOS平台和net标准代码共享策略。
该方案包含三个项目:
1.便携式类库(PCL)项目
可移植类库(Portable Class Library, PCL)是一种特殊类型的项目,可以跨Xamarin等不同的CLI平台使用。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.Android平台特定应用程序项目
安卓特定于平台的项目必须引用绑定Xamarin所需的程序集。Android平台SDK,以及Core,共享代码项目。
3.iOS平台专用应用项目
iOS特定于平台的项目必须引用绑定Xamarin所需的程序集。iOS平台SDK,以及Core,共享代码项目。
在我们的便携式项目中主页所有主要列表都在这里,ProductItemPage其中显示了特定列表的所有产品,EditModalPage是一个自定义弹出窗口编辑列表/产品名称,MainListItem而且ProductListItem模型显示列表/产品的列表项,以及ScannerControlcustom视图控件。
ScannerControl是继承自Xamarin.Forms.View控件的类,我们添加了一些额外的自定义属性和事件处理程序。稍后我们将实现自定义渲染器在特定于平台的项目中。
这里我们使用ScannerControl在ProductItemPage添加新项或编辑现有项。
在代码后面,首先我们需要初始化,连接和配置scannerControl以便开始扫描进程
与scannerControl.StartScanning ()我们开始扫描过程
在这个项目中,我们将设置所有的设置,我们需要android平台(最低安卓版本,目标安卓版本,应用程序名称,包名..),要求我们需要的权限,为安卓平台添加资源,为安卓平台创建自定义渲染器等。必威随行版官网
首先我们检查一下相机此应用程序所需的权限。
接下来将在可绘制文件夹中添加必威随行版官网资源(我们在可移植项目中使用)。
现在我们需要引用XamarinDataManLibrary.dll才能使用cmbSDK。
在写这篇文档的时候,在android平台上,Xamarin表单的导航栏图标有一个bug,这就是为什么在这个项目中,我们有一个小的修改Toolbar.axml并且有一个导航页的自定义渲染器(CustomNavigationRenderer).
在这里,我们将为Android平台的ScannerControl (PCL自定义控件)创建自定义渲染器。您不需要编辑这个类。在您的项目中使用相同的方法
[assembly: Xamarin.Forms.ExportRenderer(typeof(ShoppingCart. scannercontrol), typeof(ShoppingCart. droid . scannercontrol))]命名空间购物车。Droid{公共类ScannerControl: ViewRenderer<购物车。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关键字是摄像许可。
接下来将在Assets目录中添加新图标,并创建另一个名为ScannerImages并在目录中添加图标
现在我们需要引用XamarinDataManLibrary.dll才能使用cmbSDK。
ScannerControl类的自定义呈现器扫描控件(PCL自定义控件)iOS平台。
[assembly: Xamarin.Forms.ExportRenderer(typeof(ShoppingCart. scannercontrol), typeof(ShoppingCart. ios . scannercontrol))]命名空间购物车。iOS{公共类ScannerControl: ViewRenderer, 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将随机地将扫描结果中的字符替换为星号字符)。
请与您的康耐视销售代表联系,了解如何获取许可证密钥,包括可用于30天评估SDK的试用许可证。
获得许可密钥后,有两种方法将许可密钥添加到应用程序中。
为Android平台打开清单文件并在应用程序标记中添加此元标记
或者你可以直接从代码注册你的SDK,当你创建相机扫描仪
/ /创建一个私人空白CreateScannerDevice扫描设备 () { //*************************************************************************************** // 创建一个照相扫描器/ / / /注意:SDK需要许可证密钥。参考// SDK的文档获取许可密钥,以及//传递密钥到SDK的方法(在这个例子中,我们依赖于// plist.info和androidmanifest.xml中的一个条目——也SDK密钥可以作为这个(GetPhoneCameraDevice)构造函数的参数传递)。//*************************************************************************************** scannerControl.GetPhoneCameraDevice (ScannerCameraMode。NoAimer ScannerPreviewOption。默认值,false, "SDK_KEY");//连接到设备scannerControl.Connect();}
为iOS平台开放Info.plistfile and add this key
MX_MOBILE_LICENSE 您的license密钥 . key>MX_MOBILE_LICENSE
或者你可以直接从代码注册你的SDK,当你创建相机扫描仪
/ /创建一个私人空白CreateScannerDevice扫描设备 () { //*************************************************************************************** // 创建一个照相扫描器/ / / /注意:SDK需要许可证密钥。参考// SDK的文档获取许可密钥,以及//传递密钥到SDK的方法(在这个例子中,我们依赖于// plist.info和androidmanifest.xml中的一个条目——也SDK密钥可以作为这个(GetPhoneCameraDevice)构造函数的参数传递)。//*************************************************************************************** scannerControl.GetPhoneCameraDevice (ScannerCameraMode。NoAimer ScannerPreviewOption。默认值,false, "SDK_KEY");//连接到设备scannerControl.Connect();}