1

可能重复:
OnTouchListener,ACTION_UP 在 30 秒超时后自动触发

我使用以下代码检查是否单击了某个键:

@Override
    public boolean onKey(View v, int keyCode, KeyEvent event) {

        // Little method to allow the sound to be changed 
        if(keyCode == 24 || keyCode == 25) {
            return false;
        }

        if(event.getAction() == KeyEvent.ACTION_DOWN) {
            //  if(resetKeyPress != true) {
            this.keyCode = keyCode;
            //  resetKeyPress = true;
            if(this.logGameEngineInputLog == true) {
                gameEngineLog.d(classTAG, "Pressed down " + this.keyCode);
            }
            //  }
        }
        else if(event.getAction() == KeyEvent.ACTION_UP){
            //waitUntilReleased = false;
            //this.changeKeyCode(null);
            if(this.logGameEngineInputLog == true) {
                gameEngineLog.d(classTAG, "Released key " + this.keyCode);

            }

            this.keyCode = null;

            //  resetKeyPress = false;

        }

        return true;
    }

当我长时间点击一个按钮时,它一直说按下了一个按钮,但是过了一会儿它说键已被释放,即使我仍然按住键。为什么要这样做?有没有办法防止这种情况?这是由 Android 操作系统故意完成的,如果是,为什么?

4

1 回答 1

0

我们不知道处理这个事件的类型是什么:View、Activity?

在 View 案例中,onKey 仅处理硬件按键事件(根据文档:Android Reference - View.KeyEventListener

此外,如果您查看此线程:如何区分长按键和常规按键?,您可以看到 Activity.onKeyLongPress() 方法的实现,以及您不应该犯的错误。

于 2012-09-16T19:51:42.647 回答