【问题标题】:Use more than one KeyEvent in Android在 Android 中使用多个 KeyEvent
【发布时间】:2016-07-20 14:10:21
【问题描述】:

我希望在一段时间内引入两个连续的键(第一个,然后是另一个)并存储每个键码的值。 时间段为 3 秒或更长,并且键仅为数字。

在这段代码中,我只有从 1 到 9 的数字。

 @Override
    public boolean onKeyDown (int keyCode, KeyEvent event){
    event.getScanCode();
    switch (keyCode) {
        case KeyEvent.KEYCODE_BACK:
            break;
        case KeyEvent.KEYCODE_DPAD_UP:
            break;
        case KeyEvent.KEYCODE_DPAD_DOWN:              
            break;
        case KeyEvent.KEYCODE_DPAD_RIGHT:
            break;
        case KeyEvent.KEYCODE_DPAD_LEFT:
            break;
        case KeyEvent.KEYCODE_ENTER:
            super.onKeyDown(KeyEvent.KEYCODE_ENTER, event);
            break;
        default:
            //This is the part
       if (keyCode>7 && keyCode<17){
            indice_layouts[(keyCode - 8)].requestFocus();
        }else{
            Toast.makeText(this,"empty number", Toast.LENGTH_LONG).show();
        }
            break;
    }


        return true;
}

我希望先放 1,然后放 3,最后得到 13。

提前致谢!

【问题讨论】:

    标签: android keycode android-tv


    【解决方案1】:

    您可以使用类变量进行检查。伪代码如下。这有点hacky,但它应该可以工作。

    long timeButton1 = 0;
    int keyCode1 = 0;
    public boolean onKey(...) {
        ... 
        if(keyCode == KEYCODE_1) {
            timeButton1 = new Date().getTime();
            keycode1 = KEYCODE_1;
        }
        if(keyCode == KEYCODE_3 && new Date().getTime() - timeButton1 > 3000 && keycode1 == KEYCODE_1) {
            //Reset
            timeButton1 = 0;
            keycode1 = 0;
            //Do awesome stuff
            ...
        } 
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-26
      • 1970-01-01
      • 2014-11-20
      相关资源
      最近更新 更多