首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何区分android KeyEvent和外部设备KeyEvent

如何区分android KeyEvent和外部设备KeyEvent
EN

Stack Overflow用户
提问于 2018-04-16 17:19:57
回答 1查看 1.1K关注 0票数 0

我正在读取条形码/卡与外部设备连接到android设备通过USB。

外部设备将其输入作为KeyEvent发送到活动,我可以在dispatchKeyEvent()方法中读取Activity中的输入,如下所示

代码语言:javascript
复制
@Override public boolean dispatchKeyEvent(KeyEvent event) {
    if (event.getAction() == KeyEvent.ACTION_DOWN) {
        externalDeviceService.onNewInputFromExternalDevice(((char) event.getUnicodeChar()));
    }
    return super.dispatchKeyEvent(event);
}

但是,例如,当关注某些EditText时,它会将外部设备输入输入到该输入字段,而不是仅仅委托给服务。

有没有办法区分输入从android设备(软键盘)和外部设备(RFID读卡器或条形码扫描仪)?

显而易见的解决方案是keyEvent.getDevice().getName(),并识别外部设备以适当地处理事件,但这会将我绑定到特定的设备上,这是一个巨大的限制。也许有一种方法可以检查KeyEvent是否来自安卓软键盘?

如对此有任何见解,将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-17 16:59:37

对于任何对未来感兴趣的人,我将KeyEvents从dispatchKeyEvent()发送到一些外部服务,如果下一个字符在前面指定的时间内出现,这意味着它来自扫描仪/射频识别。在其他情况下,我将KeyEvent发送回活动并调用super.dispatchKeyEvent()

@Edit的另一种方式是从UsbManager获取USB连接的设备列表。使用该列表确定KeyEvent父级是否在该列表中以进行区分。请注意,如果您连接硬件键盘,它会将KeyEvents视为来自条形码/RFID卡扫描仪的产品。

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

https://stackoverflow.com/questions/49862952

复制
相关文章

相似问题

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