Android - 是否可以在没有输入字段和打开软键盘的情况下拦截输入事件?

时间:2014-08-28 13:55:40

标签: android event-handling android-softkeyboard keyboard-events motorola-droid

如果应用程序没有显示EditText(文本框),并且没有软键盘,是否有可能以某种方式捕获文本输入事件?

操作系统:Android 4.1.2

P.S。让我解释为什么这是必要的:有一个设备 - 摩托罗拉TC55 - (数据采集终端,Android 4.1.2智能手机上带条形码阅读器(激光)),左侧有一个扫描按钮。

按下后,激光扫描仪打开,读取条形码,读取条形码符号后,以编程方式"按下"。

2 个答案:

答案 0 :(得分:1)

你试过覆盖onKeyDown方法吗?

 @Override 
public boolean onKeyDown(int keyCode, KeyEvent event)  {
    Log.d("MyApp", "key downed : " + keyCode);
    if ( keyCode == KeyEvent.KEYCODE_SCANNER /* HERE AN OBSVIOUSLY FALSE CONSTANT*/ ) {

       // perform your desired action here 

       // return 'true' to prevent further propagation of the key event 
       return true; 
    } 

    // let the system handle all other key events 
    return super.onKeyDown(keyCode, event);
} 

现在您只需要在此列表中跟踪并找到正确的密钥代码: http://developer.android.com/reference/android/view/KeyEvent.html

有关详细信息,请参阅此回复: https://stackoverflow.com/a/19215087/1802663

答案 1 :(得分:1)

另一种解决方案应该是利用这些设备在读取条形码时提供的Intent。

您可以在developer documentation for the TC55中找到更多信息,只需配置设备,以便将包含条形码数据的Intent发送到您的应用程序。

此配置可以导出并在不同设备上重复使用。另一个选择是让您的应用程序使用TC55's Profile API以编程方式设置配置。通过这种方式,您可以根据用例微调条形码解码器。

使用DataCapture意图使用模拟键盘输入更加清晰。