在 Android 中使用多个 KeyEvent

Posted

技术标签:

【中文标题】在 Android 中使用多个 KeyEvent【英文标题】:Use more than one KeyEvent in Android 【发布时间】: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。

提前致谢!

【问题讨论】:

【参考方案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
        ...
     

【讨论】:

以上是关于在 Android 中使用多个 KeyEvent的主要内容,如果未能解决你的问题,请参考以下文章

如果我们必须在android中使用viewpager创建多个页面,那么我们是不是必须创建多个片段?还有其他选择吗?

如何在android中使用php添加多个标记

在 Android 中使用具有多个布局的单个片段

在 Android 中使用多个 KeyEvent

如何在scrollview android中使用多个expandablelistview?

使用Android在xml中使用ShapeDrawable绘制多个形状