2

其实这个问题extends 这个。

我想从我的耳机计算我按下按钮的数量。

if(action == KeyEvent.ACTION_DOWN) 
    {
        Toast.makeText(context, "Pressed 1 time", Toast.LENGTH_SHORT).show();
    }
    if(action == KeyEvent.ACTION_MULTIPLE)
    {
        k = event.getRepeatCount();
        if(k == 2)
            Toast.makeText(context, "Pressed 2 times", Toast.LENGTH_SHORT).show();
        if(k == 3)
            Toast.makeText(context, "Pressed 3 times", Toast.LENGTH_SHORT).show();
        if(k>=4)
        {
            String a = Integer.toString(k);
            Toast.makeText(context, "Pressed " + a + " times.", Toast.LENGTH_SHORT).show();
        }
    }

但是当我按下按钮时,我得到 Toast “Pressed 1 time”。我总是明白,系统从不进入其他ifs。

我该如何解决这个问题?

谢谢

添加 仍然无法解决这个问题。这就是我所做的:

 if(action == KeyEvent.ACTION_DOWN) 
    {
        k++;
        try 
        {
            wait(1000);
        } catch (InterruptedException e) 
        {
            e.printStackTrace();
        }
    }
        if(k == 1)
            Toast.makeText(context, "Pressed 1 time", Toast.LENGTH_SHORT).show();
        if(k == 2)
            Toast.makeText(context, "Pressed 2 times", Toast.LENGTH_SHORT).show();
        if(k == 3)
            Toast.makeText(context, "Pressed 3 times", Toast.LENGTH_SHORT).show();
        if(k>=4)
        {
            String a = Integer.toString(k);
            Toast.makeText(context, "Pressed " + a + " times.", Toast.LENGTH_SHORT).show();
        }
        k = 0;
    abortBroadcast();
4

1 回答 1

3

“连续发生多个重复按键事件”是ACTION_MULTIPLE的定义,您只需按下一个按钮。

if(action == KeyEvent.ACTION_DOWN) 
{
    k++;
    Toast.makeText(context,  "Pressed " + Integer.toString(k) + " time(s).", Toast.LENGTH_SHORT).show();
}

编辑:

哦,我知道你想双击下一首曲目或三击返回。我建议实现一个线程。在您的 KeyEvent.ACTION_DOWN 中计算按键次数。在您的线程中,假设调用 wait(500) 并检查您的按钮被按下了多少次并采取相应措施并将计数器设置回 0。

于 2012-06-07T14:23:12.573 回答