xamarin - Zebra TC26 扫描仪在代码中更改配置时不扫描 - Xamarin
问题描述
我有一个来自 Zebra 的 TC26,内置的扫描仪在我的 Xamarin 应用程序中运行良好。现在我想更改我的应用程序启动时的一些设置。我按照本教程进行操作:https ://techdocs.zebra.com/emdk-for-xamarin/7-0/tutorial/barcodeapitutorial/ 但是一旦执行此行:
barcodeManager = (BarcodeManager)emdkManager.GetInstance(EMDKManager.FEATURE_TYPE.Barcode);
扫描仪不再工作。如果我按下扫描仪按钮,没有任何反应。我究竟做错了什么?
我的代码:MainActivity.cs
protected override void OnCreate(Bundle savedInstanceState)
{
TabLayoutResource = Resource.Layout.Tabbar;
ToolbarResource = Resource.Layout.Toolbar;
base.OnCreate(savedInstanceState);
Xamarin.Essentials.Platform.Init(this, savedInstanceState);
global::Xamarin.Forms.Forms.Init(this, savedInstanceState);
EMDKResults results = EMDKManager.GetEMDKManager(Application.Context, this);
LoadApplication(new App(Android.OS.Environment.ExternalStorageDirectory.AbsolutePath));
}
public void OnClosed()
{
// This callback will be issued when the EMDK closes unexpectedly.
if (emdkManager != null)
{
emdkManager.Release();
emdkManager = null;
}
}
protected override void OnResume()
{
base.OnResume();
InitScanner();
}
protected override void OnPause()
{
base.OnPause();
DeinitScanner();
}
public void OnOpened(EMDKManager emdkManagerInstance)
{
this.emdkManager = emdkManagerInstance;
InitScanner();
}
private void InitScanner()
{
if (emdkManager != null)
{
if (barcodeManager == null)
{
try
{
//Get the feature object such as BarcodeManager object for accessing the feature.
barcodeManager = (BarcodeManager)emdkManager.GetInstance(EMDKManager.FEATURE_TYPE.Barcode);
scanner = barcodeManager.GetDevice(BarcodeManager.DeviceIdentifier.Default);
if (scanner != null)
{
try
{
scanner.Enable();
}
catch(Exception ex)
{
Console.WriteLine(ex.Message);
}
//EMDK: Configure the scanner settings
ScannerConfig config = scanner.GetConfig();
config.DecoderParams.Code39.Enabled = true;
config.DecoderParams.Code128.Enabled = true;
config.DecoderParams.I2of5.Enabled = true;
scanner.SetConfig(config);
}
}
catch (ScannerException e)
{
}
catch (Exception ex)
{
}
}
}
}
void DeinitScanner()
{
if (emdkManager != null)
{
if (scanner != null)
{
try
{
scanner.Disable();
}
catch (ScannerException e)
{
}
}
if (barcodeManager != null)
{
emdkManager.Release(EMDKManager.FEATURE_TYPE.Barcode);
}
barcodeManager = null;
scanner = null;
}
}
解决方案
推荐阅读
- python - PermissionError: [Errno 13] Permission denied to access selenium python through webdriver-manager
- amazon-s3 - 如何使用 postdata preSigned Url 调用 Amazon S3 存储桶以使用空手道上传文件
- microsoft-cognitive - 训练微软 LUIS 区分不想要和想要
- php - 为什么我无法在免费网站上使用 php 代码连接到 msaccess 数据库 (.accdb)
- css - 如何在 vscode 中配置 stylelint 扩展?
- java - 如何将间隔类型格式化为 HH:MM 格式?
- android - 根据风味文件夹内容有条件地应用 gradle 插件
- java - Java Desktop.open() 永远不会完成
- java - 调用存储过程时,休眠查询返回空值
- gerrit - 如何限制 gerrit 存储库选项配置?