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

时间:2015-04-21 10:12:25

标签: android android-softkeyboard android-hardware-keyboard

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

2 个答案:

答案 0 :(得分:1)

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

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

如上所述here这仅适用于硬件键盘,因此如果未调用此接口,则意味着editText输入应来自软件键盘。

答案 1 :(得分:0)

在kotlin中,我正在使用KeyEvent来确定输入是否来自外部RFID标签阅读器。当我不想允许将值插入RFID阅读器的edit_text时,我将使用以下方法:

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

另请参阅docs并尝试针对您的问题使用它