【发布时间】:2017-03-22 18:16:14
【问题描述】:
根据android documentation,检测按键释放应该很简单:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
System.out.println("pressed");
event.startTracking();
return true;
}
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
System.out.println("released");
return true;
}
但是在尝试实现它时,它并没有按预期工作。
我需要检测何时按下蓝牙键盘的某个键,并在发生这种情况时只接收一次 onKeyDown 调用,并检测何时释放同一个键。是我做错了什么,还是有其他方法可以得到这个想要的结果?
当按下并按住任意键时,我会在控制台上反复出现:
I/System.out: pressed
I/System.out: released
I/System.out: pressed
I/System.out: released
I/System.out: pressed
I/System.out: released
I/System.out: pressed
I/System.out: released
谢谢。
【问题讨论】:
-
“它没有按预期工作”——您可能希望详细解释您期望什么以及您得到什么结果。例如,“按下时调用很多”究竟是什么?
-
当我按下一个键并按住它时,我会反复出现:I/System.out:已按下,I/System.out:已释放。我希望当我按下它时它会“按下”一次,而当我按下它时会“释放”它,相反,当我按下任何给定的键时,“按下”和“释放”会一直重复调用......
-
尝试从这两种方法返回
false。 -
完成了,但同样的事情发生了......
-
这个键盘有什么不寻常的地方吗?如果这是一个伪装成用于 Android 集成的蓝牙键盘的非键盘设备,您可以尝试使用更传统的蓝牙键盘重复您的测试,以查看问题是否更多出在蓝牙设备与 Android 上。我没玩过
startTracking(),所以不知道有没有影响。