【问题标题】:android- How to prevent enter key/click coming from barcode scannerandroid-如何防止来自条形码扫描仪的输入键/点击
【发布时间】:2017-10-29 17:52:36
【问题描述】:

您好,我有一个应用程序,我通过条形码扫描仪获得了条目。我使用 Zebra TC56 作为测试设备。

我需要向用户显示一条警告消息,这就是我有一个自定义对话框的原因。 当用户遇到错误时,将显示对话框。我的对话框的图片可以在这里看到:

下面红色部分是一个按钮,当点击按钮时,对话框将关闭,用户将转到最新的屏幕。

一切正常,但有一些我不想要的东西。当用户扫描条形码(输入数据)按钮被触发并关闭对话框。

我希望仅通过单击屏幕上的按钮 (TAMAM) 来关闭对话框。但是当我扫描任何东西时,对话框就会关闭。

这是对话框类的代码:

public class ViewDialog {
public void showDialog(Activity activity, String msg){
    final Dialog dialog = new Dialog(activity);
    dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
    dialog.setCancelable(false);
    dialog.setContentView(R.layout.customdialog);

    TextView text = (TextView) dialog.findViewById(R.id.text_dialog);
    text.setText(msg);

    Button dialogButton = (Button) dialog.findViewById(R.id.btn_dialog);
    dialogButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            dialog.dismiss();
        }
    });

    dialog.show();

}

}

我试图将注意力集中到按钮(TAMAM)之外的某个地方,但它没有帮助。如果有人知道如何从条形码扫描仪中取消输入键,我真的需要一些帮助,我们将不胜感激。 (我已经设置设备发送回车键,因为我需要在其他屏幕)

【问题讨论】:

    标签: android keypress barcode-scanner enter handheld


    【解决方案1】:

    我能想到的方法很少。

    首先,我假设您使用 DataWedge 自动将回车键附加到扫描的数据,您可以使用 SWITCH_PROFILE API 动态切换到不发送回车键但在其他所有方面都相同的配置文件:http://techdocs.zebra.com/datawedge/6-3/guide/api/switchtoprofile/ .这是假设您仍然需要能够在对话框可见时进行扫描,如果您希望完全禁用扫描,您可以使用 SCANNER_INPUT_PLUGIN API:http://techdocs.zebra.com/datawedge/6-3/guide/api/scannerinputplugin/

    其次,您可以使用 EMDK 配置文件 API 更改 KeyStroke 输出插件 (http://techdocs.zebra.com/emdk-for-android/6-3/mx/data-capture/keystroke/#keystrokeoutput) 的参数,然后应用新修改的配置文件。我自己从未尝试过,但它应该可以工作 - 查看以下示例以了解其背后的原则:http://techdocs.zebra.com/emdk-for-android/6-3/samples/data-capture/

    第三,您可以为扫描器使用 Java SDK,它可以让您更好地控制扫描器的行为 (http://techdocs.zebra.com/emdk-for-android/6-3/api/)

    【讨论】:

    • 感谢您的回复先生,但您误解了我的问题。我设置了要发送的回车键,因为我需要在其他屏幕上。仅在此警告消息中,我不需要输入键。我认为这只能通过活动中的代码来完成,只要设备发送 Enter 键而不管活动如何。正如你所说,我也会尝试动态切换配置文件。
    • @CemU 我认为 Darryn 的意思是在显示对话框之前(dialog.show() 之前)关闭 ENTER 键关闭,然后重新启用 对话框关闭后(dialog.dismiss() 后)。
    猜你喜欢
    • 2011-08-03
    • 2020-11-07
    • 1970-01-01
    • 2019-01-08
    • 1970-01-01
    • 2017-06-09
    • 1970-01-01
    • 1970-01-01
    • 2011-07-12
    相关资源
    最近更新 更多