【发布时间】: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