Xamarin.iOS 条形码扫描

今天写一篇条形码扫描的文章,使用的是ZXing。

实现非常简单,下面一起来看一下步骤。


首先在项目中导入包:



接下来直接可以使用了:

直接在你的ViewController中声明变量:

MobileBarcodeScanner scanner;
初始化变量:
scanner = new MobileBarcodeScanner(this.NavigationController);
下面的代码是在一个按钮点击事件中调用扫码的:
Btn.TouchUpInside += async (sender, e) =>
			{

				// ZXing
				scanner.UseCustomOverlay = false;

				// 底部两个按钮文字
				scanner.FlashButtonText = "识别";
				scanner.CancelButtonText = "取消";

				// 方框上,下方文字提示
				scanner.TopText = "请将条形码对准方框内";
				scanner.BottomText = "确认后按下右下角识别按钮";

				//Start scanning
				var result = await scanner.Scan();

				// 处理结果
				HandleScanResult(result);

			};

下面是对结果简单的处理:

void HandleScanResult(ZXing.Result result)
		{
			string msg = "";

			if (result != null && !string.IsNullOrEmpty(result.Text))
				msg = "扫描结果: " + result.Text;
			else
				msg = "你取消了!";

			this.InvokeOnMainThread(() =>
			{
				var av = new UIAlertView("Barcode Result", msg, null, "OK", null);
				av.Show();
			});
		}

最后贴一张扫描的效果图





差点忘了,添加摄像头的权限:Privacy - Photo Library Usage Description。


上面实现的扫描条形码呢,需要我们手动点击识别按钮来识别,下面将调用的代码稍微改动一下,添加一个三秒延时自动识别:

Btn.TouchUpInside += (sender, e) =>
			{

				// ZXing
				scanner.UseCustomOverlay = false;

				// 底部两个按钮文字
				scanner.FlashButtonText = "识别";
				scanner.CancelButtonText = "取消";

				// 方框上,下方文字提示
				scanner.TopText = "请将条形码对准方框内";
				scanner.BottomText = "确认后按下右下角识别按钮";

				// 延时三秒自动扫秒
				var opt = new MobileBarcodeScanningOptions();
				opt.DelayBetweenContinuousScans = 3000;

				scanner.ScanContinuously(opt, HandleScanResult);
			};

好了,这样子调用即可达到自动识别的效果。

写完了后遇到一个坑,如上面截图,公司给的条形码都是纸质打印的,当时刚写完后一直扫不上,于是开始怀疑ZXing性能的问题了。

后来换了几个条形码都没有问题。

最后在仔细看了看纸质的条形码打印的质量有问题。

大家遇到扫不上的时候先检查一下条形码有没有问题。


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Xamarin.Forms 是一个跨平台的应用程序开发框架,可以用于开发 iOS、Android 和 Windows Phone 应用。在 Xamarin.Forms 中实现蓝牙扫描、配对、通讯,需要使用 Xamarin.Forms 的蓝牙插件,该插件可以让您在 Xamarin.Forms 中访问蓝牙功能。 以下是在 Xamarin.Forms 中实现蓝牙扫描、配对、通讯的步骤: 1. 安装蓝牙插件 使用 Xamarin.Forms 的蓝牙插件可以很容易地访问蓝牙功能。可以使用 NuGet 包管理器来安装蓝牙插件。 在 Visual Studio 中,选择项目,右键单击“管理 NuGet 包”,搜索“Xamarin.Forms.Bluetooth”,并安装。 2. 检查蓝牙权限 在使用蓝牙之前,需要检查应用程序是否具有蓝牙权限。可以使用 Xamarin.Essentials 库来检查权限。 在 Xamarin.Essentials 中,使用 Permissions 模块检查蓝牙权限。以下是代码示例: ``` var status = await Permissions.CheckStatusAsync<Permissions.LocationWhenInUse>(); if (status != PermissionStatus.Granted) { status = await Permissions.RequestAsync<Permissions.LocationWhenInUse>(); if (status != PermissionStatus.Granted) { // Handle permission denied return; } } ``` 3. 扫描蓝牙设备 在 Xamarin.Forms 中,可以使用蓝牙插件的 CrossBluetoothLE.Current.Adapter 属性来扫描蓝牙设备。以下是代码示例: ``` var adapter = CrossBluetoothLE.Current.Adapter; adapter.ScanTimeout = TimeSpan.FromSeconds(10); adapter.DeviceDiscovered += (s, a) => { // Handle discovered devices }; await adapter.StartScanningForDevicesAsync(); ``` 4. 配对蓝牙设备 在 Xamarin.Forms 中,可以使用蓝牙插件的 CrossBluetoothLE.Current.Adapter 设备配对。以下是代码示例: ``` var device = // get the device to pair await device.ConnectAsync(); await device.PairAsync(); ``` 5. 连接蓝牙设备 在 Xamarin.Forms 中,可以使用蓝牙插件的 CrossBluetoothLE.Current.Adapter 设备连接。以下是代码示例: ``` var device = // get the device to connect await device.ConnectAsync(); ``` 6. 通讯 在连接了蓝牙设备后,可以使用蓝牙插件的 CrossDeviceBluetoothLE.Current.Device 属性来进行通讯。以下是代码示例: ``` var device = // get the connected device var service = await device.GetServiceAsync(serviceUuid); var characteristic = await service.GetCharacteristicAsync(characteristicUuid); await characteristic.WriteAsync(data); ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值