在Android中使用多个KeyEvent

时间:2016-03-31 22:33:59

标签: android keycode android-tv

我希望在一段时间内引入两个连续的密钥(第一个,然后是另一个)并存储每个密钥的值。 时间段为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。

提前致谢!

1 个答案:

答案 0 :(得分:0)

您可以使用类变量进行检查。下面的伪代码。它有点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
        ...
    } 
}
相关问题