我正在Zebra MC3300上创建一个Android APK-此设备已预装DataWedge,在我的应用中,我使用Zebra InputScannerPlugin来禁用/根据活动启用扫描仪。我有Zebra指南禁用/启用方法的代码,看起来像:
static String scannerInputPlugin = "com.symbol.datawedge.api.ACTION";
static String extraData = "com.symbol.datawedge.api.SCANNER_INPUT_PLUGIN";
public static void enableScanner(Activity activity){
try {
if(!scannerEnabled) {
Intent i = new Intent();
i.setAction(scannerInputPlugin);
i.putExtra(extraData, "ENABLE_PLUGIN");
activity.sendBroadcast(i);
}
scannerEnabled = true;
}catch(Exception e){
Log.d("TERMINALPROP", e.toString());
}
}
public static void disableScanner(Activity activity){
try {
if(!scannerEnabled) {
Intent i = new Intent();
i.setAction(scannerInputPlugin);
i.putExtra(extraData, "DISABLE_PLUGIN");
activity.sendBroadcast(i);
}
scannerEnabled = true;
}catch(Exception e){
Log.d("TERMINALPROP", e.toString());
}
}
我正在使用Disablescanner并在Onresumie方法上启用了启用canner,而且它的工作正常,但我在onpreexecute和onpostexecute和onpostexecute方法上使用它们。
有时我会出现问题,即我的扫描仪不会对启用/禁用反应。看起来Dataweded运行时停止工作,我发送了广播,没有任何更改 - 扫描仪会残障,但每次都不会发生。
我能够多次重现问题。看起来这样:
我有活动A和B。在Active A At At At At At onResumie我正在禁用扫描仪,在开始活动B之前我要切换到活动b,在那里我再次称呼Enablescanner。
如果我非常快速切换活动,有时我的扫描仪会残障,并且停止对所有Enablescanner呼叫做出反应。它发生随机发生,有时在3个活动转换后,有时我必须切换20次等。
知道我做错了什么?
@Edit它可能带有dataweded inputScanner插件 - (如果(!scannerabled)从方法中删除(我从方法中删除),并且只是将结果代码添加到我的APK中,当扫描仪"阻止"扫描仪时,它会返回我scanner_aldready_enabled,当我调用EnableScanner时,但是Scanner但是Scanner被禁用:/<<<<
如果您从不希望在活动a中启用扫描仪,然后创建一个新的datawedge配置文件,将其与活动A相关联并禁用条形码输入插件。您将与启用条形码输入插件的活动B相关联。然后,您可以删除所有代码逻辑,围绕启用/禁用扫描仪,因为DataWede将自动处理该活动。
我注意到与datawedge的行为相同,版本之间的差异很小。
- 6.7将完全停止发送广播事件或注意我的TC20上的触发按钮。
- 6.6只会停止一定时间。切换应用程序/活动也可能起作用。
我发现(至少在6.7.47上)以下外观;
每当您想启用扫描仪时,
- 使用与整个应用程序链接的配置文件。(不仅具体活动)
- 通过意图禁用datawegde(并延迟一点)
- 通过意图启用datawede(并延迟一点)
- 通过意图启用扫描仪插件
使用这种方法,我的应用不会最终使用残疾扫描仪。