Android onKeyDown和onKeyUp事件触发两次

Android onKeyDown和onKeyUp事件触发两次,android,Android,我找了又找,找不到任何能完全解释发生了什么的东西。基本上,onKeydown和onKeyUp事件都会触发两次。在安卓4.1中,我没有任何问题,但这名客户升级到安卓4.2.2后,问题就开始了。我在文档中找不到任何表示更改的内容,但我发现这是Android2.x中的一个问题 public boolean onKeyDown(int keyCode, KeyEvent event) { char pressedKey = (char) event.getUnicodeChar();

我找了又找,找不到任何能完全解释发生了什么的东西。基本上,onKeydown和onKeyUp事件都会触发两次。在安卓4.1中,我没有任何问题,但这名客户升级到安卓4.2.2后,问题就开始了。我在文档中找不到任何表示更改的内容,但我发现这是Android2.x中的一个问题

    public boolean onKeyDown(int keyCode, KeyEvent event) {

    char pressedKey = (char) event.getUnicodeChar();
    String TAG = null;
    if (event != null && (event.getAction() == KeyEvent.ACTION_DOWN))
    {
        Log.d(TAG, "onKeyDown - keyCode = " + keyCode);
        switch (keyCode) {
            case KeyEvent.KEYCODE_BACK:
            {
                if(currentOrderLineDetailCollection.size()>0)
                {
                    DisplayRemoveAlert(this);
                }
            }
            default:
                char stkeyCode = pressedKey;    
                UPCNum += stkeyCode;
        }
    }

    if (UPCNum.length() >= 12) {
        Bundle extras=getIntent().getExtras();
        Intent intent1 = new Intent(OrderDetail_Activity.this, HandheldScanner_Activity.class);
        intent1.putExtra("UPCNum", UPCNum.trim());
        startActivity(intent1);
        UPCNum="";
    }

    return super.onKeyDown(keyCode, event);
}

您检查过事件中的repeat值了吗?没有,我没有,但我刚刚实现了它,它仍在重复字符。我正在使用蓝牙条形码扫描仪,但我不认为这是问题所在,因为我在安卓4.1上没有同样的问题。因此,我在安卓虚拟机上测试了这一理论,我没有看到它发生在那里。有人有什么想法吗?我同意输入设备可能不是问题所在。如果您正在检查重复计数(就像我在这里添加的)并且仍然得到重复值,那么我需要更多信息来帮助您。也许打印出logcat中事件的get方法中的所有值……我不确定您在寻找什么,但这是唯一的事件以及与事件相关的所有代码。基本上,扫描器就像一个键盘,所以每一个条形码都会触发keydown/keydup。我得到的输出是upc编号的前6位数字,每个数字重复,即条形码0123456789012将返回00112233445,因为它符合我的UPCNum.length()检查。如果我删除该检查,我会得到完整的12位条形码,每个字符都是重复的。