用途
该技能用于在 .NET MAUI 项目中集成 MatrixScan Batch(矩阵扫描批量识别,原 BarcodeTracking,在 v7.0 更名为 BarcodeBatch),实现同时对视野内多个条码进行持续跟踪识别,并以覆盖层在相机预览上标注结果。目标项目需满足 <UseMaui>true</UseMaui>。非 MAUI 的 .NET 项目应改用 matrixscan-batch-net-android(net*-android)或 matrixscan-batch-net-ios(net*-ios)。
主要能力与覆盖范围
技能覆盖官方 RST 文档中标为 dotnet.android 与 dotnet.ios 可用的 API,包括:BarcodeBatch(创建、Enabled、ApplySettingsAsync、监听器注册、SessionUpdated 事件、静态 RecommendedCameraSettings、BarcodeBatchLicenseInfo 等)、BarcodeBatchSettings、BarcodeBatchSession、BarcodeBatchEventArgs、IBarcodeBatchListener、BarcodeBatchLicenseInfo、TrackedBarcode、BarcodeBatchBasicOverlay 与 BarcodeBatchBasicOverlayStyle(Frame、Dot)、IBarcodeBatchBasicOverlayListener、BarcodeBatchAdvancedOverlay 等。
使用方式要点
- 版本核实:编辑 .csproj 前先从 NuGet 获取最新稳定版本,跳过 beta/preview/rc 后缀,不凭记忆猜测,四个包版本一致。
- 平台版本:Android SupportedOSPlatformVersion 须≥24。
- 构建链顺序:MauiApp → UseScanditCore(configure => configure.AddDataCaptureView()) → UseScanditBarcode();UseScanditBarcode() 不带内层 configure。
- 初始化:MAUI 构建扩展负责 SDK 初始化,不要在 MainApplication.OnCreate 或 AppDelegate.FinishedLaunching 中手动调用 Initialize()。
- 视图:BarcodeBatch 没有预置 MAUI 视图,使用通用
<scandit:DataCaptureView>并叠加 BasicOverlay;DataCaptureContext绑定属性为必需项。 - 覆盖层创建时机:须在平台 handler 附加后创建,官方示例使用 HandlerChanged 事件。
- 生命周期:OnAppearing 启动相机并启用;OnDisappearing 先 Enabled = false 再停相机。
- 线程与资源:OnSessionUpdated 运行在后台识别线程,UI 操作需经 MainThread 调度;会话对象不可在回调外持有;每次回调(含提前返回路径)应调用 frameData.Dispose(),iOS 多目标下尤为关键。
- 命名风格:工厂方法与符号名为 C# PascalCase(如 BarcodeBatch.Create、Symbology.Ean13Upca、BarcodeBatchBasicOverlayStyle.Frame)。
- 权限:使用 MAUI 的 Permissions.Camera;iOS 仍需在 Info.plist 设置 NSCameraUsageDescription。
- 许可:AdvancedOverlay 与逐条码画刷定制需要 MatrixScan AR 附加许可;统一默认画刷不需要。
适用场景
从零集成、配置设置、处理被跟踪条码、定制覆盖层、在被跟踪条码上锚定自定义 MAUI ContentView、管理相机生命周期,以及诊断黑屏或卡顿预览;也覆盖从 v6 升级到 v7/v8 的迁移、BarcodeTracking 改名,以及从第三方多码扫描库替换为 MatrixScan Batch 的场景。技能按意图路由到 references/integration.md、references/migration.md 或 references/third-party-migration.md。
限制
仅针对 MAUI 项目;不得使用未在参考资料中记录的 API,不确定时须先取文档;不得猜测文档 URL(应先取 API 索引再跟随链接)。BarcodeBatchLicenseInfo 仅 8.4+ 可用,其在 IDataCaptureContextListener.OnModeAdded 调用后才可取;BarcodeBatch 无 BarcodeScanned 事件。官方参考页按底层 TFM(dotnet.android / dotnet.ios)分别发布,平台相关说明见对应页面。