我正在斑马MC3300上创建一个安卓apk -这个设备已经预装了DataWedge,在我的应用程序中,我使用斑马InputScannerPlugin根据活动来禁用/启用扫描仪。
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());
}
}我在onResumie方法中使用disableScanner和enableScanner,它工作得很好,但我在onPreExecute和onPostExecute方法的AsyncTask中也使用它们。
有时我会遇到问题,我的扫描仪没有反应来启用/禁用。看起来datawedge运行时停止工作,我向那里发送广播,但没有任何变化-扫描器保持禁用,但并非每次都会发生这种情况。
看起来是这样的:
我有活动A和B。在活动A的方法onResumie中,我禁用了扫描仪,在启动活动B之前,我使用了AsyncTask (在preExecute上禁用它,在postExecute上启用扫描仪),然后我切换到活动B,在那里onResume方法我再次调用enableScanner。
如果我切换活动非常快,有时我的扫描器会保持禁用状态,并停止对所有enableScanner调用的反应。它是随机发生的,有时是在3次活动切换之后,有时我不得不切换20次等等。
你知道我做错了什么吗?
@编辑它可能是使用Datawedge扫描器插件-(我从方法中删除了if(!scannerEnabled) ),并将结果代码添加到我的apk中,当扫描器被‘阻止’时,当我调用enableScanner但扫描器被禁用时,它会返回SCANNER_ALREADY_ENABLED :/
发布于 2019-03-18 16:38:08
如果您从不希望在活动A中启用扫描仪,则创建一个新的DataWedge配置文件,将其与活动A关联并禁用条形码输入插件。您将有另一个配置文件与启用条形码输入插件的活动B相关联。然后,当任何一个活动获得焦点时,您可以删除围绕启用/禁用扫描器的所有代码逻辑,因为DataWedge将自动处理该问题。
发布于 2020-02-26 22:40:20
我注意到DataWedge也有相同的行为,只是不同版本之间略有不同。
我发现(至少在6.7.47版本中)以下代码看起来可以工作;
每次要启用扫描仪进行扫描时,请执行以下操作:
延迟扫描程序插件
使用这种方法,我的应用程序将不会以禁用扫描仪而告终。
https://stackoverflow.com/questions/55183429
复制相似问题