检测来自软件或硬件键盘的输入

Detect input from software or hardware keyboard

我在 Android 应用程序中工作,该应用程序必须使用 RFID 标签 reader。我将此 reader 用作通过 OTG 线连接到我的 microUSB 的额外设备。 Android 正在将此设备检测为输入键盘。我想知道我是否可以通过编程方式检测用户何时使用此 reader 进行输入。所以基本上我必须区分来自我的软键盘或这个 reader 的输入。我搜索了很多但找不到解决方案任何帮助将不胜感激。非常感谢。

yourEditText.setOnKeyListener(new View.OnKeyListener() {
        @Override
        public boolean onKey(View v, int keyCode, KeyEvent event) {
            return false;
        }
    });

这将检测您的 editText 是否正在使用硬件键盘进行编辑。

如前所述here这仅对硬件键盘有用,因此在您的情况下,如果未调用此接口,则意味着 editText 输入应来自软件键盘。

在 kotlin 中,我使用 KeyEvent 来确定输入是否来自外部 RFID 标签 reader。当我不想允许从 RFID reader 向 edit_text 插入值时,我正在使用这个:

edit_text.setOnKeyListener { _, _, event -> !event.device.isVirtual }

另见 docs 并尝试将其用于您的问题