Android onKeyUp()和onKeyDown()有一些问题

Android onKeyUp()和onKeyDown()有一些问题,android,keyboard-events,Android,Keyboard Events,我正试图通过外部键盘在android应用程序中调用ctrl+c或ctrl+d中的某个事件 @Override public boolean onKeyUp(int keyCode, KeyEvent event) { if( keyCode == KeyEvent.KEYCODE_CTRL_LEFT){ flag_sellreceipt=KeyEvent.isModifierKey(KeyEvent.KEYCODE_CTRL_LEFT);

我正试图通过外部键盘在android应用程序中调用ctrl+c或ctrl+d中的某个事件

         @Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
 if( keyCode == KeyEvent.KEYCODE_CTRL_LEFT){
          flag_sellreceipt=KeyEvent.isModifierKey(KeyEvent.KEYCODE_CTRL_LEFT);
        }
    if (keyCode == KeyEvent.KEYCODE_D && flag_sellreceipt) {
        HotkeyForDone();
        flag_sellreceipt = false;
    } 
    if (keyCode == KeyEvent.KEYCODE_C && flag_sellreceipt) {
        try {
            cancelCart();
            flag_sellreceipt = false;
        } catch (Exception e) {
            handleException(Present.this, e,"In some screen" + e.toString(),null);
            e.printStackTrace();
            flag_sellreceipt = false;
        }
    }  
   }

正如我所希望的那样,这很好,但是发生了一些不可取的事情。Ctrl+d或Ctrl+c一起工作正常,但发生的情况是假设用户只按Ctrl,一段时间后用户按d或c,然后Ctrl+d或Ctrl+c正在调用,这确实是不希望发生的事件。只有当ctrl和alphabet同时按下时,才会发生这种情况。有谁能帮我解决这个问题,或者请给我一些建议,让我摆脱这个问题。提前感谢大家

为什么要这样编程?在你的电脑上试试键盘-如果你按住控制键2分钟,然后按c,它仍然是ctrl+c,因为你仍然按住控制键

如果你真的因为某种奇怪的原因想这样做,请保留按下控制键的时间。在onKeyUp中,如果控制键在X毫秒前按下,其中X是某个合理值,如200左右,则清除用于将控制标记为关闭的fllag。

问题已解决

      @Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
     if( keyCode == KeyEvent.KEYCODE_CTRL_LEFT){
         flag_sellreceipt = false;
     }
     }


@加布…谢谢你的快速回复。是否有可能捕获提前几毫秒发生的事件?不可以。当第一个事件发生时,必须在变量中保存时间戳。
        @Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    // TODO Auto-generated method stub

     if( keyCode == KeyEvent.KEYCODE_CTRL_LEFT){
          flag_sellreceipt=KeyEvent.isModifierKey(KeyEvent.KEYCODE_CTRL_LEFT);
         int i = KeyEvent.META_CTRL_LEFT_ON;
         System.out.println("ctrl is pressed");
        }
    return super.onKeyDown(keyCode, event);     
}