【问题标题】:Count pressed button quantity计算按下按钮的数量
【发布时间】:2012-06-07 14:16:44
【问题描述】:

其实这个问题extendsthis one.

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

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();

【问题讨论】:

  • 您确定耳机多次单击会生成“ACTION_MULTIPLE”键事件吗?
  • 不,我完全不确定。我希望它生成:) 我想控制按钮。现在,按钮单击执行播放器的播放/停止功能,如果我双击它,我希望它转到下一首曲目,或者如果我三次按下则转到上一首曲目。想知道,我该怎么做。
  • 您可以通过使用一个简单的计数器并在KeyEvent.ACTION_UP 中递增它来实现这一点。
  • 我相信,您应该登录到控制台以确定会发生什么,并在 ACTION_MULTIPLE 不起作用时运行基于时间的计数器以实现您的目标——例如,获取第一次点击的时间,向上如果在给定的时间范围内(1 秒、2 秒或类似时间)仍然第一次点击,则计数器
  • 所以,在那种情况下,我必须切换计时器并控制下一次点击,如果有,请创建另一个计时器,等等......但这变得太复杂了。我希望有另一种方法。如果没有得到答案,我没办法,就这样吧。

标签: android events button onclick keyevent


【解决方案1】:

“连续发生多个重复的按键事件”是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。

【讨论】:

  • 好电话,这是一个 ACTION_MULTIPLE 定义问题:D
  • 根据你的问题编辑了我的答案,看看吧。
猜你喜欢
  • 2014-10-04
  • 1970-01-01
  • 1970-01-01
  • 2019-02-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多