在我的 Zebra MC330M 应用程序中,我使用 EMDK:Zebra Technologies Corp:EMDK API:26
我有一个实现侦听器的活动,并且我重写了 onOpened 函数:
@Override
public void onOpened(EMDKManager emdkManager) {
this.emdkManager = emdkManager;
try {
initializeScanner();
} catch (ScannerException e) {
Log.e("ON_OPENED", e.getMessage());
e.printStackTrace();
}
}
正如链接中的文档所述:使用条形码 API 的基本扫描教程 - Zebra Technologies 技术文档
我放入了initializeScanner函数:
if (scanner == null) {
// Get the Barcode Manager object
barcodeManager = (BarcodeManager) emdkManager.getInstance(FEATURE_TYPE.BARCODE);
// Add connection listener
if (barcodeManager != null) {
barcodeManager.addConnectionListener(this);
}
// Get default scanner defined on the device
scanner = barcodeManager.getDevice(BarcodeManager.DeviceIdentifier.DEFAULT);
// Add data and status listeners
scanner.addDataListener(this);
scanner.addStatusListener(this);
// Hard trigger. When this mode is set, the user has to manually
// press the trigger on the device after issuing the read call.
scanner.triggerType = TriggerType.HARD;
// Enable the scanner
scanner.enable();
startRead = true;
}
但是当调用
scanner.enable()
时它会抛出
扫描仪异常
带有消息的异常:
“失败”
但是,当我尝试编译我的应用程序并在设备处于待机模式或设备处于待机状态多次时启动时,似乎仅在调试模式下显示错误。
其他人也有这个问题吗?
我认为您遇到的问题是由于声明“private EMDKManager emdkManager = null;”在两项活动中。要解决此问题,您可以创建一个“常量”类并声明“static public EMDKManager emdkManager;”。然后,在这两个活动中,将“emdkManager”替换为“Constants.emdkManager”,将“this.emdkManager”替换为“Constants.emdkManager”。