首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么斑马InputScannerPlugin停止对发送的广播做出反应?

为什么斑马InputScannerPlugin停止对发送的广播做出反应?
EN

Stack Overflow用户
提问于 2019-03-15 21:12:26
回答 2查看 515关注 0票数 1

我正在斑马MC3300上创建一个安卓apk -这个设备已经预装了DataWedge,在我的应用程序中,我使用斑马InputScannerPlugin根据活动来禁用/启用扫描仪。

代码语言:javascript
复制
    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 :/

EN

回答 2

Stack Overflow用户

发布于 2019-03-18 16:38:08

如果您从不希望在活动A中启用扫描仪,则创建一个新的DataWedge配置文件,将其与活动A关联并禁用条形码输入插件。您将有另一个配置文件与启用条形码输入插件的活动B相关联。然后,当任何一个活动获得焦点时,您可以删除围绕启用/禁用扫描器的所有代码逻辑,因为DataWedge将自动处理该问题。

票数 0
EN

Stack Overflow用户

发布于 2020-02-26 22:40:20

我注意到DataWedge也有相同的行为,只是不同版本之间略有不同。

  • 6.7将完全停止发送广播事件或注意到我的TC20上的触发器按钮。
  • 6.6仅会停止一段时间。此外,切换应用程序/活动可能会起作用。

我发现(至少在6.7.47版本中)以下代码看起来可以工作;

每次要启用扫描仪进行扫描时,请执行以下操作:

  1. 使用与您的整个应用程序链接的个人资料。(不仅通过intent来指定数据写入(和delay a little)
  2. Enable DataWedge by intent )(并通过intent

延迟扫描程序插件

使用这种方法,我的应用程序将不会以禁用扫描仪而告终。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55183429

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档