Android 代码名1-扫描条形码检查新行/输入字符

Android 代码名1-扫描条形码检查新行/输入字符,android,codenameone,barcode,Android,Codenameone,Barcode,在Android中,我可以使用setOnEditorActionListener方法轻松地检测输入字符,这样当条形码被扫描到文本字段时,我就知道整个条形码是什么时候被读取的 [这是请求的Android代码:] scanEditText.setOnEditorActionListener(new TextView.OnEditorActionListener() { @Override public boolean onEditorAction(TextVi

在Android中,我可以使用setOnEditorActionListener方法轻松地检测输入字符,这样当条形码被扫描到文本字段时,我就知道整个条形码是什么时候被读取的

[这是请求的Android代码:]

scanEditText.setOnEditorActionListener(new TextView.OnEditorActionListener()
    {
        @Override
        public boolean onEditorAction(TextView v, int actionId, KeyEvent event)
        {
            if ( (actionId == EditorInfo.IME_ACTION_DONE) || ((event.getKeyCode() == KeyEvent.KEYCODE_ENTER) && (event.getAction() == KeyEvent.ACTION_DOWN )))
            {
                System.out.println("   *** ENTER!");
                return true;
            }
            else
                return false;
        }
    });
我一直试图在代号一中复制这个,但没有运气。我试过了

  • 塞顿尼斯腾纳
  • addDataChangedListener
  • 文本字段和文本区域上的ActionEvent
  • 重写按键按下和按键释放方法
但是没有快乐。如果我用setSingleLineTextArea(false)设置一个文本字段,我可以看到条形码字符出现在框中,后面是我假设为 新行字符,下次扫描显示在新行上。列出的方法似乎都无法捕获此事件。如果我将焦点更改为另一个框,则会触发ActionEvent,但我不想每次都移动焦点

[这是Codenameone代码]

gui_searchTextField.setSingleLineTextArea(false);
gui_searchTextField.setDoneListener(new ActionListener()
{
     public void actionPerformed(ActionEvent evt)
     {
        Dialog.show("KB", "doneListener " + 
        gui_searchTextField.getText().trim(), "OK", null);
     }
});
gui_searchTextField.addDataChangedListener((evt1, evt2) ->
{
  System.out.println("DataChanged " + gui_searchTextField.getText());
});

那么,我如何像在Android SDK中那样轻松地捕捉条形码的结尾呢?

文本输入对于我们所有操作系统来说都是一个非常特殊的情况,因此按键直接进入本机操作系统文本编辑,而不是通过Codename One API“移动”。但是,应该为每个键输入调用
DataChangeListener
,因此我不确定这到底是如何发生的

我注意到您使用的是
System.out
而不是
Log.p
,因此您可能会错过与更改相关的设备输出。此外,我建议覆盖按键/释放事件,不要开始文本编辑。然后将键值添加到文本字段,而不是让本机输入处理它,例如:

class MyForm extends Form {
    public void keyReleased(int key) {
        if(isCrLf(key)) {
            // do this...
        } else {
            myTextField.setText(myTextField.getText() + ((char)key));
        }
    }
}

把你的一些代码放在这里谢谢你的及时回复。作为扫描条形码的另一种方式,在使用摄像头功能时是否可以使用不同的扫描仪模块?我已经用我收集的cn1-codescan.cn1lib进行了实验,它使用ZXIng。是否可以使用另一个扫描模块,如Scandit?我们没有scannit的内置支持,但nick在其扩展管理器中提供的QR扫描仪中集成了Android上对zbar的支持,您可以查看其来源。注意,在iOS上我们已经使用了zbar,而在iOS上zxing是有问题的。集成QR扫描仪应该很容易,因为我们的两个库都是在线的,您可以将它们作为自己工作的起点